[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) <sle@openerp.com>
This commit is contained in:
William Henrotin
2019-09-20 12:39:04 +00:00
parent 5e2ae036cf
commit 1067f3bda2
+3 -2
View File
@@ -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):