diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py index 0a54ecc6c57..42f946f1d2b 100644 --- a/addons/purchase/models/purchase.py +++ b/addons/purchase/models/purchase.py @@ -370,10 +370,11 @@ class PurchaseOrder(models.Model): if order.state in ('draft', 'sent', 'to approve'): for order_line in order.order_line: if order_line.move_dest_ids: - siblings_states = (order_line.move_dest_ids.mapped('move_orig_ids')).mapped('state') + move_dest_ids = order_line.move_dest_ids.filtered(lambda m: m.state not in ('done', 'cancel')) + siblings_states = (move_dest_ids.mapped('move_orig_ids')).mapped('state') if all(state in ('done', 'cancel') for state in siblings_states): - order_line.move_dest_ids.write({'procure_method': 'make_to_stock'}) - order_line.move_dest_ids._recompute_state() + move_dest_ids.write({'procure_method': 'make_to_stock'}) + move_dest_ids._recompute_state() for pick in order.picking_ids.filtered(lambda r: r.state != 'cancel'): pick.action_cancel()