diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 6ac35964bb3..7666a8bb5e0 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -202,11 +202,12 @@ class website_sale(http.Controller): cr, uid, context, pool = request.cr, request.uid, request.context, request.registry category_obj = pool['product.public.category'] template_obj = pool['product.template'] + currency_obj = pool['res.currency'] context.update(active_id=product.id) if category: - category = category_obj.browse(request.cr, request.uid, int(category), context=request.context) + category = category_obj.browse(cr, uid, int(category), context=context) attrib_list = request.httprequest.args.getlist('attrib') attrib_values = [map(int,v.split("-")) for v in attrib_list if v] @@ -220,13 +221,23 @@ class website_sale(http.Controller): if not context.get('pricelist'): context['pricelist'] = int(self.get_pricelist()) - product = template_obj.browse(request.cr, request.uid, int(product), context=context) + product = template_obj.browse(cr, uid, int(product), context=context) optional_product_ids = [] for p in product.optional_product_ids: ctx = dict(context, active_id=p.id) optional_product_ids.append(template_obj.browse(cr, uid, p.id, context=ctx)) + attribute_value_ids = [] + if request.website.company_pricelist_id.id != context['pricelist']: + company_currency_id = request.website.company_currency_id.id + currency_id = self.get_pricelist().currency_id.id + for p in product.product_variant_ids: + price = currency_obj.compute(cr, uid, company_currency_id, currency_id, p.lst_price) + attribute_value_ids.append([p.id, map(int, p.attribute_value_ids), p.price, price]) + else: + attribute_value_ids = [[p.id, map(int, p.attribute_value_ids), p.price, p.lst_price] for p in product.product_variant_ids] + values = { 'search': search, 'category': category, @@ -237,7 +248,8 @@ class website_sale(http.Controller): 'category_list': category_list, 'main_object': product, 'product': product, - 'optional_product_ids': optional_product_ids + 'optional_product_ids': optional_product_ids, + 'attribute_value_ids': attribute_value_ids } return request.website.render("website_sale.product", values) diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py index 998916e5bae..0715c01ba45 100644 --- a/addons/website_sale/models/sale_order.py +++ b/addons/website_sale/models/sale_order.py @@ -171,7 +171,9 @@ class website(orm.Model): _columns = { 'pricelist_id': fields.related('user_id','partner_id','property_product_pricelist', type='many2one', relation='product.pricelist', string='Default pricelist'), - 'company_currency_id': fields.related('company_id','partner_id','property_product_pricelist','currency_id', + 'company_pricelist_id': fields.related('company_id','partner_id','property_product_pricelist', + type='many2one', relation='product.pricelist', string='Default pricelist'), + 'company_currency_id': fields.related('company_pricelist_id','currency_id', type='many2one', relation='res.currency', string='Default pricelist'), } diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index 7543b12409a..f9ac456ff4e 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -76,11 +76,18 @@ $(document).ready(function () { $('.css_attribute_color:has(input:checked)').addClass("active"); }); + function price_to_str(price) { + price = Math.round(price * 100) / 100; + var dec = Math.round((price % 1) * 100); + return price + (dec ? '' : '.0') + (dec%10 ? '' : '0'); + } + $('input.js_variant_change, select.js_variant_change').change(function (ev) { var $ul = $(this).parents('ul.js_add_cart_variants:first'); var $parent = $ul.parents('.js_product:first'); var $porduct_id = $parent.find('input.product_id, input.optional_product_id').first(); - var $price = $parent.find(".oe_price .oe_currency_value:first"); + var $price = $parent.find(".oe_price:first .oe_currency_value"); + var $default_price = $parent.find(".oe_default_price:first .oe_currency_value"); var variant_ids = $ul.data("attribute_value_ids"); var values = []; $parent.find('input.js_variant_change:checked, select.js_variant_change').each(function () { @@ -92,8 +99,9 @@ $(document).ready(function () { var product_id = false; for (var k in variant_ids) { if (_.isEqual(variant_ids[k][1], values)) { - var dec = Math.round((variant_ids[k][2] % 1) * 100); - $price.html(variant_ids[k][2] + (dec ? '' : '.0') + (dec%10 ? '' : '0')); + $price.html(price_to_str(variant_ids[k][2])); + $default_price.html(price_to_str(variant_ids[k][3])); + $default_price.parent().toggle(variant_ids[k][3]-variant_ids[k][2]>0.2); product_id = variant_ids[k][0]; break; } diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index 4704908f100..a86fa847660 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -430,19 +430,18 @@ - -
-
@@ -569,15 +568,13 @@