From 1067f3bda2957ff696f4dd6f8cc454e2b87b56b9 Mon Sep 17 00:00:00 2001 From: William Henrotin Date: Wed, 21 Aug 2019 07:53:25 +0000 Subject: [PATCH] [IMP] mrp: compute quantities speedup The computation of kit quantities was not efficient. A loop on each product of the recordset to consider performed. Each time a product was seen as 'not a kit', a new computation on the complete recordset was done. This leads to a N^2 complexity This commit only compute stock quantities for non kit product in one batch opw-2070768 closes odoo/odoo#37205 Signed-off-by: Simon Lejeune (sle) --- addons/mrp/models/product.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/mrp/models/product.py b/addons/mrp/models/product.py index 60bd693960a..a526617d663 100644 --- a/addons/mrp/models/product.py +++ b/addons/mrp/models/product.py @@ -91,9 +91,11 @@ class ProductProduct(models.Model): - 'incoming_qty' - 'outgoing_qty' """ + kits = self.env['product.product'] for product in self: bom_kit = self.env['mrp.bom']._bom_find(product=product, bom_type='phantom') if bom_kit: + kits |= product boms, bom_sub_lines = bom_kit.explode(product, 1) ratios_virtual_available = [] ratios_qty_available = [] @@ -112,8 +114,7 @@ class ProductProduct(models.Model): product.qty_available = min(ratios_qty_available) // 1 product.incoming_qty = min(ratios_incoming_qty) // 1 product.outgoing_qty = min(ratios_incoming_qty) // 1 - else: - super(ProductProduct, self)._compute_quantities() + super(ProductProduct, self - kits)._compute_quantities() @api.multi def action_view_bom(self):