| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Time Off (hr_holidays)
• Calendar (calendar) • Employees (hr) • Discuss (mail) |
| Lines of code | 1263 |
| Technical Name |
statutory_leave_pack_es |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Time Off (hr_holidays)
• Calendar (calendar) • Employees (hr) • Discuss (mail) |
| Lines of code | 1263 |
| Technical Name |
statutory_leave_pack_es |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
Spain Statutory Leave Rule Pack
Article 38 of the Workers' Statute, computed inside Odoo Time Off â 30 calendar-day entitlement, accrual, proration, carry-over and termination settlement
Spain Statutory Leave is an add-on rule pack for the Odoo
community Time Off engine (hr_holidays). It turns
the Spanish legal annual-leave rules into a calculation you can run,
store and audit per employee and per year â without any Enterprise
payroll module.
Spanish annual leave is set by Article 38 of the Estatuto de los Trabajadores (Royal Legislative Decree 2/2015): paid annual holiday shall in no case be fewer than thirty calendar days (treinta dias naturales), it cannot be replaced by money while the contract lasts, and the worker must know their holiday dates at least two months in advance. This pack encodes those rules and the related Supreme Court and CJEU case law.
What it computes
30 calendar-day entitlement
Full-year entitlement defaults to the Article 38 floor of 30 calendar days. A collective agreement (convenio) may grant more; any value below 30 is automatically raised to the legal minimum, never below.
Accrual (devengo)
Choose daily accrual (entitlement × calendar days worked ÷ days in the year) or monthly accrual (completed months × one twelfth), the two conventions used in Spanish HR practice and by the official settlement calculators.
Mid-year proration
Employees who join or leave during the year, or whose contract is suspended without accrual (excedencia, unpaid leave), get their 30-day entitlement prorated to the calendar days actually worked, as confirmed by the Spanish Supreme Court.
Calendar / working-day view
Leave is legal in calendar days but planned in working days. The pack converts both ways using the conventional ratios quoted in agreements â 30 calendar days = 22 working days on a five-day week, 25 on a six-day week.
Carry-over and expiry
Ordinary unused holiday lapses on 31 December. Holiday that could not be taken because of sickness or maternity carries over for 18 months after the year end, following CJEU C-214/10 (KHS) and C-350/06 (Schultz-Hoff). A convenio carry-over cap is honoured.
Termination settlement (finiquito)
On termination â the only case Article 38 allows holiday to be paid in cash â the wizard values accrued-but-untaken days at the daily wage (annual gross ÷ 365). Over-taken leave is returned as a deduction.
Annual statement
Build a per-year statement, populate one line per employee, and compute the full picture in one click. Booked, validated Time Off is read straight from the Odoo engine and de-duplicated by date range so overlapping bookings are never double-counted.
| Figure | Unit | Basis |
|---|---|---|
| Full entitlement | Calendar days | Art. 38 floor or convenio, prorated |
| Accrued to date | Calendar days | Daily or monthly devengo |
| Taken | Calendar days | Validated Time Off bookings, de-duplicated |
| Balance | Calendar + working days | Entitlement + carried-in − taken |
| Carry-over / lapsed | Calendar days | Year-end split, 18-month rule if protected |
| Settlement amount | Currency | Pending days × daily wage (gross / 365) |
Highlights
- Pure-Python calculation core, fully unit tested â no figure is hard-coded into the ORM.
- Per-company defaults and reusable named leave policies.
- Per-employee agreement entitlement, accrual start date and annual gross.
- Works on Odoo Community: depends only on
hr_holidays, no Enterprise payroll. - Compatible with Odoo 18.0 and 19.0.
Important note
This module computes Spanish statutory annual-leave figures locally inside Odoo for HR planning and payroll preparation. Default rates and rules carry the current statutory values (Article 38 ET, 30 calendar days, the CJEU 18-month carry-over window). Always confirm the applicable collective agreement and the latest legislation before applying the figures to live payroll.
Screenshots
Spanish Leave Settings
Leave Policies
Termination Settlement
Leave Statements
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