From 65b06f3effbfd49bd53ec3bee2de52bef8530036 Mon Sep 17 00:00:00 2001 From: JF Aubert Date: Mon, 5 Jun 2023 07:55:19 +0000 Subject: [PATCH] [FIX] mrp: fix planning by workcenter Since https://github.com/odoo/odoo/commit/926c4d4769db1846d94e2ab5a3e9b02308b0b160 planning by workcenter no longer takes into account unavailabilities of less than 1 day in month mode, leading to erroneous accumulations because some calendar unavailabilities (for example from day 5:00 p.m. to day+1 8:00 a.m.) are missing. We return to the previous behavior by transmitting all the unavailabilities. The planning by production no longer displays the unavailability of workcenters. closes odoo/odoo#123898 Task: 3305266 X-original-commit: d7a803cfbed7aa28d0835f9db974802d4b6f77d1 Related: odoo/enterprise#42017 Signed-off-by: Steve Van Essche Signed-off-by: Jean-Francois Aubert (ajf) --- addons/mrp/models/mrp_workorder.py | 6 +----- addons/mrp/views/mrp_workorder_views.xml | 4 +++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/addons/mrp/models/mrp_workorder.py b/addons/mrp/models/mrp_workorder.py index d5de05fe1e0..6ec91f49709 100644 --- a/addons/mrp/models/mrp_workorder.py +++ b/addons/mrp/models/mrp_workorder.py @@ -573,15 +573,11 @@ class MrpWorkorder(models.Model): workcenters = self.env['mrp.workcenter'].browse(workcenter_ids) unavailability_mapping = workcenters._get_unavailability_intervals(start_datetime, end_datetime) - # Only notable interval (more than one case) is send to the front-end (avoid sending useless information) - cell_dt = (scale in ['day', 'week'] and timedelta(hours=1)) or (scale == 'month' and timedelta(days=1)) or timedelta(days=28) - def add_unavailability(row, workcenter_id=None): if row.get('groupedBy') and row.get('groupedBy')[0] == 'workcenter_id' and row.get('resId'): workcenter_id = row.get('resId') if workcenter_id: - notable_intervals = filter(lambda interval: interval[1] - interval[0] >= cell_dt, unavailability_mapping[workcenter_id]) - row['unavailabilities'] = [{'start': interval[0], 'stop': interval[1]} for interval in notable_intervals] + row['unavailabilities'] = [{'start': interval[0], 'stop': interval[1]} for interval in unavailability_mapping[workcenter_id]] return {'workcenter_id': workcenter_id} for row in rows: diff --git a/addons/mrp/views/mrp_workorder_views.xml b/addons/mrp/views/mrp_workorder_views.xml index 6fea3f086ae..d484f3618af 100644 --- a/addons/mrp/views/mrp_workorder_views.xml +++ b/addons/mrp/views/mrp_workorder_views.xml @@ -321,6 +321,7 @@ mrp.production.work.order.gantt.production mrp.workorder + 20 mrp.workorder.view.gantt mrp.workorder + 10