diff --git a/addons/stock/stock.py b/addons/stock/stock.py index 151c21ef437..9dca7325314 100644 --- a/addons/stock/stock.py +++ b/addons/stock/stock.py @@ -1005,6 +1005,18 @@ class stock_picking(osv.osv): }, context=context) return res + def test_done(self, cr, uid, ids, context={}): + ok = False + 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 not in ('cancel','done'): + return False + if move.state=='done': + ok = True + return ok + def test_cancel(self, cr, uid, ids, context={}): """ Test whether the move lines are canceled or not. @return: True or False @@ -1832,11 +1844,10 @@ class stock_move(osv.osv): for id in ids: wf_service.trg_trigger(uid, 'stock.move', id, cr) - # We should remove this - #picking_obj = self.pool.get('stock.picking') - #for pick in picking_obj.browse(cr, uid, picking_ids): - # if len([(move.state in ('done','cancelled')) for move in pick.move_lines]) == len(pick.move_lines): - # picking_obj.action_done(cr, uid, [pick.id]) + picking_obj = self.pool.get('stock.picking') + wf_service = netsvc.LocalService("workflow") + for pick_id in picking_ids: + wf_service.trg_write(uid, 'stock.picking', pick_id, cr) for (id,name) in picking_obj.name_get(cr, uid, picking_ids): message = _('Document') + " '" + name + "' "+ _("is processed") diff --git a/addons/stock/stock_workflow.xml b/addons/stock/stock_workflow.xml index 3d51b11025e..5d0d9d0731e 100644 --- a/addons/stock/stock_workflow.xml +++ b/addons/stock/stock_workflow.xml @@ -67,6 +67,11 @@ test_assigned() + + + + test_done() +