From 859c24528ecba0ea5bef20440404de2500edfff7 Mon Sep 17 00:00:00 2001 From: William Henrotin Date: Fri, 16 Dec 2022 14:31:05 +0000 Subject: [PATCH] [FIX] mrp: do not recompute duration expected Since 2515482d5a70, the duration expected of a workorder was always set to the real duration at the validation of the workorder. This commit ensure the duration expected is left unchanged even if the date_planned_finished is updated. closes odoo/odoo#108233 X-original-commit: 46e1ae4d9918de1aaf6b4a7565dba422b03fcb36 Signed-off-by: William Henrotin (whe) --- addons/mrp/models/mrp_workorder.py | 2 +- addons/mrp/tests/test_order.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index e2bc5929622..9a8a9cdb9b1 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -661,7 +661,7 @@ class MrpWorkorder(models.Model): vals['date_start'] = end_date if not workorder.date_planned_start or end_date < workorder.date_planned_start: vals['date_planned_start'] = end_date - workorder.write(vals) + workorder.with_context(bypass_duration_calculation=True).write(vals) return True def end_previous(self, doall=False): diff --git a/addons/mrp/tests/test_order.py b/addons/mrp/tests/test_order.py index afe15113bd9..6284f130b31 100644 --- a/addons/mrp/tests/test_order.py +++ b/addons/mrp/tests/test_order.py @@ -2674,18 +2674,24 @@ class TestMrpOrder(TestMrpCommon): # produce 20 / 10 / 5 on workorders, create backorder + duration_expected = wo_1.duration_expected wo_1.button_start() wo_1.qty_producing = 20 self.assertEqual(mo.state, 'progress') wo_1.button_finish() + self.assertEqual(duration_expected, wo_1.duration_expected) + duration_expected = wo_2.duration_expected wo_2.button_start() wo_2.qty_producing = 10 wo_2.button_finish() + self.assertEqual(duration_expected, wo_2.duration_expected) + duration_expected = wo_3.duration_expected wo_3.button_start() wo_3.qty_producing = 5 wo_3.button_finish() + self.assertEqual(duration_expected, wo_3.duration_expected) self.assertEqual(mo.state, 'to_close') mo.button_mark_done()