[FIX] mrp: fix gantt unavailability
_get_unavailability_intervals didn't return the correct dict (describe in the docstring). Then the override in maintenance module was wrong. task-2082261 closes odoo/odoo#42530 Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
This commit is contained in:
@@ -192,16 +192,17 @@ class MrpWorkcenter(models.Model):
|
||||
return action
|
||||
|
||||
def _get_unavailability_intervals(self, start_datetime, end_datetime):
|
||||
"""Get Unavailability Intervals foreach workcenter in self.
|
||||
"""Get the unavailabilities intervals for the workcenters in `self`.
|
||||
|
||||
Return a dictionnary with key as workcenter id in self and values
|
||||
as a list of unavailability slot as tuple (start, end) of datetime.
|
||||
Return the list of unavailabilities (a tuple of datetimes) indexed
|
||||
by workcenter id.
|
||||
|
||||
:param start_datetime: filter unavailability with only slots after this start_datetime
|
||||
:param end_datetime: filter unavailability with only slots before this end_datetime
|
||||
:rtype: dict of tuple (datetime, datetime)
|
||||
:rtype: dict
|
||||
"""
|
||||
return self.resource_id._get_unavailable_intervals(start_datetime, end_datetime)
|
||||
unavailability_ressources = self.resource_id._get_unavailable_intervals(start_datetime, end_datetime)
|
||||
return {wc.id: unavailability_ressources.get(wc.resource_id.id, []) for wc in self}
|
||||
|
||||
|
||||
class MrpWorkcenterProductivityLossType(models.Model):
|
||||
|
||||
@@ -600,13 +600,13 @@ class MrpWorkorder(models.Model):
|
||||
# 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=None):
|
||||
def add_unavailability(row, workcenter_id=None):
|
||||
if row.get('groupedBy') and row.get('groupedBy')[0] == 'workcenter_id' and row.get('resId'):
|
||||
workcenter = self.env['mrp.workcenter'].browse(row.get('resId'))
|
||||
if workcenter:
|
||||
notable_intervals = filter(lambda interval: interval[1] - interval[0] >= cell_dt, unavailability_mapping[workcenter.resource_id.id])
|
||||
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]
|
||||
return {'workcenter': workcenter}
|
||||
return {'workcenter_id': workcenter_id}
|
||||
|
||||
for row in rows:
|
||||
traverse_inplace(add_unavailability, row)
|
||||
|
||||
Reference in New Issue
Block a user