diff --git a/mrp_workcenter_hierarchical/models/mrp_workcenter.py b/mrp_workcenter_hierarchical/models/mrp_workcenter.py index 33e4f2a1b..0321a4544 100644 --- a/mrp_workcenter_hierarchical/models/mrp_workcenter.py +++ b/mrp_workcenter_hierarchical/models/mrp_workcenter.py @@ -45,7 +45,7 @@ class MrpWorkcenter(models.Model): ids = [] return ids - @api.depends("parent_id.parent_id.parent_id", "child_ids") + @api.depends("parent_id.parent_id.parent_id.parent_id", "child_ids") def _compute_parent_level(self): def get_next_level(parent_ids, workcenter): return ( @@ -56,6 +56,22 @@ class MrpWorkcenter(models.Model): for workcenter in self: parent_ids = workcenter._get_parent_ids() - workcenter.parent_level_1_id = get_next_level(parent_ids, workcenter) - workcenter.parent_level_2_id = get_next_level(parent_ids, workcenter) - workcenter.parent_level_3_id = get_next_level(parent_ids, workcenter) + exclude_ids = [workcenter.id, workcenter.parent_id.id] + l_id = [False, False, False] + + l_id[0] = get_next_level(parent_ids, workcenter) + workcenter.parent_level_1_id = ( + l_id[0] if l_id[0] not in exclude_ids else False + ) + exclude_ids.append(l_id[0]) + + l_id[1] = get_next_level(parent_ids, workcenter) + workcenter.parent_level_2_id = ( + l_id[1] if l_id[1] not in exclude_ids else False + ) + exclude_ids.append(l_id[1]) + + l_id[2] = get_next_level(parent_ids, workcenter) + workcenter.parent_level_3_id = ( + l_id[2] if l_id[2] not in exclude_ids else False + )