From c30f8c50a3f4492c68f7cc4c2c1ce6cb5bf5350b Mon Sep 17 00:00:00 2001 From: Wolfgang Taferner Date: Sun, 15 Oct 2017 16:06:35 +0200 Subject: [PATCH] [FIX] stock, sale_stock: blocking a process twice due to cancelled moves --- addons/sale_stock/models/sale_order.py | 2 +- addons/stock/models/stock_move.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/sale_stock/models/sale_order.py b/addons/sale_stock/models/sale_order.py index aa55b213294..96f4b388c22 100644 --- a/addons/sale_stock/models/sale_order.py +++ b/addons/sale_stock/models/sale_order.py @@ -225,7 +225,7 @@ class SaleOrderLine(models.Model): if line.state != 'sale' or not line.product_id.type in ('consu','product'): continue qty = 0.0 - for move in line.move_ids: + for move in line.move_ids.filtered(lambda r: r.state != 'cancel'): qty += move.product_qty if float_compare(qty, line.product_uom_qty, precision_digits=precision) >= 0: continue diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py index 7bfa320bb50..47f3a99637a 100644 --- a/addons/stock/models/stock_move.py +++ b/addons/stock/models/stock_move.py @@ -912,6 +912,8 @@ class StockMove(models.Model): if any(move.state == 'done' for move in self): raise UserError(_('You cannot cancel a stock move that has been set to \'Done\'.')) for move in self: + if move.state == 'cancel': + continue move._do_unreserve() siblings_states = (move.move_dest_ids.mapped('move_orig_ids') - move).mapped('state') if move.propagate: