From b6a3215579fb924fbe24d064c7fec6328a3e7a1b Mon Sep 17 00:00:00 2001 From: "Bharat (OpenERP)" Date: Fri, 18 Nov 2011 11:41:40 +0530 Subject: [PATCH 1/2] [FIX] sale : pooled the objects in starting of method _create_pickings_and_procurements and then used in the function lp bug: https://launchpad.net/bugs/891596 fixed bzr revid: bde@tinyerp.com-20111118061140-whiqz9e03xyjle6q --- addons/sale/sale.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 62f979cb9c9..01c8277144b 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -757,6 +757,10 @@ class sale_order(osv.osv): will be added. A new picking will be created if ommitted. :return: True """ + move_obj = self.pool.get('stock.move') + picking_obj = self.pool.get('stock.picking') + procurement_order_obj = self.pool.get('procurement.order') + proc_ids = [] for line in order_lines: if line.state == 'done': @@ -768,13 +772,13 @@ class sale_order(osv.osv): if line.product_id: if line.product_id.product_tmpl_id.type in ('product', 'consu'): if not picking_id: - picking_id = self.pool.get('stock.picking').create(cr, uid, self._prepare_order_picking(cr, uid, order, *args)) - move_id = self.pool.get('stock.move').create(cr, uid, self._prepare_order_line_move(cr, uid, order, line, picking_id, date_planned, *args)) + picking_id = picking_obj.create(cr, uid, self._prepare_order_picking(cr, uid, order, *args)) + move_id = move_obj.create(cr, uid, self._prepare_order_line_move(cr, uid, order, line, picking_id, date_planned, *args)) else: # a service has no stock move move_id = False - proc_id = self.pool.get('procurement.order').create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args)) + proc_id = procurement_order_obj.create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args)) proc_ids.append(proc_id) line.write({'procurement_id': proc_id}) @@ -784,12 +788,12 @@ class sale_order(osv.osv): for pick in order.picking_ids: for move in pick.move_lines: if move.state == 'cancel': - mov_ids = self.pool.get('stock.move').search(cr, uid, [('state', '=', 'cancel'),('sale_line_id', '=', line.id),('picking_id', '=', pick.id)]) + mov_ids = move_obj.search(cr, uid, [('state', '=', 'cancel'),('sale_line_id', '=', line.id),('picking_id', '=', pick.id)]) if mov_ids: for mov in move_obj.browse(cr, uid, mov_ids): # FIXME: the following seems broken: what if move_id doesn't exist? What if there are several mov_ids? Shouldn't that be a sum? - self.pool.get('stock.move').write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty}) - self.pool.get('procurement.order').write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty}) + move_obj.write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty}) + procurement_order_obj.write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty}) wf_service = netsvc.LocalService("workflow") if picking_id: From 8f228671d017523aad94943f8f25023b603dd1da Mon Sep 17 00:00:00 2001 From: "Bharat (OpenERP)" Date: Fri, 18 Nov 2011 18:44:04 +0530 Subject: [PATCH 2/2] [IMP] sale : improved variable name, made procurement_obj from procurement_order_obj bzr revid: bde@tinyerp.com-20111118131404-ww8jbyix2zr5ykcp --- addons/sale/sale.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 01c8277144b..2188f6dee5f 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -759,7 +759,7 @@ class sale_order(osv.osv): """ move_obj = self.pool.get('stock.move') picking_obj = self.pool.get('stock.picking') - procurement_order_obj = self.pool.get('procurement.order') + procurement_obj = self.pool.get('procurement.order') proc_ids = [] for line in order_lines: @@ -778,7 +778,7 @@ class sale_order(osv.osv): # a service has no stock move move_id = False - proc_id = procurement_order_obj.create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args)) + proc_id = procurement_obj.create(cr, uid, self._prepare_order_line_procurement(cr, uid, order, line, move_id, date_planned, *args)) proc_ids.append(proc_id) line.write({'procurement_id': proc_id}) @@ -793,7 +793,7 @@ class sale_order(osv.osv): for mov in move_obj.browse(cr, uid, mov_ids): # FIXME: the following seems broken: what if move_id doesn't exist? What if there are several mov_ids? Shouldn't that be a sum? move_obj.write(cr, uid, [move_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty}) - procurement_order_obj.write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty}) + procurement_obj.write(cr, uid, [proc_id], {'product_qty': mov.product_qty, 'product_uos_qty': mov.product_uos_qty}) wf_service = netsvc.LocalService("workflow") if picking_id: