[WIP] stock: rereserve and partial transfer

bzr revid: qdp-launchpad@openerp.com-20131118105717-4p24640n2xatn6ja
This commit is contained in:
Quentin (OpenERP) 2013-11-18 11:57:17 +01:00
parent a4f38da847
commit dde7550152
1 changed files with 15 additions and 14 deletions

View File

@ -722,7 +722,7 @@ class stock_picking(osv.osv):
'name': lambda self, cr, uid, context: '/',
'state': 'draft',
'move_type': 'one',
'priority' : '1', #normal
'priority': '1', # normal
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.picking', context=c)
}
@ -739,9 +739,8 @@ class stock_picking(osv.osv):
default['name'] = '/'
if not default.get('backorder_id'):
default['backorder_id'] = False
default['pack_operation_ids'] = []
return super(stock_picking, self).copy(cr, uid, id, default, context)
def action_confirm(self, cr, uid, ids, context=None):
todo = []
@ -769,9 +768,9 @@ class stock_picking(osv.osv):
def build_domain(record):
op = record.operation_id
move = record.move_id
domain = [('product_id', '=', move.produc_id.id)]
domain = [('product_id', '=', move.product_id.id)]
if op.package_id:
domain.append(('id', 'in', package_obj. _get_content_package(cr, uid, [op.package_id.id], context=context)))
domain.append(('id', 'in', package_obj.get_content(cr, uid, [op.package_id.id], context=context)))
elif op.quant_id:
domain.append(('id', '=', op.quant_id.id))
elif op.lot_id:
@ -1162,7 +1161,7 @@ class stock_picking(osv.osv):
operation_obj = self.pool.get('stock.pack.operation')
for op in picking.pack_operation_ids:
for product_id, remaining_qty in operation_obj._get_remaining_prod_quantities(cr, uid, op, context=context).items():
if remaining_qty < 0:
if remaining_qty > 0:
product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
vals = {
'picking_id': picking.id,
@ -1172,8 +1171,10 @@ class stock_picking(osv.osv):
'product_uom': product.uom_id.id,
'product_uom_qty': remaining_qty,
'name': _('Extra Move: ') + product.name,
'state': 'confirmed',
}
move_obj.create(cr, uid, vals, context=context)
self.do_recompute_remaining_quantities(cr, uid, [picking.id], context=context)
def rereserve_quants(self, cr, uid, picking, move_ids=[], context=None):
stock_move_obj = self.pool.get('stock.move')
@ -1582,7 +1583,7 @@ class stock_move(osv.osv):
'You try to move a product using a UoM that is not compatible with the UoM of the product moved. Please use an UoM in the same UoM category.',
['product_uom'])]
def copy(self, cr, uid, id, default=None, context=None):
def copy_data(self, cr, uid, id, default=None, context=None):
if default is None:
default = {}
default = default.copy()
@ -1590,9 +1591,10 @@ class stock_move(osv.osv):
default['quant_ids'] = []
default['reserved_quant_ids'] = []
default['returned_move_ids'] = []
default['linked_move_operation_ids'] = []
default['origin_returned_move_id'] = False
default['state'] = 'draft'
return super(stock_move, self).copy(cr, uid, id, default, context)
return super(stock_move, self).copy_data(cr, uid, id, default, context)
def do_unreserve(self, cr, uid, move_ids, context=None):
ids_to_free = []
@ -1875,7 +1877,7 @@ class stock_move(osv.osv):
quant_obj = self.pool.get("stock.quant")
done = []
for move in self.browse(cr, uid, ids, context=context):
if move.state not in ('confirmed', 'waiting'):
if move.state not in ('confirmed', 'waiting', 'assigned'):
continue
if move.product_id.type == 'consu':
done.append(move.id)
@ -3296,7 +3298,7 @@ class stock_package(osv.osv):
'''
quant_obj = self.pool.get('stock.quant')
res = {}
for quant in quant_obj.browse(cr, uid, self._get_content_package(cr, uid, package_id, context=context)):
for quant in quant_obj.browse(cr, uid, self.get_content(cr, uid, package_id, context=context)):
if quant.product_id.id not in res:
res[quant.product_id.id] = 0
res[quant.product_id.id] += quant.qty
@ -3315,9 +3317,9 @@ class stock_pack_operation(osv.osv):
res = self.pool.get('stock.quant.package')._get_all_products_quantities(cr, uid, operation.package_id.id, context=context)
#reduce by the quantities linked to a move
for record in operation.linked_move_operation_ids:
if record.product_id.id not in res:
res[record.product_id.id] = 0
res[record.product_id.id] -= record.qty
if record.move_id.product_id.id not in res:
res[record.move_id.product_id.id] = 0
res[record.move_id.product_id.id] -= record.qty
return res
def _get_remaining_qty(self, cr, uid, ids, name, args, context=None):
@ -3581,7 +3583,6 @@ class stock_warehouse_orderpoint(osv.osv):
return super(stock_warehouse_orderpoint, self).copy(cr, uid, id, default, context=context)
class stock_picking_type(osv.osv):
_name = "stock.picking.type"
_description = "The picking type determines the picking view"