From 2cde5596b93e6549d85a1990c4e8a5bd99819bc9 Mon Sep 17 00:00:00 2001 From: David Monjoie Date: Wed, 15 Oct 2014 14:51:22 +0200 Subject: [PATCH] [FIX] product_visible_discount: fix display of unit price according to rule base price like in 7.0 as requested by gab --- addons/product/pricelist.py | 17 ++++++++++++++--- .../product_visible_discount.py | 12 +++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index ba5718b0139..a10978bb603 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -168,6 +168,9 @@ class product_pricelist(osv.osv): } def price_get_multi(self, cr, uid, ids, products_by_qty_by_partner, context=None): + return dict((key, price[0]) for key, price in self.price_rule_get_multi(cr, uid, ids, products_by_qty_by_partner, context=context).items()) + + def price_rule_get_multi(self, cr, uid, ids, products_by_qty_by_partner, context=None): """multi products 'price_get'. @param ids: @param products_by_qty: @@ -180,13 +183,16 @@ class product_pricelist(osv.osv): ids = self.pool.get('product.pricelist').search(cr, uid, [], context=context) results = {} for pricelist in self.browse(cr, uid, ids, context=context): - subres = self._price_get_multi(cr, uid, pricelist, products_by_qty_by_partner, context=context) + subres = self._price_rule_get_multi(cr, uid, pricelist, products_by_qty_by_partner, context=context) for product_id,price in subres.items(): results.setdefault(product_id, {}) results[product_id][pricelist.id] = price return results def _price_get_multi(self, cr, uid, pricelist, products_by_qty_by_partner, context=None): + return dict((key, price[0]) for key, price in self._price_rule_get_multi(cr, uid, pricelist, products_by_qty_by_partner, context=context).items()) + + def _price_rule_get_multi(self, cr, uid, pricelist, products_by_qty_by_partner, context=None): context = context or {} date = context.get('date') or time.strftime('%Y-%m-%d') @@ -243,6 +249,7 @@ class product_pricelist(osv.osv): uom_price_already_computed = False results[product.id] = 0.0 price = False + rule_id = False for rule in items: if rule.min_quantity and qty 0: + field_name = price_type_obj.browse(cr, uid, item_base).field product = product_obj.browse(cr, uid, product_id, context) product_read = product_obj.read(cr, uid, [product_id], [field_name], context=context)[0] @@ -74,13 +79,14 @@ class sale_order_line(osv.osv): return res product = product_obj.browse(cr, uid, product, context) - list_price = pricelist_obj.price_get(cr, uid, [pricelist], - product.id, qty or 1.0, partner_id, {'uom': uom,'date': date_order }) + pricelist_context = dict(context, uom=uom, date=date_order) + list_price = pricelist_obj.price_rule_get(cr, uid, [pricelist], + product.id, qty or 1.0, partner_id, context=pricelist_context) so_pricelist = pricelist_obj.browse(cr, uid, pricelist, context=context) new_list_price = get_real_price(list_price, product.id, qty, uom, pricelist) - if so_pricelist.visible_discount and list_price[pricelist] != 0 and new_list_price != 0: + if so_pricelist.visible_discount and list_price[pricelist][0] != 0 and new_list_price != 0: if product.company_id and so_pricelist.currency_id.id != product.company_id.currency_id.id: # new_list_price is in company's currency while price in pricelist currency ctx = context.copy()