| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Discuss (mail) |
| Lines of code | 724 |
| Technical Name |
gb_working_time_directive_48_hour_monitor |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Discuss (mail) |
| Lines of code | 724 |
| Technical Name |
gb_working_time_directive_48_hour_monitor |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
Working Time Monitor
Monitor average 48-hour weeks, opt-outs and rest-break compliance (UK WTR 1998)
Breaches of the UK Working Time Regulations 1998 usually go unseen until they become a tribunal or HSE problem. This module logs weekly working hours per employee, computes each person's average over a configurable rolling reference period (17 weeks by default) and flags anyone over the 48-hour average who lacks a valid signed opt-out. It also checks the 11-hour daily rest, 24-hour weekly rest and 20-minute break rules per week, raises de-duplicated breach records with an acknowledge and resolve workflow, and runs a nightly cron so compliance stays current without anyone remembering to. It suits HR and compliance teams in shift-heavy sectors like logistics, healthcare and manufacturing.
Key Features
Rolling 48-hour average per employee
The hr.employee _compute_wtd_average method averages worked_hours from the gb.wtd.week.log records inside the configurable reference window (17 weeks by default) and exposes wtd_average_hours, wtd_weeks_counted and a wtd_status of ok, warning, breach or waived directly on the employee record.
Weekly working-hours logs
gb.wtd.week.log captures worked_hours, night_hours, break minutes, longest shift and observed daily and weekly rest per employee per week, with a uniqueness constraint on employee and week_start. normalise_week_start snaps any date to that week's Monday.
Rest and break compliance checks
Each week log's _compute_compliance tests the daily rest against min_daily_rest_hours (11), weekly rest against min_weekly_rest_hours (24) and the 20-minute break when the longest shift exceeds break_threshold_hours (6), setting per-rule flags and an overall fully_compliant flag.
48-hour opt-out agreements
gb.wtd.optout records signed opt-outs with date_signed, effective_from, an attached signed document and a notice-period withdrawal. _compute_state derives active, withdrawing or expired, and is_valid_on(date) decides whether a given date is covered so over-48 hours can be lawfully waived.
Automated compliance scan and breaches
run_wtd_scan evaluates the 48-hour average, night-work average and per-week rest and break rules, calling _raise_breach to create gb.wtd.breach records with type, severity and measured-vs-threshold values. It dedupes open breaches for the same type and period so the same issue is not raised twice.
Breach workflow
Each gb.wtd.breach carries a breach_type (avg_48, avg_warning, daily_rest, weekly_rest, break, night), severity and an open / acknowledged / resolved / waived state with action_acknowledge, action_resolve and action_reopen. Over-48 breaches covered by a valid opt-out are auto-created as waived.
Nightly cron and per-company policy
The cron_wtd_scan scheduled action recomputes averages and runs the scan across all employees so alerts stay current without manual runs. gb.wtd.config holds the per-company WTR policy: reference weeks, max average and warning hours, rest hours, break thresholds and the night-work limit.
Use Cases
Screenshots
Compliance Breaches
Wtd Configuration
Optout Agreements
Weekly Hours Logs
Why Choose This Module
Breaches of the UK Working Time Regulations 1998 usually go unseen until they become a problem. This module computes each employee's average weekly working hours over a rolling reference period, flags anyone over the 48-hour average without a valid opt-out, and tracks daily and weekly rest and break compliance — turning a legal-risk blind spot into a managed dashboard.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: LGPL-3
- Languages: 35+
- Author: Baris Genc
- Dependencies: hr
- Support: odoo@gencbaris.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