fixed bug : when all stock move lines are cancelled, picking should be cancel
authorHarry (Open ERP) <hmo@tinyerp.com>
Fri, 26 Dec 2008 07:52:00 +0000 (13:22 +0530)
committerHarry (Open ERP) <hmo@tinyerp.com>
Fri, 26 Dec 2008 07:52:00 +0000 (13:22 +0530)
bzr revid: hmo@tinyerp.com-20081226075200-kjj1lrq2kk5znh7w

addons/stock/stock.py

index e74165e..c98a15e 100644 (file)
@@ -1062,20 +1062,22 @@ class stock_move(osv.osv):
             if move.state in ('confirmed','waiting','assigned','draft'):
                 if move.picking_id:
                     pickings[move.picking_id.id] = True
-        if move.move_dest_id and move.move_dest_id.state=='waiting':
-            self.write(cr, uid, [move.move_dest_id.id], {'state':'assigned'})
-            if move.move_dest_id.picking_id:
-                wf_service = netsvc.LocalService("workflow")
-                wf_service.trg_write(uid, 'stock.picking', move.move_dest_id.picking_id.id, cr)
+            if move.move_dest_id and move.move_dest_id.state=='waiting':
+                self.write(cr, uid, [move.move_dest_id.id], {'state':'assigned'})
+                if move.move_dest_id.picking_id:
+                    wf_service = netsvc.LocalService("workflow")
+                    wf_service.trg_write(uid, 'stock.picking', move.move_dest_id.picking_id.id, cr)
         self.write(cr, uid, ids, {'state':'cancel', 'move_dest_id': False})
 
-        #for pick_id in pickings:
-        #    wf_service = netsvc.LocalService("workflow")
-        #    wf_service.trg_validate(uid, 'stock.picking', pick_id, 'button_cancel', cr)
-        #ids2 = []
-        #for res in self.read(cr, uid, ids, ['move_dest_id']):
-        #    if res['move_dest_id']:
-        #        ids2.append(res['move_dest_id'][0])
+        for pick in self.pool.get('stock.picking').browse(cr,uid,pickings.keys()):
+            cancel=False
+            for move in pick.move_lines:
+                if move.state=='cancel':
+                    cancel=True
+                if move.state!='cancel':
+                    cancel=False
+            if cancel:
+                self.pool.get('stock.picking').write(cr,uid,[pick.id],{'state':'cancel'}) 
 
         wf_service = netsvc.LocalService("workflow")
         for id in ids: