diff --git a/addons/mrp/models/mrp_production.py b/addons/mrp/models/mrp_production.py index 2f3f86dc6d2..2973dc353ee 100644 --- a/addons/mrp/models/mrp_production.py +++ b/addons/mrp/models/mrp_production.py @@ -6,6 +6,7 @@ import datetime import math import re +from ast import literal_eval from collections import defaultdict from dateutil.relativedelta import relativedelta @@ -235,6 +236,8 @@ class MrpProduction(models.Model): json_popover = fields.Char('JSON data for the popover widget', compute='_compute_json_popover') scrap_ids = fields.One2many('stock.scrap', 'production_id', 'Scraps') scrap_count = fields.Integer(compute='_compute_scrap_move_count', string='Scrap Move') + unbuild_ids = fields.One2many('mrp.unbuild', 'mo_id', 'Unbuilds') + unbuild_count = fields.Integer(compute='_compute_unbuild_count', string='Number of Unbuilds') is_locked = fields.Boolean('Is Locked', default=_get_default_is_locked, copy=False) is_planned = fields.Boolean('Its Operations are Planned', compute="_compute_is_planned", store=True) @@ -513,6 +516,11 @@ class MrpProduction(models.Model): for production in self: production.scrap_count = count_data.get(production.id, 0) + @api.depends('unbuild_ids') + def _compute_unbuild_count(self): + for production in self: + production.unbuild_count = len(production.unbuild_ids) + @api.depends('move_finished_ids') def _compute_move_byproduct_ids(self): for order in self: @@ -1818,6 +1826,16 @@ class MrpProduction(models.Model): def action_view_reception_report(self): return self.env["ir.actions.actions"]._for_xml_id("mrp.mrp_reception_action") + def action_view_mrp_production_unbuilds(self): + self.ensure_one() + action = self.env["ir.actions.actions"]._for_xml_id("mrp.mrp_unbuild") + action['domain'] = [('mo_id', '=', self.id)] + context = literal_eval(action['context']) + context.update(self.env.context) + context['default_mo_id'] = self.id + action['context'] = context + return action + @api.model def get_empty_list_help(self, help): self = self.with_context( diff --git a/addons/mrp/models/mrp_routing.py b/addons/mrp/models/mrp_routing.py index 1d8a0700219..c105ff91a66 100644 --- a/addons/mrp/models/mrp_routing.py +++ b/addons/mrp/models/mrp_routing.py @@ -93,7 +93,7 @@ class MrpRoutingWorkcenter(models.Model): if 'bom_id' in self.env.context: bom_id = self.env.context.get('bom_id') for operation in self: - operation.copy({'name': _("%s (copy)", operation.name), 'bom_id': bom_id}) + operation.copy({'bom_id': bom_id}) return { 'view_mode': 'form', 'res_model': 'mrp.bom', diff --git a/addons/mrp/views/mrp_production_views.xml b/addons/mrp/views/mrp_production_views.xml index fb508d73f64..0592513303d 100644 --- a/addons/mrp/views/mrp_production_views.xml +++ b/addons/mrp/views/mrp_production_views.xml @@ -150,6 +150,12 @@ Backorders +