| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Time Off (hr_holidays) • Discuss (mail) • Calendar (calendar) |
| Lines of code | 1169 |
| Technical Name |
statutory_leave_request_rules |
| License | OPL-1 |
| Website | https://pokutsoft.com/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Time Off (hr_holidays) • Discuss (mail) • Calendar (calendar) |
| Lines of code | 1169 |
| Technical Name |
statutory_leave_request_rules |
| License | OPL-1 |
| Website | https://pokutsoft.com/ |
| Versions | 18.0 19.0 |
Leave Request Rules â Notice, Carry-over & Blackout
Enforce statutory advance-notice, carry-over expiry and blackout-period rules on every Time Off request
Leave Request Rules adds a configurable validation layer on top of the Odoo Time Off engine. Whenever an employee creates, edits, confirms or has a leave request approved, the module checks it against three independent policy rules â minimum advance notice, carry-over expiry and blackout periods â and either blocks the request with a clear explanation or lets it through while logging the violation, depending on your enforcement mode. Built entirely on the Community Human Resources and Time Off apps; no Enterprise payroll required. Compatible with Odoo 18 and Odoo 19.
Minimum advance notice
Require employees to announce ordinary leave a minimum number of days before it begins. Notice is measured from the day the request was filed and can be counted in calendar days or working (Mon-Fri) days. An optional escalation requires longer notice for long absences (for example, 30 days' notice for any leave of 10 days or more). Unforeseeable leave types â sickness, emergency, bereavement â are flagged exempt and never need advance notice.
Carry-over expiry
Mark a leave type as drawing on the prior year's carried-over balance and the module enforces a use-it-or-lose-it grace window. A request dated after the carry-over deadline (configurable, e.g. 31 March) is rejected because the carried leave has lapsed; a request that starts in time but ends after the deadline is flagged for its expired tail; and a request larger than the remaining carried balance is caught too.
Blackout periods
Embargo leave during operationally critical windows â year-end close, inventory counts, peak season, statutory reporting periods. A blackout period can be a hard embargo (no leave at all) or a capacity cap (a maximum number of employees on leave at once). Scope each window to the whole company or to chosen departments and leave types, and exempt leave types (such as statutory sick leave) that may always be taken.
Block or warn
Choose how strict you want to be. In block mode a non-compliant request is rejected with a clear, itemised explanation. In warn mode the request is allowed but every violation is recorded on the request's log so the approver still sees it. Every rule can be switched on or off independently, per company.
What the module does
| Rule | What it checks | Configuration |
|---|---|---|
| Advance notice | Days between submission and leave start vs. the required minimum, with optional long-leave escalation and per-type exemptions. | Company default + per leave-type minimum, calendar/working basis. |
| Carry-over expiry | Whether a carry-over leave falls inside the grace window and within the available carried balance. | Deadline month/day; per leave-type "draws on carried-over leave". |
| Blackout period | Overlap with an embargoed window; hard block or concurrent-leaver capacity cap. | Date range, mode, max concurrent, department & leave-type scope. |
| Compliance scan | Audits existing requests in a date range and reports every rule violation without modifying anything. | Date range, approved-only toggle. |
Highlights
- Validation fires on create, edit, confirm and approve â no way around it.
- Country-neutral: every threshold (notice days, deadline, caps) is your configuration; nothing is hard-coded to one jurisdiction.
- Pure-Python rule engine, fully unit-tested, with a thin Odoo model layer.
- Capacity caps count real, already-approved leaves of the relevant department.
- Read-only compliance scan to audit historical requests after a policy change.
- Community-only dependencies (
hr,hr_holidays); no Enterprise modules required.
Screenshots
Blackout Periods
Compliance Scan
Settings
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module