From 8001a5f2b921281f9cedc82b44abc036508bf5b3 Mon Sep 17 00:00:00 2001 From: "Atik Agewan (OpenERP)" Date: Wed, 17 Aug 2011 14:48:26 +0530 Subject: [PATCH] [FIX] mrp,mrp_subproduct:sub_products qty is True when Product type is Variable lp bug: https://launchpad.net/bugs/794431 fixed bzr revid: aag@tinyerp.com-20110817091826-fkg4y3b6pbbh220e --- addons/mrp/mrp.py | 11 ++++++++--- addons/mrp/wizard/mrp_product_produce.py | 5 +++-- addons/mrp_subproduct/mrp_subproduct.py | 10 ++++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py index ec429488914..5c36579281e 100644 --- a/addons/mrp/mrp.py +++ b/addons/mrp/mrp.py @@ -680,6 +680,11 @@ class mrp_production(osv.osv): if production.move_created_ids: res = False return res + + def rest_qty_compute(self, cr, uid, obj, move_obj=None, context=None): + qty = obj.product_qty * sub_qty + res = {'product_qty': qty, 'sub_qty': 1} + return res def action_produce(self, cr, uid, production_id, production_qty, production_mode, context=None): """ To produce final product based on production mode (consume/consume&produce). @@ -694,7 +699,6 @@ class mrp_production(osv.osv): stock_mov_obj = self.pool.get('stock.move') production = self.browse(cr, uid, production_id, context=context) - produced_qty = 0 if production_mode == 'consume_produce': produced_qty = production_qty @@ -749,11 +753,12 @@ class mrp_production(osv.osv): for produce_product in production.move_created_ids: produced_qty = produced_products.get(produce_product.product_id.id, 0) - rest_qty = production.product_qty - produced_qty + get_qty = self.rest_qty_compute(cr, uid, production, produce_product) + rest_qty = get_qty['product_qty'] - produced_qty if rest_qty <= production_qty: production_qty = rest_qty if rest_qty > 0 : - stock_mov_obj.action_consume(cr, uid, [produce_product.id], production_qty, context=context) + stock_mov_obj.action_consume(cr, uid, [produce_product.id], production_qty * get_qty['sub_qty'], context=context) for raw_product in production.move_lines2: new_parent_ids = [] diff --git a/addons/mrp/wizard/mrp_product_produce.py b/addons/mrp/wizard/mrp_product_produce.py index 69fc3a9dd7d..dc9a235ff63 100644 --- a/addons/mrp/wizard/mrp_product_produce.py +++ b/addons/mrp/wizard/mrp_product_produce.py @@ -49,8 +49,9 @@ class mrp_product_produce(osv.osv_memory): context['active_id'], context=context) done = 0.0 for move in prod.move_created_ids2: - if not move.scrapped: - done += move.product_qty + if move.product_id == prod.product_id: + if not move.scrapped: + done += move.product_qty return (prod.product_qty - done) or prod.product_qty _defaults = { diff --git a/addons/mrp_subproduct/mrp_subproduct.py b/addons/mrp_subproduct/mrp_subproduct.py index 130411987c1..1e43078955c 100644 --- a/addons/mrp_subproduct/mrp_subproduct.py +++ b/addons/mrp_subproduct/mrp_subproduct.py @@ -97,5 +97,15 @@ class mrp_production(osv.osv): self.pool.get('stock.move').create(cr, uid, data) return picking_id + def rest_qty_compute(self, cr, uid, obj, move_obj=None, context=None): + sub_obj = self.pool.get('mrp.subproduct') + sub_qty = 1 + sub_id = sub_obj.search(cr, uid,[('product_id', '=', move_obj.product_id.id)] ) + if sub_id: + sub_qty = sub_obj.browse(cr ,uid, sub_id[0]).product_qty + qty = obj.product_qty * sub_qty + res = {'product_qty': qty, 'sub_qty': sub_qty} + return res + mrp_production() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: