Statutory unpaid break now deducts automatically from worked hours on every path - portal, kiosk, NFC, auto-clock-out cron, AND manual backend entry. - new fusion.clock.break.rule per-province table (seed Ontario 5h->30, 10h->+30), resolved from the employee's company province with a global default fallback - x_fclk_break_minutes is now a single idempotent stored compute (statutory(worked_hours) + penalties), replacing the 4 duplicated write sites (_apply_break_deduction x3 callsites + auto-clock-out cron + penalty write) - retire break_threshold_hours (superseded by per-rule break1_after_hours); post-migrate drops the param and recomputes historical breaks - 11 tests all green; module install + 19.0.4.1.0 migration verified on modsdev Bump 19.0.4.0.3 -> 19.0.4.1.0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.7 KiB
3.7 KiB
| 1 | id | name | model_id:id | group_id:id | perm_read | perm_write | perm_create | perm_unlink |
|---|---|---|---|---|---|---|---|---|
| 2 | access_fusion_clock_location_user | fusion.clock.location.user | model_fusion_clock_location | group_fusion_clock_user | 1 | 0 | 0 | 0 |
| 3 | access_fusion_clock_location_manager | fusion.clock.location.manager | model_fusion_clock_location | group_fusion_clock_manager | 1 | 1 | 1 | 1 |
| 4 | access_fusion_clock_penalty_user | fusion.clock.penalty.user | model_fusion_clock_penalty | group_fusion_clock_user | 1 | 0 | 0 | 0 |
| 5 | access_fusion_clock_penalty_manager | fusion.clock.penalty.manager | model_fusion_clock_penalty | group_fusion_clock_manager | 1 | 1 | 1 | 1 |
| 6 | access_fusion_clock_report_user | fusion.clock.report.user | model_fusion_clock_report | group_fusion_clock_user | 1 | 0 | 0 | 0 |
| 7 | access_fusion_clock_report_manager | fusion.clock.report.manager | model_fusion_clock_report | group_fusion_clock_manager | 1 | 1 | 1 | 1 |
| 8 | access_fusion_clock_activity_log_user | fusion.clock.activity.log.user | model_fusion_clock_activity_log | group_fusion_clock_user | 1 | 0 | 0 | 0 |
| 9 | access_fusion_clock_activity_log_manager | fusion.clock.activity.log.manager | model_fusion_clock_activity_log | group_fusion_clock_manager | 1 | 1 | 1 | 1 |
| 10 | access_fusion_clock_leave_request_user | fusion.clock.leave.request.user | model_fusion_clock_leave_request | group_fusion_clock_user | 1 | 0 | 0 | 0 |
| 11 | access_fusion_clock_leave_request_manager | fusion.clock.leave.request.manager | model_fusion_clock_leave_request | group_fusion_clock_manager | 1 | 1 | 1 | 1 |
| 12 | access_fusion_clock_shift_user | fusion.clock.shift.user | model_fusion_clock_shift | group_fusion_clock_user | 1 | 0 | 0 | 0 |
| 13 | access_fusion_clock_shift_manager | fusion.clock.shift.manager | model_fusion_clock_shift | group_fusion_clock_manager | 1 | 1 | 1 | 1 |
| 14 | access_fusion_clock_schedule_user | fusion.clock.schedule.user | model_fusion_clock_schedule | group_fusion_clock_user | 1 | 0 | 0 | 0 |
| 15 | access_fusion_clock_schedule_manager | fusion.clock.schedule.manager | model_fusion_clock_schedule | group_fusion_clock_manager | 1 | 1 | 1 | 1 |
| 16 | access_fusion_clock_schedule_audit_manager | fusion.clock.schedule.audit.manager | model_fusion_clock_schedule_audit | group_fusion_clock_manager | 1 | 0 | 0 | 0 |
| 17 | access_fusion_clock_correction_user | fusion.clock.correction.user | model_fusion_clock_correction | group_fusion_clock_user | 1 | 0 | 0 | 0 |
| 18 | access_fusion_clock_correction_manager | fusion.clock.correction.manager | model_fusion_clock_correction | group_fusion_clock_manager | 1 | 1 | 1 | 1 |
| 19 | access_fusion_clock_location_portal | fusion.clock.location.portal | model_fusion_clock_location | base.group_portal | 1 | 0 | 0 | 0 |
| 20 | access_fusion_clock_penalty_portal | fusion.clock.penalty.portal | model_fusion_clock_penalty | base.group_portal | 1 | 0 | 0 | 0 |
| 21 | access_fusion_clock_report_portal | fusion.clock.report.portal | model_fusion_clock_report | base.group_portal | 1 | 0 | 0 | 0 |
| 22 | access_fusion_clock_activity_log_portal | fusion.clock.activity.log.portal | model_fusion_clock_activity_log | base.group_portal | 1 | 0 | 0 | 0 |
| 23 | access_fusion_clock_leave_request_portal | fusion.clock.leave.request.portal | model_fusion_clock_leave_request | base.group_portal | 1 | 0 | 0 | 0 |
| 24 | access_fusion_clock_correction_portal | fusion.clock.correction.portal | model_fusion_clock_correction | base.group_portal | 1 | 0 | 0 | 0 |
| 25 | access_hr_attendance_portal | hr.attendance.portal | hr_attendance.model_hr_attendance | base.group_portal | 1 | 0 | 0 | 0 |
| 26 | access_hr_employee_portal_clock | hr.employee.portal.clock | hr.model_hr_employee | base.group_portal | 1 | 0 | 0 | 0 |
| 27 | access_fusion_clock_shift_portal | fusion.clock.shift.portal | model_fusion_clock_shift | base.group_portal | 1 | 0 | 0 | 0 |
| 28 | access_fusion_clock_schedule_portal | fusion.clock.schedule.portal | model_fusion_clock_schedule | base.group_portal | 1 | 0 | 0 | 0 |
| 29 | access_fusion_clock_nfc_enrollment_wizard_manager | fusion.clock.nfc.enrollment.wizard.manager | model_fusion_clock_nfc_enrollment_wizard | group_fusion_clock_manager | 1 | 1 | 1 | 1 |
| 30 | access_fusion_clock_break_rule_manager | fusion.clock.break.rule.manager | model_fusion_clock_break_rule | group_fusion_clock_manager | 1 | 1 | 1 | 1 |