[IMP]stock :Fixed:Add proper validation and refector code of do_partial picking

bzr revid: ron@tinyerp.com-20110414090620-qx3o3cb5hum36yku
This commit is contained in:
ron@tinyerp.com
2011-04-14 14:36:20 +05:30
parent 4624ad8029
commit e4e94b12da
2 changed files with 11 additions and 9 deletions
+2 -1
View File
@@ -1213,6 +1213,8 @@ class stock_picking(osv.osv):
for move in too_few:
if move.product_qty < partial_qty[move.id]:
raise osv.except_osv(_('Error !'), _('You cannot select Quantity %s more then Picking Quantity %s.') % (partial_qty[move.id],move.product_qty,))
product_qty = move_product_qty[move.id]
if not new_picking:
new_picking = self.copy(cr, uid, pick.id,
@@ -1235,7 +1237,6 @@ class stock_picking(osv.osv):
if prodlot_id:
defaults.update(prodlot_id=prodlot_id)
move_obj.copy(cr, uid, move.id, defaults)
move_obj.write(cr, uid, [move.id],
{
'product_qty' : move.product_qty - partial_qty[move.id],
+9 -8
View File
@@ -153,14 +153,15 @@ class stock_partial_picking(osv.osv_memory):
for pick in pick_obj.browse(cr, uid, picking_ids, context=context):
picking_type = self.get_picking_type(cr, uid, pick, context=context)
moves_list = picking_type == 'in' and partial.product_moves_in or partial.product_moves_out
picking_qty = 0.0
partial_qty = 0.0
for get_qty in pick.move_lines:
picking_qty += get_qty.product_qty
for move in moves_list:
partial_qty += uom_obj._compute_qty(cr, uid, move.product_uom.id, move.quantity, move.product_id.uom_id.id)
picking_qty = 0.0
partial_qty = 0.0
if move.product_uom.category_id.id <> move.product_id.uom_id.category_id.id:
raise osv.except_osv(_('Error !'), _('You are selected product uom category %s not same with picking product uom Category %s!.') % (move.product_uom.category_id.name,move.product_id.uom_id.category_id.name,))
raise osv.except_osv(_('Error !'), _('You have selected product uom category %s not same with picking product uom Category %s!.') % (move.product_uom.category_id.name,move.product_id.uom_id.category_id.name,))
for originalmove in pick.move_lines:
if originalmove.product_id.id == move.product_id.id:
picking_qty += uom_obj._compute_qty(cr, uid, originalmove.product_uom.id, originalmove.product_qty, originalmove.product_id.uom_id.id)
partial_qty += uom_obj._compute_qty(cr, uid, move.product_uom.id, move.quantity, move.product_id.uom_id.id)
partial_datas['move%s' % (move.move_id.id)] = {
'product_id': move.id,
'product_qty': move.quantity,
@@ -172,8 +173,8 @@ class stock_partial_picking(osv.osv_memory):
'product_price' : move.cost,
'product_currency': move.currency.id,
})
if picking_qty < partial_qty:
raise osv.except_osv(_('Error !'), _('You cannot select Quantity %s more then Picking Quantity %s.') % (partial_qty, picking_qty,))
if picking_qty < partial_qty:
raise osv.except_osv(_('Error !'), _('You cannot select Quantity %s more then Picking Quantity %s.') % (partial_qty, picking_qty,))
pick_obj.do_partial(cr, uid, picking_ids, partial_datas, context=context)
return {'type': 'ir.actions.act_window_close'}