diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index b6b27047a6e..6bf6319d8d4 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -767,7 +767,8 @@ class MrpWorkorder(models.Model): AND wo2.state IN ('pending','ready') AND wo1.id != wo2.id AND wo1.workcenter_id = wo2.workcenter_id - AND (wo2.date_planned_start, wo2.date_planned_finished) OVERLAPS (wo1.date_planned_start, wo1.date_planned_finished) + AND (DATE_TRUNC('second', wo2.date_planned_start), DATE_TRUNC('second', wo2.date_planned_finished)) + OVERLAPS (DATE_TRUNC('second', wo1.date_planned_start), DATE_TRUNC('second', wo1.date_planned_finished)) """ self.env.cr.execute(sql, [tuple(self.ids)]) res = defaultdict(list) diff --git a/addons/mrp/tests/test_workorder_operation.py b/addons/mrp/tests/test_workorder_operation.py index 1d0dd9ca0cf..3f4359e2f0b 100644 --- a/addons/mrp/tests/test_workorder_operation.py +++ b/addons/mrp/tests/test_workorder_operation.py @@ -1447,13 +1447,17 @@ class TestWorkOrderProcess(TestWorkOrderProcessCommon): self.assertEqual(wo2.state, 'pending') self.assertEqual(wo3.state, 'pending') + self.assertFalse(wo1.id in wo1._get_conflicted_workorder_ids(), "Shouldn't conflict") + self.assertFalse(wo2.id in wo2._get_conflicted_workorder_ids(), "Shouldn't conflict") + self.assertFalse(wo3.id in wo3._get_conflicted_workorder_ids(), "Shouldn't conflict") + # Conflicted with wo1 wo2.write({'date_planned_start': wo1.date_planned_start, 'date_planned_finished': wo1.date_planned_finished}) # Bad order of workorders (wo3-wo1-wo2) + Late wo3.write({'date_planned_start': wo1.date_planned_start - timedelta(weeks=1), 'date_planned_finished': wo1.date_planned_finished - timedelta(weeks=1)}) - self.assertEqual(wo2.id in wo2._get_conflicted_workorder_ids(), True, "Should conflict with wo1") - self.assertEqual(wo1.id in wo1._get_conflicted_workorder_ids(), True, "Should conflict with wo2") + self.assertTrue(wo2.id in wo2._get_conflicted_workorder_ids(), "Should conflict with wo1") + self.assertTrue(wo1.id in wo1._get_conflicted_workorder_ids(), "Should conflict with wo2") self.assertTrue('text-danger' in wo2.json_popover, "Popover should in be in red (due to conflict)") self.assertTrue('text-danger' in wo3.json_popover, "Popover should in be in red (due to bad order of wo)")