[FIX] stock: programming error in average price computation for multiple lines of the same product
While processing a picking we must keep track of previously processed lines as they modify the stock on hand but are not yet included in the `qty_available` function. Negative stock on hand is handled as if the stock was zero as far as the average price computation is concerned. bzr revid: odo@openerp.com-20131104171245-z1lgsplyu4cdz9gc
This commit is contained in:
parent
5f56739c1b
commit
a6ca3b043f
|
@ -1275,9 +1275,8 @@ class stock_picking(osv.osv):
|
|||
context['currency_id'] = move_currency_id
|
||||
qty = uom_obj._compute_qty(cr, uid, product_uom, product_qty, product.uom_id.id)
|
||||
|
||||
if product.id in product_avail:
|
||||
product_avail[product.id] += qty
|
||||
else:
|
||||
if product.id not in product_avail:
|
||||
# keep track of stock on hand including processed lines not yet marked as done
|
||||
product_avail[product.id] = product.qty_available
|
||||
|
||||
if qty > 0:
|
||||
|
@ -1285,7 +1284,8 @@ class stock_picking(osv.osv):
|
|||
move_currency_id, product_price)
|
||||
new_price = uom_obj._compute_price(cr, uid, product_uom, new_price,
|
||||
product.uom_id.id)
|
||||
if product.qty_available <= 0:
|
||||
if product_avail[product.id] <= 0:
|
||||
product_avail[product.id] = 0
|
||||
new_std_price = new_price
|
||||
else:
|
||||
# Get the standard price
|
||||
|
@ -1301,6 +1301,9 @@ class stock_picking(osv.osv):
|
|||
{'price_unit': product_price,
|
||||
'price_currency_id': product_currency})
|
||||
|
||||
product_avail[product.id] += qty
|
||||
|
||||
|
||||
|
||||
for move in too_few:
|
||||
product_qty = move_product_qty[move.id]
|
||||
|
|
Loading…
Reference in New Issue