diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index de0a52fd990..4f80bf1a54f 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -1064,3 +1064,20 @@ class WebsiteSale(http.Controller): states=[(st.id, st.name, st.code) for st in country.get_website_sale_states(mode=mode)], phone_code=country.phone_code ) + + @http.route(['/shop/update_carrier'], type='json', auth='public', methods=['POST'], website=True, csrf=False) + def update_eshop_carrier(self, **post): + results = {} + if hasattr(self, '_update_website_sale_delivery'): + results.update(self._update_website_sale_delivery(**post)) + + if hasattr(self, '_update_website_sale_coupon'): + results.update(self._update_website_sale_coupon(**post)) + + return results + + def _format_amount(self, amount, currency): + fmt = "%.{0}f".format(currency.decimal_places) + lang = request.env['res.lang']._lang_get(request.env.context.get('lang') or 'en_US') + return lang.format(fmt, currency.round(amount), grouping=True, monetary=True)\ + .replace(r' ', u'\N{NO-BREAK SPACE}').replace(r'-', u'-\N{ZERO WIDTH NO-BREAK SPACE}') diff --git a/addons/website_sale_delivery/controllers/main.py b/addons/website_sale_delivery/controllers/main.py index 52522fa8117..a7b7d41998b 100644 --- a/addons/website_sale_delivery/controllers/main.py +++ b/addons/website_sale_delivery/controllers/main.py @@ -55,8 +55,7 @@ class WebsiteSaleDelivery(WebsiteSale): values['delivery_action_id'] = request.env.ref('delivery.action_delivery_carrier_form').id return values - @http.route(['/shop/update_carrier'], type='json', auth='public', methods=['POST'], website=True, csrf=False) - def update_eshop_carrier(self, **post): + def _update_website_sale_delivery(self, **post): order = request.website.sale_get_order() carrier_id = int(post['carrier_id']) currency = order.currency_id @@ -70,10 +69,4 @@ class WebsiteSaleDelivery(WebsiteSale): 'new_amount_tax': self._format_amount(order.amount_tax, currency), 'new_amount_total': self._format_amount(order.amount_total, currency), } - - def _format_amount(self, amount, currency): - fmt = "%.{0}f".format(currency.decimal_places) - lang = request.env['res.lang']._lang_get(request.env.context.get('lang') or 'en_US') - - return lang.format(fmt, currency.round(amount), grouping=True, monetary=True)\ - .replace(r' ', u'\N{NO-BREAK SPACE}').replace(r'-', u'-\N{ZERO WIDTH NO-BREAK SPACE}') + return {} diff --git a/addons/website_sale_delivery/i18n/website_sale_delivery.pot b/addons/website_sale_delivery/i18n/website_sale_delivery.pot index 5396f763242..493a252f3bf 100644 --- a/addons/website_sale_delivery/i18n/website_sale_delivery.pot +++ b/addons/website_sale_delivery/i18n/website_sale_delivery.pot @@ -94,7 +94,10 @@ msgid "FedEx Delivery Methods" msgstr "" #. module: website_sale_delivery +#. openerp-web +#: code:addons/website_sale_delivery/static/src/js/website_sale_delivery.js:27 #: model:ir.ui.view,arch_db:website_sale_delivery.payment_delivery +#, python-format msgid "Free" msgstr "" diff --git a/addons/website_sale_delivery/static/src/js/website_sale_delivery.js b/addons/website_sale_delivery/static/src/js/website_sale_delivery.js index 971e604d1d1..79c70becf98 100644 --- a/addons/website_sale_delivery/static/src/js/website_sale_delivery.js +++ b/addons/website_sale_delivery/static/src/js/website_sale_delivery.js @@ -3,6 +3,8 @@ odoo.define('website_sale_delivery.checkout', function (require) { require('web.dom_ready'); var ajax = require('web.ajax'); + var core = require('web.core'); + var _t = core._t; /* Handle interactive carrier choice + cart update */ var $pay_button = $('#o_payment_form_pay'); @@ -14,6 +16,17 @@ odoo.define('website_sale_delivery.checkout', function (require) { var $amount_total = $('#order_total span.oe_currency_value'); var $carrier_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .badge.hidden'); var $compute_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .o_delivery_compute'); + var $discount = $('#order_discounted'); + + if ($discount && result.new_amount_order_discounted) { + // Cross module without bridge + // Update discount of the order + $discount.find('.oe_currency_value').text(result.new_amount_order_discounted); + + // We are in freeshipping, so every carrier is Free + $('#delivery_carrier .badge').text(_t('Free')); + } + if (result.status === true) { $amount_delivery.text(result.new_amount_delivery); $amount_untaxed.text(result.new_amount_untaxed);