| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Discuss (mail) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 2268 |
| Technical Name |
eh_hr_attendance_roster |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Attendances (hr_attendance)
• Discuss (mail) • Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 2268 |
| Technical Name |
eh_hr_attendance_roster |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
Attendance Roster
Weekly shift templates and a roster generation cron for Odoo 19 Community. Templates carry one row per active day with start, end, and break. The cron materialises shifts up to a configurable horizon. The reports module's late detection upgrades to compare against the planned shift instead of the company default time.
Day in the life
Build the templates once. The roster fills itself for the next four weeks.
A supervisor builds two templates: warehouse 6am to 2pm, office 9am to 5pm. Each carries a row per weekday with start, end, and break. They tag each employee with the right default template. The daily cron runs at midnight, looks at every active employee with a template, and materialises any planned shifts up to the horizon (default 28 days) that do not yet exist. Re running the cron does not duplicate; the unique check on (employee, date, start) keeps the table clean. From Tuesday morning the supervisor can see today's shifts on the calendar, the late detection knows the planned start, and exceptions raise against the right cutoff.
Overview
What this module does, in one read.
eh_hr_attendance_roster ships shift templates, scheduled shifts, and a daily generation cron for Odoo 19 Community.
A template is one record with one line per day of week, each line carrying start hour, end hour, and break minutes. Each employee gets a default template. The cron walks every employee with a template and materialises shifts up to the horizon. The reports module's late detection picks up the planned shift start automatically when the roster module is installed.
Capabilities
Eight things this module gives you, with no padding.
Weekly shift templates
eh.hr.shift.template carries one line per active day of week, each with start hour, end hour, and break minutes. Build the warehouse template once, reuse it across every warehouse hand.
Per employee default template
Each employee carries an eh_default_shift_template_id. The generation cron knows who is rostered to what without a per worker schedule edit.
Daily idempotent generation cron
A daily cron walks every active employee with a template and materialises shifts up to the company's horizon (default 28 days). Re running the cron does not create duplicates for the same (employee, date, start) tuple.
Four shift states
Planned, completed, missed, cancelled. Status badges read at a glance on calendar and list views; group by state for week ahead and week behind reviews.
Calendar and list views
Standard Odoo calendar by employee or by site, plus a list view for bulk edit. Drag the corner to extend a shift; cancel a shift on the form.
Roster aware late detection
When this module is installed, the reports module's late detection compares against the planned shift start instead of the company default time. The improvement is automatic on install.
Timezone aware materialisation
Start and end hours are interpreted in the company's partner timezone (UTC fallback). 9:00 in Sydney generates the right UTC datetime regardless of where the server lives.
Configurable horizon
eh_hr_roster_horizon_days on the company sets how far the cron looks ahead. 28 days suits most rosters; raise it to 56 if your operations need a longer planning runway.
Frequently asked questions
Honest answers to the questions a buyer asks.
Does this require Odoo Enterprise Planning?
No. The module targets Odoo 19 Community and stands on its own. It models shift templates, scheduled shifts, and the generation cron in a self contained data model.
Can I override a single day for one employee?
Yes. Open the materialised shift on the calendar and edit start, end, or break, or change its state to cancelled. The next cron run leaves edited rows untouched and only fills missing dates.
What happens to existing shifts when I change a template?
Already materialised shifts keep their values. Future shifts (those past the most recent generated date) pick up the new template. Re run the cron after a template change for the change to take effect.
Does this support split shifts or rotating rosters?
Weekly templates assume one block per day. For split shifts or rotating fortnight patterns, model the second block manually on the shift records, or extend the template line model in your own follow up module.
Is the late detection automatic once installed?
Yes. With the rostering module installed, the reports module's late detection cron picks up the planned shift start as the cutoff. No code changes, no extra config; it shifts the comparison the moment the module is loaded.
Please log in to comment on this module