summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruco (Open ERP) <uco@tinyerp.com>2010-08-19 13:02:52 +0530
committeruco (Open ERP) <uco@tinyerp.com>2010-08-19 13:02:52 +0530
commit2eaf0ee8a420b5273e173e5069355a17c874349e (patch)
tree718ebe7c45f0685cbf3866c47e21ed66bb57f378
parent70ec78aa34201c33778f2c503ccb1ab0e638de40 (diff)
[FIX] mrp: Fixed problem of wrong calculation of Consumed Products in a Production Order.
bzr revid: uco@tinyerp.com-20100819073252-a8djnr7vdue2m3db
-rw-r--r--addons/mrp/mrp.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index 0e69dd3b4e8..fd9f8335987 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -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