From 0c74b9d02758b33ff7639be81baa8a5fef415705 Mon Sep 17 00:00:00 2001 From: David Monjoie Date: Thu, 6 Nov 2014 13:20:44 +0100 Subject: [PATCH] [FIX] product: pricelist shouldn't convert uom when not needed or incompatible uom types Otherwise the Search More view will crash for example for sale order line because it will fetch the price of all products and then try to convert uoms for pricelist rule application without checking uom compatibility --- addons/product/pricelist.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index 35be803ea39..34a87b8beaf 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -24,6 +24,7 @@ import time from openerp import tools from openerp.osv import fields, osv from openerp.tools.translate import _ +from openerp.exceptions import except_orm import openerp.addons.decimal_precision as dp @@ -251,8 +252,11 @@ class product_pricelist(osv.osv): price = False rule_id = False for rule in items: - if 'uom' in context: - qty_in_product_uom = product_uom_obj._compute_qty(cr, uid, context['uom'], qty, product.uom_id.id or product.uos_id.id) + if 'uom' in context and product.uom_id and context['uom'] != product.uom_id.id: + try: + qty_in_product_uom = product_uom_obj._compute_qty(cr, uid, context['uom'], qty, product.uom_id.id, dict(context.items() + [('raise-exception', False)])) + except except_orm: + qty_in_product_uom = qty else: qty_in_product_uom = qty if rule.min_quantity and qty_in_product_uom