From aa2d0abb1b2a94a4df50e97453f29b33c6a33308 Mon Sep 17 00:00:00 2001 From: JF Aubert Date: Fri, 8 Oct 2021 09:48:17 +0000 Subject: [PATCH] [FIX] mrp_subcontracting: Allow to create backorder for tracked products This commit fixes the 'You need to supply a Lot/Serial Number...' message when validating a receipt with backorder for subcontracted tracked products. closes odoo/odoo#79121 Task: 2604664 X-original-commit: 2ab8f5cc681d45323e540ca57f85168fd587cf02 Signed-off-by: Tiffany Chang --- addons/mrp_subcontracting/i18n/mrp_subcontracting.pot | 6 ++++++ addons/mrp_subcontracting/models/mrp_production.py | 9 ++++++++- addons/mrp_subcontracting/views/mrp_production_views.xml | 4 ++-- 3 files changed, 16 insertions(+), 3 deletions(-) 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 @@