[FIX] mrp: change dependency of related field
Fields `product_qty_available` and `product_virtual_available` on stock_move are related on quantities fields of move's product_id. On large database, those two fields will slow down every transactions that updates stock move state (confirmation, validation, ...). `state` on stock.move is a dependent field of computed field `qty_available` on product.product which is dependent field of related field `product_virtual_available` on stock move. This relation tree implies that updating the state on one particular stock move will mark its product (qty_available) as 'to be recomputed' and thus **every** stock moves (product_virtual_available) of this product as to be recomputed. On database will 100k+ stock move per product. Fetching all stock move of some products take 90% of a manufacturing order validation time. This is problematic knowing those two quantity fields are only used in the stock move tree form so computed anyway at the view rendering. This commit change the `depends` of those two related field to mark them as to be recomputed only if the product_id change. closes odoo/odoo#106070 Opw: 3047017 X-original-commit: 189e825e567e4c633d721ce9f0fee906535edf06 Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com> Signed-off-by: William Henrotin (whe) <whe@odoo.com>
This commit is contained in:
@@ -136,8 +136,8 @@ class StockMove(models.Model):
|
||||
cost_share = fields.Float(
|
||||
"Cost Share (%)", digits=(5, 2), # decimal = 2 is important for rounding calculations!!
|
||||
help="The percentage of the final production cost for this by-product. The total of all by-products' cost share must be smaller or equal to 100.")
|
||||
product_qty_available = fields.Float('Product On Hand Quantity', related='product_id.qty_available')
|
||||
product_virtual_available = fields.Float('Product Forecasted Quantity', related='product_id.virtual_available')
|
||||
product_qty_available = fields.Float('Product On Hand Quantity', related='product_id.qty_available', depends=['product_id'])
|
||||
product_virtual_available = fields.Float('Product Forecasted Quantity', related='product_id.virtual_available', depends=['product_id'])
|
||||
description_bom_line = fields.Char('Kit', compute='_compute_description_bom_line')
|
||||
manual_consumption = fields.Boolean(
|
||||
'Manual Consumption', compute='_compute_manual_consumption', store=True,
|
||||
|
||||
Reference in New Issue
Block a user