From 4b1f2b9142579ead9adf40cc6528c447f8b50478 Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Tue, 13 Sep 2011 11:31:50 +0530 Subject: [PATCH 1/3] [FIX]product: Improved Variable naming in - price_get_multi in pricelist.py and optimized code lp bug: https://launchpad.net/bugs/847605 fixed bzr revid: ron@tinyerp.com-20110913060150-o82qynbndp3alnm0 --- addons/product/pricelist.py | 39 +++++++++++++++---------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index 81cec0e7d95..2909ef8496c 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -160,30 +160,23 @@ class product_pricelist(osv.osv): product_uom_obj = self.pool.get('product.uom') supplierinfo_obj = self.pool.get('product.supplierinfo') price_type_obj = self.pool.get('product.price.type') - product_pricelist_version_obj = self.pool.get('product.pricelist.version') # product.pricelist.version: - if pricelist_ids: - pricelist_version_ids = pricelist_ids - else: - # all pricelists: - pricelist_version_ids = self.pool.get('product.pricelist').search(cr, uid, [], context=context) + if not pricelist_ids: + pricelist_ids = self.pool.get('product.pricelist').search(cr, uid, [], context=context) - pricelist_version_ids = list(set(pricelist_version_ids)) - plversions_search_args = [ - ('pricelist_id', 'in', pricelist_version_ids), - '|', - ('date_start', '=', False), - ('date_start', '<=', date), - '|', - ('date_end', '=', False), - ('date_end', '>=', date), - ] - - plversion_ids = product_pricelist_version_obj.search(cr, uid, plversions_search_args) - if len(pricelist_version_ids) != len(plversion_ids): - msg = "At least one pricelist has no active version !\nPlease create or activate one." - raise osv.except_osv(_('Warning !'), _(msg)) + pricelist_ids = list(set(pricelist_ids)) + pricelist_version_ids = self.pool.get('product.pricelist.version').search(cr, uid, [ + ('pricelist_id', 'in', pricelist_ids), + '|', + ('date_start', '=', False), + ('date_start', '<=', date), + '|', + ('date_end', '=', False), + ('date_end', '>=', date), + ]) + if len(pricelist_ids) != len(pricelist_version_ids): + raise osv.except_osv(_('Warning !'), _("At least one pricelist has no active version !\nPlease create or activate one.")) # product.product: product_ids = [i[0] for i in products_by_qty_by_partner] @@ -198,7 +191,7 @@ class product_pricelist(osv.osv): results = {} for product_id, qty, partner in products_by_qty_by_partner: - for pricelist_id in pricelist_version_ids: + for pricelist_id in pricelist_ids: price = False tmpl_id = products_dict[product_id].product_tmpl_id and products_dict[product_id].product_tmpl_id.id or False @@ -221,7 +214,7 @@ class product_pricelist(osv.osv): 'AND (min_quantity IS NULL OR min_quantity <= %s) ' 'AND i.price_version_id = v.id AND v.pricelist_id = pl.id ' 'ORDER BY sequence', - (tmpl_id, product_id, plversion_ids[0], qty)) + (tmpl_id, product_id, pricelist_version_ids[0], qty)) res1 = cr.dictfetchall() uom_price_already_computed = False for res in res1: From dea102e09457114ff5ac554808922b85eca5c4ba Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Tue, 13 Sep 2011 17:51:52 +0530 Subject: [PATCH 2/3] [IMP]product: Improved code of price_multi_get bzr revid: ron@tinyerp.com-20110913122152-mpzjcuvqy7xh1rzh --- addons/product/pricelist.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index 2909ef8496c..2fef6dff786 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -282,7 +282,7 @@ class product_pricelist(osv.osv): if 'uom' in context and not uom_price_already_computed: product = products_dict[product_id] uom = product.uos_id or product.uom_id - price = self.pool.get('product.uom')._compute_price(cr, uid, uom.id, price, context['uom']) + price = product_uom_obj._compute_price(cr, uid, uom.id, price, context['uom']) if results.get(product_id): results[product_id][pricelist_id] = price From f919ba5a5e01152a4aeca8a5d38faae779ffbd7a Mon Sep 17 00:00:00 2001 From: "ron@tinyerp.com" <> Date: Tue, 13 Sep 2011 18:24:34 +0530 Subject: [PATCH 3/3] [IMP]product: Removed list(set(pricelist_ids)) from price_get_multi bzr revid: ron@tinyerp.com-20110913125434-0k4xemeu9z4gh52t --- addons/product/pricelist.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index 2fef6dff786..3c22b2838ef 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -165,7 +165,6 @@ class product_pricelist(osv.osv): if not pricelist_ids: pricelist_ids = self.pool.get('product.pricelist').search(cr, uid, [], context=context) - pricelist_ids = list(set(pricelist_ids)) pricelist_version_ids = self.pool.get('product.pricelist.version').search(cr, uid, [ ('pricelist_id', 'in', pricelist_ids), '|',