diff --git a/addons/stock_account/models/stock_quant.py b/addons/stock_account/models/stock_quant.py index 441a54f5f82..9d356b22329 100644 --- a/addons/stock_account/models/stock_quant.py +++ b/addons/stock_account/models/stock_quant.py @@ -61,6 +61,12 @@ class StockQuant(models.Model): return result + @api.model + def read_group(self, domain, fields, *args, **kwargs): + if 'value' in fields: + fields = ['value:sum' if f == 'value' else f for f in fields] + return super().read_group(domain, fields, *args, **kwargs) + def _apply_inventory(self): for accounting_date, inventory_ids in groupby(self, key=lambda q: q.accounting_date): inventories = self.env['stock.quant'].concat(*inventory_ids) diff --git a/addons/stock_account/tests/test_stockvaluation.py b/addons/stock_account/tests/test_stockvaluation.py index 0d79fc49b5a..7ee38537e98 100644 --- a/addons/stock_account/tests/test_stockvaluation.py +++ b/addons/stock_account/tests/test_stockvaluation.py @@ -3989,5 +3989,9 @@ class TestStockValuation(TransactionCase): self.product1.categ_id.property_cost_method = 'average' self._make_in_move(self.product1, 5, unit_cost=5) self._make_in_move(self.product1, 2, unit_cost=6) + + res = self.env['stock.quant'].read_group([('product_id', '=', self.product1.id)], ['value'], ['product_id']) + self.assertEqual(res[0]['value'], 5 * 5 + 2 * 6) + self.product1.write({'standard_price': 7}) self.assertEqual(self.product1.value_svl, 49)