diff --git a/addons/mrp_subcontracting/i18n/mrp_subcontracting.pot b/addons/mrp_subcontracting/i18n/mrp_subcontracting.pot
index 47fada171ff..31bea2e6a94 100644
--- a/addons/mrp_subcontracting/i18n/mrp_subcontracting.pot
+++ b/addons/mrp_subcontracting/i18n/mrp_subcontracting.pot
@@ -361,6 +361,12 @@ msgid ""
"subcontracting."
msgstr ""
+#. module: mrp_subcontracting
+#: code:addons/mrp_subcontracting/models/mrp_production.py:0
+#, python-format
+msgid "You must enter a serial number for %s"
+msgstr ""
+
#. module: mrp_subcontracting
#: code:addons/mrp_subcontracting/models/mrp_production.py:0
#, python-format
diff --git a/addons/mrp_subcontracting/models/mrp_production.py b/addons/mrp_subcontracting/models/mrp_production.py
index 599861d34f4..b5bef8c1366 100644
--- a/addons/mrp_subcontracting/models/mrp_production.py
+++ b/addons/mrp_subcontracting/models/mrp_production.py
@@ -41,6 +41,8 @@ class MrpProduction(models.Model):
raise UserError(_("This MO isn't related to a subcontracted move"))
if float_is_zero(self.qty_producing, precision_rounding=self.product_uom_id.rounding):
return {'type': 'ir.actions.act_window_close'}
+ if self.product_tracking != 'none' and not self.lot_producing_id:
+ raise UserError(_('You must enter a serial number for %s') % self.product_id.name)
for sml in self.move_raw_ids.move_line_ids:
if sml.tracking != 'none' and not sml.lot_id:
raise UserError(_('You must enter a serial number for each line of %s') % sml.product_id.name)
@@ -67,6 +69,11 @@ class MrpProduction(models.Model):
return action
return {'type': 'ir.actions.act_window_close'}
+ def action_subcontracting_discard_remaining_components(self):
+ self.ensure_one()
+ self.qty_producing = 0
+ return {'type': 'ir.actions.act_window_close'}
+
def _pre_button_mark_done(self):
if self._get_subcontract_move():
return True
@@ -141,7 +148,7 @@ class MrpProduction(models.Model):
return False
if not all(line.lot_id for line in mo.move_raw_ids.filtered(lambda sm: sm.has_tracking != 'none').move_line_ids):
return False
- if mo.product_id.tracking != 'none' and not mo.lot_producing_id:
+ if mo.product_tracking != 'none' and not mo.lot_producing_id:
return False
return True
diff --git a/addons/mrp_subcontracting/views/mrp_production_views.xml b/addons/mrp_subcontracting/views/mrp_production_views.xml
index 1107d551539..783007ebae0 100644
--- a/addons/mrp_subcontracting/views/mrp_production_views.xml
+++ b/addons/mrp_subcontracting/views/mrp_production_views.xml
@@ -19,7 +19,7 @@
1
- {'invisible': [('product_tracking', 'in', ('none', False))], 'required': [('product_tracking', 'not in', ('none', False))]}
+ {'invisible': [('product_tracking', 'in', ('none', False))]}
1
@@ -46,7 +46,7 @@