[FIX] mrp: Fixed problem of wrong calculation of Consumed Products in a Production Order.

bzr revid: uco@tinyerp.com-20100819073252-a8djnr7vdue2m3db
This commit is contained in:
uco (Open ERP) 2010-08-19 13:02:52 +05:30
parent 70ec78aa34
commit 2eaf0ee8a4
1 changed files with 22 additions and 9 deletions

View File

@ -686,29 +686,42 @@ class mrp_production(osv.osv):
final_product_todo = []
produced_qty = 0
if production_mode == 'consume_produce':
produced_qty = production_qty
for produced_product in production.move_created_ids2:
if (produced_product.scraped) or (produced_product.product_id.id<>production.product_id.id):
continue
produced_qty += produced_product.product_qty
if production_mode in ['consume','consume_produce']:
consumed_products = {}
check = {}
scraped = map(lambda x:x.scraped,production.move_lines2).count(True)
for consumed_product in production.move_lines2:
consumed = consumed_product.product_qty
if consumed_product.scraped:
continue
if not consumed_products.get(consumed_product.product_id.id, False):
consumed_products[consumed_product.product_id.id] = 0
consumed_products[consumed_product.product_id.id] -= consumed_product.product_qty
consumed_products[consumed_product.product_id.id] = consumed_product.product_qty
check[consumed_product.product_id.id] = 0
for f in production.product_lines:
if f.product_id.id == consumed_product.product_id.id:
if (len(production.move_lines2) - scraped) > len(production.product_lines):
check[consumed_product.product_id.id] += consumed_product.product_qty
consumed = check[consumed_product.product_id.id]
rest_consumed = produced_qty * f.product_qty / production.product_qty - consumed
consumed_products[consumed_product.product_id.id] = rest_consumed
for raw_product in production.move_lines:
for f in production.product_lines:
if f.product_id.id==raw_product.product_id.id:
if f.product_id.id == raw_product.product_id.id:
consumed_qty = consumed_products.get(raw_product.product_id.id, 0)
rest_qty = production_qty * f.product_qty / production.product_qty - consumed_qty
if rest_qty > 0:
stock_mov_obj.action_consume(cr, uid, [raw_product.id], rest_qty, production.location_src_id.id, context=context)
if consumed_qty == 0:
consumed_qty = production_qty * f.product_qty / production.product_qty
if consumed_qty > 0:
stock_mov_obj.action_consume(cr, uid, [raw_product.id], consumed_qty, production.location_src_id.id, context=context)
if production_mode == 'consume_produce':
# To produce remaining qty of final product