diff --git a/addons/mrp/models/mrp_production.py b/addons/mrp/models/mrp_production.py index 70250d72e63..18055c8481d 100644 --- a/addons/mrp/models/mrp_production.py +++ b/addons/mrp/models/mrp_production.py @@ -575,7 +575,6 @@ class MrpProduction(models.Model): 'product_uom': product_uom, 'operation_id': operation_id, 'byproduct_id': byproduct_id, - 'unit_factor': product_uom_qty / self.product_qty, 'name': self.name, 'date': self.date_planned_start, 'date_expected': self.date_planned_finished, @@ -671,7 +670,6 @@ class MrpProduction(models.Model): move[0].with_context(do_not_unreserve=True).write({'product_uom_qty': quantity}) move[0]._recompute_state() move[0]._action_assign() - move[0].unit_factor = remaining_qty and (quantity - move[0].quantity_done) / remaining_qty or 1.0 return move[0], old_qty, quantity else: if move[0].quantity_done > 0: @@ -759,7 +757,6 @@ class MrpProduction(models.Model): for move_raw in production.move_raw_ids: move_raw.write({ 'group_id': production.procurement_group_id.id, - 'unit_factor': move_raw.product_uom_qty / production.product_qty, 'reference': production.name, # set reference when MO name is different than 'New' }) production._generate_finished_moves() diff --git a/addons/mrp/models/stock_move.py b/addons/mrp/models/stock_move.py index d09c3980fe3..499135b2d4a 100644 --- a/addons/mrp/models/stock_move.py +++ b/addons/mrp/models/stock_move.py @@ -87,7 +87,7 @@ class StockMove(models.Model): byproduct_id = fields.Many2one( 'mrp.bom.byproduct', 'By-products', check_company=True, help="By-product line that generated the move in a manufacturing order") - unit_factor = fields.Float('Unit Factor', default=1) + unit_factor = fields.Float('Unit Factor', compute='_compute_unit_factor', store=True) is_done = fields.Boolean( 'Done', compute='_compute_is_done', store=True, @@ -135,6 +135,15 @@ class StockMove(models.Model): for move in self: move.is_done = (move.state in ('done', 'cancel')) + @api.depends('product_uom_qty') + def _compute_unit_factor(self): + for move in self: + mo = move.raw_material_production_id or move.production_id + if mo: + move.unit_factor = (move.product_uom_qty - move.quantity_done) / ((mo.product_qty - mo.qty_produced) or 1) + else: + move.unit_factor = 1.0 + @api.model def default_get(self, fields_list): defaults = super(StockMove, self).default_get(fields_list)