fix(fusion_clock): code-review hardening [19.0.5.0.1]
- _cron_generate: per-rule savepoint isolation (one bad rule can't abort the whole daily batch) - fclk_attach_recurrence: clear an existing recurrence first (no orphaned rule generating forever) - fclk_apply_planner_cell: collapse split rows (search was limit=1 after the UNIQUE drop, orphaning extras) - fclk_release_shift: reject non-posted/open shifts (raw-POST guard) - delete_open_shift: report success=false when nothing was deleted + JS surfaces it - _generate: log before removing an empty recurrence Tests added for collapse, re-attach, draft-release. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -75,6 +75,15 @@ class TestOpenShift(TransactionCase):
|
||||
self.assertTrue(sch.is_open)
|
||||
self.assertFalse(sch.employee_id)
|
||||
|
||||
def test_release_draft_shift_rejected(self):
|
||||
emp = self.env['hr.employee'].create({'name': 'Drafty'})
|
||||
future = date.today() + timedelta(days=30)
|
||||
sch = self.S.create({
|
||||
'employee_id': emp.id, 'schedule_date': future,
|
||||
'start_time': 9.0, 'end_time': 17.0, 'state': 'draft'})
|
||||
with self.assertRaises(ValidationError):
|
||||
self.S.fclk_release_shift(sch, emp)
|
||||
|
||||
def test_bulk_apply_to_many_employees(self):
|
||||
e1 = self.env['hr.employee'].create({'name': 'Bulk A'})
|
||||
e2 = self.env['hr.employee'].create({'name': 'Bulk B'})
|
||||
|
||||
Reference in New Issue
Block a user