From 0741e64e5bbe6cfd1474207b7375e5bc9da803c4 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Sat, 7 Jan 2017 23:55:27 -0800 Subject: [PATCH] [IMP] mrp: computed blocking time based on working hours or wc for machine blocks only, as people can do extra hours --- addons/mrp/models/mrp_workcenter.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/mrp/models/mrp_workcenter.py b/addons/mrp/models/mrp_workcenter.py index 5ef8b09ecea..a46dc2b193e 100644 --- a/addons/mrp/models/mrp_workcenter.py +++ b/addons/mrp/models/mrp_workcenter.py @@ -202,8 +202,14 @@ class MrpWorkcenterProductivity(models.Model): def _compute_duration(self): for blocktime in self: if blocktime.date_end: - diff = fields.Datetime.from_string(blocktime.date_end) - fields.Datetime.from_string(blocktime.date_start) - blocktime.duration = round(diff.total_seconds() / 60.0, 2) + d1 = fields.Datetime.from_string(blocktime.date_start) + d2 = fields.Datetime.from_string(blocktime.date_end) + diff = d2 - d1 + if (blocktime.loss_type not in ('productive', 'performance')) and blocktime.workcenter_id.calendar_id: + r = blocktime.workcenter_id.calendar_id.get_working_hours(d1, d2, resource_id=blocktime.workcenter_id.resource_id.id) + blocktime.duration = round(r * 60, 2) + else: + blocktime.duration = round(diff.total_seconds() / 60.0, 2) else: blocktime.duration = 0.0