[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:
Olivier Dony 2013-11-04 18:12:45 +01:00
parent 5f56739c1b
commit a6ca3b043f
1 changed files with 7 additions and 4 deletions

View File

@ -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]