[MERGE] stock: improved API for chained pickings creation, courtesy of Sebastien Beau (Akretion)

bzr revid: odo@openerp.com-20111215184954-grr461wg37nrvit9
This commit is contained in:
Olivier Dony 2011-12-15 19:49:54 +01:00
commit 9bfbdccfe2
1 changed files with 34 additions and 16 deletions

View File

@ -1852,23 +1852,41 @@ class stock_move(osv.osv):
result[m.picking_id].append( (m, dest) )
return result
def _create_chained_picking(self, cr, uid, pick_name, picking, ptype, move, context=None):
res_obj = self.pool.get('res.company')
def _prepare_chained_picking(self, cr, uid, picking_name, picking, picking_type, moves_todo, context=None):
"""Prepare the definition (values) to create a new chained picking.
:param str picking_name: desired new picking name
:param browse_record picking: source picking (being chained to)
:param str picking_type: desired new picking type
:param list moves_todo: specification of the stock moves to be later included in this
picking, in the form::
[[move, (dest_location, auto_packing, chained_delay, chained_journal,
chained_company_id, chained_picking_type)],
...
]
See also :meth:`stock_location.chained_location_get`.
"""
res_company = self.pool.get('res.company')
return {
'name': picking_name,
'origin': tools.ustr(picking.origin or ''),
'type': picking_type,
'note': picking.note,
'move_type': picking.move_type,
'auto_picking': moves_todo[0][1][1] == 'auto',
'stock_journal_id': moves_todo[0][1][3],
'company_id': moves_todo[0][1][4] or res_company._company_default_get(cr, uid, 'stock.company', context=context),
'address_id': picking.address_id.id,
'invoice_state': 'none',
'date': picking.date,
}
def _create_chained_picking(self, cr, uid, picking_name, picking, picking_type, moves_todo, context=None):
picking_obj = self.pool.get('stock.picking')
pick_id= picking_obj.create(cr, uid, {
'name': pick_name,
'origin': tools.ustr(picking.origin or ''),
'type': ptype,
'note': picking.note,
'move_type': picking.move_type,
'auto_picking': move[0][1][1] == 'auto',
'stock_journal_id': move[0][1][3],
'company_id': move[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,
})
return pick_id
return picking_obj.create(cr, uid, self._prepare_chained_picking(cr, uid, picking_name, picking, picking_type, moves_todo, context=context))
def create_chained_picking(self, cr, uid, moves, context=None):
res_obj = self.pool.get('res.company')
location_obj = self.pool.get('stock.location')