diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 3e19738c2e7..80be285cd25 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -60,7 +60,6 @@ class stock_journal(osv.osv): } stock_journal() - #---------------------------------------------------------- # Stock Location #---------------------------------------------------------- @@ -1090,7 +1089,15 @@ class stock_picking(osv.osv): if move.state not in ('cancel',): return False return True - + + def allow_cancel(self, cr, uid, ids, context={}): + for pick in self.browse(cr, uid, ids, context=context): + if not pick.move_lines: + return True + for move in pick.move_lines: + if move.state == 'done': + return False + return True def unlink(self, cr, uid, ids, context=None): move_obj = self.pool.get('stock.move') if context is None: diff --git a/addons/stock/stock_workflow.xml b/addons/stock/stock_workflow.xml index 3254f7b6984..9d4d41260ed 100644 --- a/addons/stock/stock_workflow.xml +++ b/addons/stock/stock_workflow.xml @@ -96,11 +96,13 @@ + allow_cancel() button_cancel + allow_cancel() button_cancel