| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Payroll (hr_payroll)
• Employees (hr) • Discuss (mail) • Time Off (hr_holidays) • Calendar (calendar) |
| Community Apps Dependencies | Show |
| Lines of code | 2169 |
| Technical Name |
holiday_process |
| License | OPL-1 |
| Website | https://www.ganemo.co |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Payroll (hr_payroll)
• Employees (hr) • Discuss (mail) • Time Off (hr_holidays) • Calendar (calendar) |
| Community Apps Dependencies | Show |
| Lines of code | 2169 |
| Technical Name |
holiday_process |
| License | OPL-1 |
| Website | https://www.ganemo.co |
Holiday Process
Complete Vacation Management & Assignment Engine
Automate employee vacation workflows in Odoo: track earned, taken, and pending days, generate mass assignments, and process vacation sale & purchase — all proportionally calculated.
What We're Solving
----------------
Vacation Summary at a Glance
HR managers lose time hunting for vacation data across multiple screens. This module adds a dedicated Vacation & Allowances tab directly on the employee form, showing earned, taken, and pending vacation days in real time.
Mass Assignment Generation
Manually creating vacation allocations for each employee is error-prone and slow. Our Holiday Generator Wizard creates assignments for all employees at once, applying proportional calculation rules automatically.
Vacation Sale & Purchase
Labor regulations allow employees to sell or purchase vacation days. This module provides a structured Holiday Petition Wizard to handle these requests, connected to payroll for accurate settlement.
Proportional Calculation
Vacation days must be calculated proportionally based on the employee's actual work period. The resource calendar integration uses the employee's work schedule to compute precise entitlements — no more manual spreadsheets.
Setup & User Manual
Step-by-Step implementation
1. Configuration Guide
Prepare the system for vacation management in 4 simple steps:
- Install the module from Apps > Holiday Process.
- Go to Employees and open any employee record.
- Navigate to the Vacation & Allowances tab.
- Set Start Vacation date on each employee (the date from which Odoo will manage vacation periods).
- Use the Generar button on the employee tab for a single employee, or go to Payroll > Holidays > Holiday Generator for mass generation.
2. Operating Manual (Workflow)
How the system works for HR managers and employees:
Vacation Tab on Employee
The dedicated Vacation & Allowances tab shows a complete summary per employee: the list of all vacation allocations, with computed days, days taken (enjoyed or paid), and pending balance — updated in real time.
Holiday Generator Wizard
Mass-generate leave allocations for all (or selected) employees. The wizard uses each employee's work calendar to calculate proportional vacation days. Can be launched from Payroll > Holidays > Holiday Generator or directly from the Generar button on the employee's Vacation & Allowances tab (pre-loads the current employee). After generation, clicking Cerrar reloads the employee form automatically.
Holiday Petition (Sale/Purchase)
Employees can formally request to sell or purchase vacation days. The wizard creates a structured petition linked to the allocation record, which can then be processed through payroll for settlement.
Holiday Update Wizard
Recalculate and update existing vacation allocations when contract conditions change (e.g., salary updates, period adjustments). Keeps vacation records synchronized with payroll data at all times.
Payroll Integration
Vacation data is directly linked to payroll. When a vacation petition (sale) is processed, the system automatically includes the corresponding payment amounts in the next payslip computation.
3. Fields Reference
All fields created by this module
Employee
Fields — hr.employee
Path: Employees > [Employee] > Vacation & Allowances tab
| Field Name | Technical Name | Type | Purpose |
|---|---|---|---|
| Has Vacations | has_holidays |
Boolean | Indicates whether this employee is entitled to receive vacation allocations. When enabled, the employee will be included in mass vacation generation processes via the Holiday Generator Wizard. |
| Vacation Days per Year | holidays_per_year |
Char | Number of vacation days the employee is entitled to per year based on
their contract or internal policy. Used by the Holiday Generator and
Holiday Update wizards to calculate proportional entitlements, and
referenced by the PRO_VAC salary rule in
basic_rule.
Path: Employees > [Employee] > Vacation & Allowances tab |
| Additional Days | additional_days |
Char | Extra vacation days granted beyond the standard annual entitlement.
Assigned due to seniority, special agreements, or labor law provisions.
Added on top of holidays_per_year by the Holiday Generator
Wizard. |
| Vacation Lines | hr_allocation_ids |
One2many | List of all leave allocation records (hr.leave.allocation) linked to this employee. Each line shows earned, taken, and pending vacation days per period. Displayed in the Vacation & Allowances tab and generated automatically via the Holiday Generator Wizard. |
| Start Vacation | vacation_start_date |
Date | The date from which vacation periods will be managed in Odoo for this
employee. This is NOT the employment start date
(service_start_date) but the date the Holiday Generator
Wizard will use as the starting point for creating allocations. Useful
when migrating from another system and only managing periods from a
specific date forward. Required for the wizard to process the employee.
Migration note: On upgrade to v19.0.1.1.0, existing employees with has_holidays=True have this field
auto-populated from service_start_date.
|
Time Off Type
Fields — hr.leave.type
Path: Time Off > Configuration > Activity Types > [Type] > form
| Field Name | Technical Name | Type | Purpose |
|---|---|---|---|
| Show Allocation in Time Off Request | show_in_time_off_request |
Boolean | When enabled, an Allocation selector appears on the
Time Off request form (hr.leave), allowing the user to link
the absence to a specific vacation allocation. Required for leave types
used in vacation sale/purchase workflows (e.g., Descanso Vacacional).
Default: False. |
Time Off
Request Fields — hr.leave
Path: Time Off > [Request] > form
| Field Name | Technical Name | Type | Purpose |
|---|---|---|---|
| Allocation | hr_leave_id |
Many2one | Links the time off request to a specific
hr.leave.allocation. Visible only when the selected Time
Off Type has show_in_time_off_request = True. Editable in
all states including validate and validate1. The
dropdown shows a descriptive label: Type | From Date | Pending
days (via contextual _compute_display_name()
override, activated by the show_holiday_summary context
key).
|
| Show Allocation in Time Off Request | show_in_time_off_request |
Boolean | Related field mirroring
holiday_status_id.show_in_time_off_request. Used internally
to control the invisible attribute of the
Allocation field in the view. Ensures reactive
visibility when the Time Off Type changes.
|
| From Date | from_date |
Date | Start date of the absence period linked to the vacation sale/purchase petition. Used to define the date range for this specific leave request. |
| To Date | from_to |
Date | End date of the absence period. Together with From Date, defines the full duration of the leave request in vacation sale/purchase workflows. |
Global Ready | Multi-Language Support
This module is fully translated into English and Spanish (en_US, es_ES, es_PE, es_MX), ensuring a professional experience for international organizations.
Why Choose Ganemo?
----------------
Ganemo is the world's leading Odoo App developer and a multi-award-winning Gold Partner. For over 5 years, we have been recognized as the #1 seller of high-quality apps on the Odoo App Store. Trusted as the "Best Partner" in USA, Mexico, Chile, Spain, Colombia, Ecuador, and Peru, we deliver robust, secure, and localization-compliant solutions for global businesses.
Get a Quote & Resolve Commercial Doubts
Join thousands of satisfied clients on Odoo. Contact our sales team directly.
Official WhatsApp
Fastest response time.
LINK
+1 (828) 672-6150
Book a Demo
Let's explore your needs.
LINK
Schedule Meeting
Need More? We Do It All
Professional Odoo Services
ERP Implementation
Transform your business with a full Odoo implementation. We analyze, configure, and train your team to maximize productivity. From Accounting to Inventory, we handle the complexity so you can focus on growth.
Module Dev & Migration
Need a custom feature? Or stuck on an older version? We develop high-performance custom modules and migrate your existing code to Odoo 19 with zero data loss. Expert developers at your service.
QA / User Testing Scenarios
Enterprise Validation Plan
Scenario 1: Vacation Tab Visibility
- Go to Employees and open any employee record.
- Check that the Vacation & Allowances tab is visible.
- Verify the tab shows columns: Allocation, Computed Days, Days Taken, Pending Days.
- Test: An employee with no allocations should show an empty list.
- Test: After generating an allocation via wizard, it should appear immediately in the tab.
Scenario 2: Holiday Generator Wizard
- Go to Payroll > Holidays > Holiday Generator.
- Select the target period (From / To dates).
- Choose the employees or leave empty to include all.
- Test: Run the wizard. Allocations should be created for each employee.
- Test: Computed days must match the proportional calculation based on work calendar.
- Test (Date Fix): Verify that each allocation period ends the day before the next period starts. Example: a period starting 01/01/2025 must end on 31/12/2025, not 01/01/2026.
- Test (vacation_start_date): Employees without Start Vacation set must be skipped by the wizard. Employees with it set must be processed normally.
- Test (Generar button): From an employee form, click Generar. The wizard must open pre-loaded with that employee. After generation, click Cerrar and verify the tab reloads with the new allocations.
Scenario 3: Vacation Sale/Purchase Petition
Open a validated vacation allocation. Click Create Holiday Absence.
- A new hr.leave record should be created referencing the allocation.
- The Pending Days field must decrease accordingly after the absence is validated.
- Attempting to delete an allocation with linked absences should raise a ValidationError.
Scenario 4: Proportional Days Calculation
- Create an employee with an entry date mid-year.
- Run the Holiday Generator for the full year.
- Result: The allocation must reflect only the proportional days corresponding to the employee's actual work period — not the full annual entitlement.
Scenario 5: Payroll Integration
- Process a vacation petition (sale) for an employee.
- Generate the payslip for that employee for the same period.
- Result: The payslip MUST include the vacation settlement amount. No errors should be raised during computation.
Scenario 6: Vacation Sale — Linking Absence to Allocation
Verifies that the Allocation field works correctly on Time Off requests for leave types configured for vacation sale workflows.
- Go to Time Off > Configuration > Activity Types and open the vacation sale leave type.
- Enable Show Allocation in Time Off Request and save.
- Create a new Time Off request and select that leave type.
- Test: The Allocation field must appear. The dropdown must show options in the format: Type | From Date | Pending days.
- Test: Select an allocation and validate the request. The field must remain editable even in Validated state.
- Test: Switch to a leave type with Show Allocation in Time Off Request = False. The Allocation field must disappear immediately.
- Test: The allocation's Pending Days must decrease after the absence is validated.
FAQ & Troubleshooting
Common Resolutions
The "Vacation & Allowances" tab is not visible?
Reason: The tab requires the HR Officer role to be visible.
Fix: Ensure the user has the HR / Officer or HR / Administrator access rights in Settings > Users.
Computed days don't match expected entitlement?
Reason: The calculation depends on the employee's work calendar.
Fix: Verify that the employee has a valid Work Schedule (resource.calendar) assigned. Employees without a calendar will produce zero or incorrect results.
Can't delete a vacation allocation?
Reason: The allocation has linked absence records.
Fix: Delete or cancel all related absences (hr.leave) linked to this allocation first, then delete the allocation.
Is this compatible with Multi-company?
Answer: Yes!
Detail: Vacation allocations are tied to the individual employee record. Each company's employees maintain separate allocation records, ensuring clean data separation in multi-company environments.
The Holiday Generator skips some employees?
Reason: Employees without
Start Vacation (vacation_start_date) configured are
intentionally excluded.
Fix: Open the employee record > Vacation & Allowances tab > set the Start Vacation date. This is the date from which Odoo will begin generating vacation periods — it does not need to match the employment start date.
Commercial & Sales
For inquiries about licenses, demos, or partnerships.
Official WhatsApp
Fastest response time.
LINK
+1 (828) 672-6150
Book a Demo
Let's explore your needs.
LINK
Technical Support
Existing customers regarding module functionality.
Help Desk
Exclusive channel for technical assistance and bug reports.
help@ganemo.com
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