summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnup (OpenERP) <ach@tinyerp.com>2010-08-30 19:01:38 +0530
committerAnup (OpenERP) <ach@tinyerp.com>2010-08-30 19:01:38 +0530
commit22fb8bcb3d659320c8804bac2c9b2c034eb0db34 (patch)
tree2e2e668734b91e70895d3b6277303a63e7ad81c5
parent9689501109cabc4cea1de78af9993d981cbffcea (diff)
[FIX] Manually created stock moves should confirm without fail
bzr revid: ach@tinyerp.com-20100830133138-an8du6o6pf6yk5dw
-rw-r--r--addons/stock/stock.py61
1 files changed, 35 insertions, 26 deletions
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 43943521d2b..aac1ac869ed 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -1572,24 +1572,30 @@ class stock_move(osv.osv):
context = {}
for picking, todo in self._chain_compute(cr, uid, moves, context=context).items():
ptype = todo[0][1][5] and todo[0][1][5] or self.pool.get('stock.location').picking_type_get(cr, uid, todo[0][0].location_dest_id, todo[0][1][0])
- pick_name = picking.name
+ pick_name = picking.name or ''
if ptype == 'delivery':
pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.delivery')
-
- pickid = picking_obj.create(cr, uid, {
- 'name': pick_name,
- 'origin': str(picking.origin or ''),
- 'type': ptype,
- 'note': picking.note,
- 'move_type': picking.move_type,
- 'auto_picking': todo[0][1][1] == 'auto',
- 'stock_journal_id': todo[0][1][3],
- 'company_id': todo[0][1][4] or res_obj._company_default_get(cr, uid, 'stock.company', context),
- 'address_id': picking.address_id.id,
- 'invoice_state': 'none',
- 'date': picking.date,
- 'sale_id':' sale_id' in picking._columns.keys() and picking.sale_id.id or False
- })
+ check_picking_ids = picking_obj.search(cr, uid, [('name','=',picking.name),('origin','=',str(picking.origin or '')),('type','=',ptype),('move_type','=',picking.move_type)])
+ if check_picking_ids:
+ pickid = check_picking_ids[0]
+ else:
+ if picking:
+ pickid = picking_obj.create(cr, uid, {
+ 'name': pick_name,
+ 'origin': str(picking.origin or ''),
+ 'type': ptype,
+ 'note': picking.note,
+ 'move_type': picking.move_type,
+ 'auto_picking': todo[0][1][1] == 'auto',
+ 'stock_journal_id': todo[0][1][3],
+ 'company_id': todo[0][1][4] or res_obj._company_default_get(cr, uid, 'stock.company', context=context),
+ 'address_id': picking.address_id.id,
+ 'invoice_state': 'none',
+ 'date': picking.date,
+ 'sale_id':' sale_id' in picking._columns.keys() and picking.sale_id.id or False
+ })
+ else:
+ pickid = False
for move, (loc, auto, delay, journal, company_id, ptype) in todo:
new_id = move_obj.copy(cr, uid, move.id, {
'location_id': move.location_dest_id.id,
@@ -1597,7 +1603,7 @@ class stock_move(osv.osv):
'date_moved': time.strftime('%Y-%m-%d'),
'picking_id': pickid,
'state': 'waiting',
- 'company_id': company_id or res_obj._company_default_get(cr, uid, 'stock.company', context) ,
+ 'company_id': company_id or res_obj._company_default_get(cr, uid, 'stock.company', context=context) ,
'move_history_ids': [],
'date_planned': (datetime.strptime(move.date_planned, '%Y-%m-%d %H:%M:%S') + relativedelta(days=delay or 0)).strftime('%Y-%m-%d'),
'move_history_ids2': []}
@@ -1607,8 +1613,9 @@ class stock_move(osv.osv):
'move_history_ids': [(4, new_id)]
})
new_moves.append(self.browse(cr, uid, [new_id])[0])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'stock.picking', pickid, 'button_confirm', cr)
+ if pickid:
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'stock.picking', pickid, 'button_confirm', cr)
if new_moves:
create_chained_picking(self, cr, uid, new_moves, context)
create_chained_picking(self, cr, uid, moves, context)
@@ -1687,13 +1694,15 @@ class stock_move(osv.osv):
def setlast_tracking(self, cr, uid, ids, context=None):
tracking_obj = self.pool.get('stock.tracking')
tracking = context.get('tracking', False)
- last_track = [line.tracking_id.id for line in self.browse(cr, uid, ids)[0].picking_id.move_lines if line.tracking_id]
- if not last_track:
- last_track = tracking_obj.create(cr, uid, {}, context=context)
- else:
- last_track.sort()
- last_track = last_track[-1]
- self.write(cr, uid, ids, {'tracking_id': last_track})
+ picking = self.browse(cr, uid, ids)[0].picking_id
+ if picking:
+ last_track = [line.tracking_id.id for line in picking.move_lines if line.tracking_id]
+ if not last_track:
+ last_track = tracking_obj.create(cr, uid, {}, context=context)
+ else:
+ last_track.sort()
+ last_track = last_track[-1]
+ self.write(cr, uid, ids, {'tracking_id': last_track})
return True
#