diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index f22a39c9af1..49907a0bb57 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -448,19 +448,16 @@ class MrpWorkorder(models.Model): workorder.leave_id.resource_id = self.env['mrp.workcenter'].browse(values['workcenter_id']).resource_id if 'date_planned_start' in values or 'date_planned_finished' in values: for workorder in self: - start_date = fields.Datetime.to_datetime(values.get('date_planned_start')) or workorder.date_planned_start - end_date = fields.Datetime.to_datetime(values.get('date_planned_finished')) or workorder.date_planned_finished + start_date = fields.Datetime.to_datetime(values.get('date_planned_start', workorder.date_planned_start)) + end_date = fields.Datetime.to_datetime(values.get('date_planned_finished', workorder.date_planned_finished)) if start_date and end_date and start_date > end_date: raise UserError(_('The planned end date of the work order cannot be prior to the planned start date, please correct this to save the work order.')) if 'duration_expected' not in values and not self.env.context.get('bypass_duration_calculation'): if values.get('date_planned_start') and values.get('date_planned_finished'): computed_finished_time = workorder._calculate_date_planned_finished(start_date) values['date_planned_finished'] = computed_finished_time - elif values.get('date_planned_start'): - computed_duration = workorder._calculate_duration_expected(date_planned_start=start_date) - values['duration_expected'] = computed_duration - elif values.get('date_planned_finished'): - computed_duration = workorder._calculate_duration_expected(date_planned_finished=end_date) + elif start_date and end_date: + computed_duration = workorder._calculate_duration_expected(date_planned_start=start_date, date_planned_finished=end_date) values['duration_expected'] = computed_duration # Update MO dates if the start date of the first WO or the # finished date of the last WO is update.