From 4875fd46eb11449df6ce16aa2d01a48e90eb2b4b Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 20 May 2021 18:27:45 +0200 Subject: [PATCH] [FIX] mrp_subcontracting: Don't perform subcontracting on 0 quantity If there are several lines in the picking, and some of them are not received, you've got an error due to the unconditional processing of all lines. Now we prevent those that are not received in the loop. Closes #640 --- mrp_subcontracting/__manifest__.py | 2 +- mrp_subcontracting/models/stock_picking.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/mrp_subcontracting/__manifest__.py b/mrp_subcontracting/__manifest__.py index 68cdea2c7..8a51e0cf8 100644 --- a/mrp_subcontracting/__manifest__.py +++ b/mrp_subcontracting/__manifest__.py @@ -5,7 +5,7 @@ { 'name': "Subcontract Productions", - 'version': '12.0.1.0.4', + 'version': '12.0.1.0.5', "author": "Odoo S.A., Tecnativa, Odoo Community Association (OCA)", 'website': 'https://github.com/OCA/manufacture', 'category': 'Manufacturing Orders & BOMs', diff --git a/mrp_subcontracting/models/stock_picking.py b/mrp_subcontracting/models/stock_picking.py index 4819d8123..936612074 100644 --- a/mrp_subcontracting/models/stock_picking.py +++ b/mrp_subcontracting/models/stock_picking.py @@ -6,6 +6,7 @@ from datetime import timedelta from odoo import api, fields, models +from odoo.tools import float_is_zero class StockPicking(models.Model): @@ -59,6 +60,11 @@ class StockPicking(models.Model): move_finished_ids = move.move_orig_ids.filtered( lambda m: m.state not in ('done', 'cancel')) for ml in move.move_line_ids: + if float_is_zero( + ml.qty_done, + precision_rounding=ml.product_uom_id.rounding + ): + continue ml.copy({ 'picking_id': False, 'production_id': @@ -72,6 +78,11 @@ class StockPicking(models.Model): }) else: for move_line in move.move_line_ids: + if float_is_zero( + move_line.qty_done, + precision_rounding=move_line.product_uom_id.rounding + ): + continue produce = self.env['mrp.product.produce'].with_context( default_production_id=production.id, active_id=production.id).create({