From 60f2262df7b19730ce343a3f70e640a7555c7eed 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 --- 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 a4577418d53..ea2f8084d5f 100644 --- a/addons/mrp/models/product.py +++ b/addons/mrp/models/product.py @@ -101,9 +101,11 @@ class ProductProduct(models.Model): - 'outgoing_qty' - 'free_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 = [] @@ -128,8 +130,7 @@ class ProductProduct(models.Model): product.incoming_qty = min(ratios_incoming_qty) // 1 product.outgoing_qty = min(ratios_incoming_qty) // 1 product.free_qty = min(ratios_free_qty) // 1 - else: - super(ProductProduct, self)._compute_quantities() + super(ProductProduct, self - kits)._compute_quantities() def action_view_bom(self): action = self.env.ref('mrp.product_open_bom').read()[0]