From 28f33dc1507ee2428029efdbcb86a86f0aef5136 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Fri, 25 Jan 2019 10:30:59 +0000 Subject: [PATCH] [IMP] stock: performance on _compute_product_availability Improve performance (*3) on _compute_product_availability `mapped` makes use of orm prefetch, which is inefficient in this use case when facing high volume. closes odoo/odoo#30545 --- addons/stock/models/stock_move.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index 43a51a03831..9ffc2d0df88 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -193,8 +193,8 @@ class StockMove(models.Model): if self.state == 'done': self.availability = self.product_qty else: - quants = self.env['stock.quant'].search([('location_id', 'child_of', self.location_id.id), ('product_id', '=', self.product_id.id), ('reservation_id', '=', False)]) - self.availability = min(self.product_qty, sum(quants.mapped('qty'))) + qty_tot = self.env['stock.quant'].read_group([('location_id', 'child_of', self.location_id.id), ('product_id', '=', self.product_id.id), ('reservation_id', '=', False)], ['qty'], [])[0] + self.availability = min(self.product_qty, qty_tot['qty'] or 0) @api.multi def _compute_string_qty_information(self):