[FIX] Manually created stock moves should confirm without fail
bzr revid: ach@tinyerp.com-20100830133138-an8du6o6pf6yk5dw
This commit is contained in:
parent
9689501109
commit
22fb8bcb3d
|
@ -1572,24 +1572,30 @@ class stock_move(osv.osv):
|
||||||
context = {}
|
context = {}
|
||||||
for picking, todo in self._chain_compute(cr, uid, moves, context=context).items():
|
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])
|
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':
|
if ptype == 'delivery':
|
||||||
pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.delivery')
|
pick_name = self.pool.get('ir.sequence').get(cr, uid, 'stock.picking.delivery')
|
||||||
|
check_picking_ids = picking_obj.search(cr, uid, [('name','=',picking.name),('origin','=',str(picking.origin or '')),('type','=',ptype),('move_type','=',picking.move_type)])
|
||||||
pickid = picking_obj.create(cr, uid, {
|
if check_picking_ids:
|
||||||
'name': pick_name,
|
pickid = check_picking_ids[0]
|
||||||
'origin': str(picking.origin or ''),
|
else:
|
||||||
'type': ptype,
|
if picking:
|
||||||
'note': picking.note,
|
pickid = picking_obj.create(cr, uid, {
|
||||||
'move_type': picking.move_type,
|
'name': pick_name,
|
||||||
'auto_picking': todo[0][1][1] == 'auto',
|
'origin': str(picking.origin or ''),
|
||||||
'stock_journal_id': todo[0][1][3],
|
'type': ptype,
|
||||||
'company_id': todo[0][1][4] or res_obj._company_default_get(cr, uid, 'stock.company', context),
|
'note': picking.note,
|
||||||
'address_id': picking.address_id.id,
|
'move_type': picking.move_type,
|
||||||
'invoice_state': 'none',
|
'auto_picking': todo[0][1][1] == 'auto',
|
||||||
'date': picking.date,
|
'stock_journal_id': todo[0][1][3],
|
||||||
'sale_id':' sale_id' in picking._columns.keys() and picking.sale_id.id or False
|
'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:
|
for move, (loc, auto, delay, journal, company_id, ptype) in todo:
|
||||||
new_id = move_obj.copy(cr, uid, move.id, {
|
new_id = move_obj.copy(cr, uid, move.id, {
|
||||||
'location_id': move.location_dest_id.id,
|
'location_id': move.location_dest_id.id,
|
||||||
|
@ -1597,7 +1603,7 @@ class stock_move(osv.osv):
|
||||||
'date_moved': time.strftime('%Y-%m-%d'),
|
'date_moved': time.strftime('%Y-%m-%d'),
|
||||||
'picking_id': pickid,
|
'picking_id': pickid,
|
||||||
'state': 'waiting',
|
'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': [],
|
'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'),
|
'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': []}
|
'move_history_ids2': []}
|
||||||
|
@ -1607,8 +1613,9 @@ class stock_move(osv.osv):
|
||||||
'move_history_ids': [(4, new_id)]
|
'move_history_ids': [(4, new_id)]
|
||||||
})
|
})
|
||||||
new_moves.append(self.browse(cr, uid, [new_id])[0])
|
new_moves.append(self.browse(cr, uid, [new_id])[0])
|
||||||
wf_service = netsvc.LocalService("workflow")
|
if pickid:
|
||||||
wf_service.trg_validate(uid, 'stock.picking', pickid, 'button_confirm', cr)
|
wf_service = netsvc.LocalService("workflow")
|
||||||
|
wf_service.trg_validate(uid, 'stock.picking', pickid, 'button_confirm', cr)
|
||||||
if new_moves:
|
if new_moves:
|
||||||
create_chained_picking(self, cr, uid, new_moves, context)
|
create_chained_picking(self, cr, uid, new_moves, context)
|
||||||
create_chained_picking(self, cr, uid, 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):
|
def setlast_tracking(self, cr, uid, ids, context=None):
|
||||||
tracking_obj = self.pool.get('stock.tracking')
|
tracking_obj = self.pool.get('stock.tracking')
|
||||||
tracking = context.get('tracking', False)
|
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]
|
picking = self.browse(cr, uid, ids)[0].picking_id
|
||||||
if not last_track:
|
if picking:
|
||||||
last_track = tracking_obj.create(cr, uid, {}, context=context)
|
last_track = [line.tracking_id.id for line in picking.move_lines if line.tracking_id]
|
||||||
else:
|
if not last_track:
|
||||||
last_track.sort()
|
last_track = tracking_obj.create(cr, uid, {}, context=context)
|
||||||
last_track = last_track[-1]
|
else:
|
||||||
self.write(cr, uid, ids, {'tracking_id': last_track})
|
last_track.sort()
|
||||||
|
last_track = last_track[-1]
|
||||||
|
self.write(cr, uid, ids, {'tracking_id': last_track})
|
||||||
return True
|
return True
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue