Skip to content
Snippets Groups Projects
Commit 5575fe2d authored by David (dafr)'s avatar David (dafr)
Browse files

[FIX] purchase_stock: Prevent picking update when product_qty isn't updated


_create_or_update_picking() is a time-consuming method.
On some Purchase, all the purchase.order.line may be written with 'product_qty' in 'values', even though it did not change.

OPW-2978569

closes odoo/odoo#117296

X-original-commit: 0a5aa603
Signed-off-by: default avatarWilliam Henrotin (whe) <whe@odoo.com>
Signed-off-by: default avatarDavid <dafr@odoo.com>
parent 69b086eb
Branches
Tags
No related merge requests found
......@@ -350,7 +350,8 @@ class PurchaseOrderLine(models.Model):
lambda m: m.state not in ['cancel', 'done']
).product_packaging_id = values['product_packaging_id']
previous_product_qty = {line.id: line.product_uom_qty for line in lines}
previous_product_uom_qty = {line.id: line.product_uom_qty for line in lines}
previous_product_qty = {line.id: line.product_qty for line in lines}
result = super(PurchaseOrderLine, self).write(values)
if 'price_unit' in values:
for line in lines:
......@@ -358,7 +359,8 @@ class PurchaseOrderLine(models.Model):
moves = line.move_ids.filtered(lambda s: s.state not in ('cancel', 'done') and s.product_id == line.product_id)
moves.write({'price_unit': line._get_stock_move_price_unit()})
if 'product_qty' in values:
lines.with_context(previous_product_qty=previous_product_qty)._create_or_update_picking()
lines = lines.filtered(lambda l: float_compare(previous_product_qty[l.id], l.product_qty, precision_rounding=l.product_uom.rounding) != 0)
lines.with_context(previous_product_qty=previous_product_uom_qty)._create_or_update_picking()
return result
def action_product_forecast_report(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment