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
+