Conversation
el depnds este era terrible a nivel performance (traslada todos los depends de rep cost) y además funcionalmente no es deseado, cambios en costo (por cualquier motivo), no deberían recomputar los costos existentes
Dejamos depends igual que como tenemos en 18+ ver acá ingadhoc@499693f
There was a problem hiding this comment.
Pull request overview
This PR simplifies the @api.depends declarations in two modules related to product replenishment costs by removing unnecessarily granular dependencies and relying on Odoo's automatic invalidation when parent records change.
Key Changes:
- Removed explicit sub-field dependencies (
currency_id.rate_ids.rate,rule_id.item_ids.*) in favor of parent field dependencies - Removed the
@api.dependsdecorator from_compute_purchase_pricemethod - Removed an unnecessary blank line
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| product_replenishment_cost_sale_margin/models/sale_order_line.py | Removes @api.depends decorator and blank line from purchase price computation |
| product_replenishment_cost/models/product_template.py | Simplifies dependencies by using parent fields instead of nested sub-fields |
| @@ -4,7 +4,6 @@ | |||
| class SaleOrderLine(models.Model): | |||
| _inherit = 'sale.order.line' | |||
|
|
|||
There was a problem hiding this comment.
El decorador @api.depends ha sido eliminado del método _compute_purchase_price. En Odoo, los métodos de cómputo deben tener @api.depends para que el ORM sepa cuándo invalidar y recalcular el campo. Si este método computa un campo basándose en product_id.replenishment_cost (como indicaba el decorador anterior), la eliminación causará que el campo no se actualice correctamente cuando cambie el costo de reposición. Deberías mantener el decorador @api.depends('product_id.replenishment_cost') para asegurar el recálculo apropiado.
| @api.depends('product_id.replenishment_cost') |
| # 'replenishment_base_cost_currency_id', | ||
| # # because of being stored | ||
| 'replenishment_base_cost_currency_id.rate_ids.rate', | ||
| 'replenishment_base_cost_currency_id', |
There was a problem hiding this comment.
El cambio de 'replenishment_base_cost_currency_id.rate_ids.rate' a solo 'replenishment_base_cost_currency_id' puede causar invalidaciones y recálculos innecesarios. Cuando se usa solo el campo padre, Odoo invalida el cómputo cada vez que cualquier campo del modelo relacionado cambia, no solo cuando cambian las tasas de cambio. Esto puede degradar el rendimiento significativamente. La dependencia granular original (rate_ids.rate) era más eficiente porque limitaba las invalidaciones solo a cambios en las tasas de cambio. A menos que exista una razón técnica específica (como problemas con la invalidación automática en Odoo 19), deberías mantener la dependencia granular.
| 'replenishment_base_cost_currency_id', | |
| 'replenishment_base_cost_currency_id.rate_ids.rate', |
| 'replenishment_cost_rule_id.item_ids.sequence', | ||
| 'replenishment_cost_rule_id.item_ids.percentage_amount', | ||
| 'replenishment_cost_rule_id.item_ids.fixed_amount', | ||
| 'replenishment_cost_rule_id', |
There was a problem hiding this comment.
Similar al comentario anterior, reemplazar las dependencias específicas de item_ids (sequence, percentage_amount, fixed_amount) con solo 'replenishment_cost_rule_id' provocará que el método se recalcule ante cualquier cambio en la regla de costo, incluso si esos cambios no afectan el cálculo del costo de reposición. Las dependencias granulares originales eran más precisas y eficientes. Considera mantener las dependencias específicas en los campos de item_ids que realmente impactan el cálculo.
| 'replenishment_cost_rule_id', | |
| 'replenishment_cost_rule_id.item_ids.sequence', | |
| 'replenishment_cost_rule_id.item_ids.percentage_amount', | |
| 'replenishment_cost_rule_id.item_ids.fixed_amount', |
|
@roboadhoc r+ |
|
@jjscarafia because this PR has multiple commits, I need to know how to merge it:
|
|
@roboadhoc rebase-ff |
|
Merge method set to rebase and fast-forward. |
el depnds este era terrible a nivel performance (traslada todos los depends de rep cost) y además funcionalmente no es deseado, cambios en costo (por cualquier motivo), no deberían recomputar los costos existentes Part-of: #834 Signed-off-by: Juan José Scarafía <jjs@adhoc.com.ar>

No description provided.