diff --git a/addons/sale/i18n/sale.pot b/addons/sale/i18n/sale.pot index d279f88a7ec..b4334b0e18c 100644 --- a/addons/sale/i18n/sale.pot +++ b/addons/sale/i18n/sale.pot @@ -48,6 +48,7 @@ msgstr "" #. module: sale #: model_terms:ir.ui.view,arch_db:sale.report_saleorder_document #: model_terms:ir.ui.view,arch_db:sale.sale_order_portal_content +#: model_terms:ir.ui.view,arch_db:sale.sale_order_portal_content_totals_table msgid " on " msgstr "" @@ -220,6 +221,12 @@ msgstr "" msgid "Sold" msgstr "" +#. module: sale +#: model_terms:ir.ui.view,arch_db:sale.sale_order_portal_content +msgid "Amount\n" +" Total Price" +msgstr "" + #. module: sale #: model_terms:ir.ui.view,arch_db:sale.sale_order_portal_template msgid "Accepted on the behalf of:" @@ -331,6 +338,7 @@ msgstr "" #. module: sale #: model_terms:ir.ui.view,arch_db:sale.report_saleorder_document #: model_terms:ir.ui.view,arch_db:sale.sale_order_portal_content +#: model_terms:ir.ui.view,arch_db:sale.sale_order_portal_content_totals_table msgid "Subtotal" msgstr "" @@ -362,6 +370,7 @@ msgstr "" #. module: sale #: model_terms:ir.ui.view,arch_db:sale.report_saleorder_document #: model_terms:ir.ui.view,arch_db:sale.sale_order_portal_content +#: model_terms:ir.ui.view,arch_db:sale.sale_order_portal_content_totals_table msgid "Total" msgstr "" @@ -3062,6 +3071,11 @@ msgstr "" msgid "Sell and purchase products in different units of measure" msgstr "" +#. module: sale +#: model:ir.model.fields,field_description:sale.field_res_config_settings__module_website_sale_digital +msgid "Sell digital products - provide downloadable content on your customer portal" +msgstr "" + #. module: sale #: model_terms:ir.ui.view,arch_db:sale.res_config_settings_view_form msgid "Sell products by multiple of unit # per package" diff --git a/addons/sale/views/sale_portal_templates.xml b/addons/sale/views/sale_portal_templates.xml index 1000b14411f..8c794f50866 100644 --- a/addons/sale/views/sale_portal_templates.xml +++ b/addons/sale/views/sale_portal_templates.xml @@ -127,7 +127,7 @@ -

+

    @@ -167,14 +167,15 @@ + class="d-block mt-1" + data-id="amount_undiscounted" /> -

    +

    -

    - ( Incl. tax) +

    + ( Incl. tax) @@ -519,6 +520,7 @@
    + @@ -582,4 +584,47 @@ + diff --git a/addons/sale_management/controllers/portal.py b/addons/sale_management/controllers/portal.py index 1796beb7223..eb4e945b8d3 100644 --- a/addons/sale_management/controllers/portal.py +++ b/addons/sale_management/controllers/portal.py @@ -47,14 +47,21 @@ class CustomerPortal(CustomerPortal): currency = order_sudo.currency_id format_price = partial(formatLang, request.env, digits=currency.decimal_places) - return { + results = { 'order_line_product_uom_qty': str(quantity), 'order_line_price_total': format_price(order_line.price_total), 'order_line_price_subtotal': format_price(order_line.price_subtotal), 'order_amount_total': format_price(order_sudo.amount_total), 'order_amount_untaxed': format_price(order_sudo.amount_untaxed), 'order_amount_tax': format_price(order_sudo.amount_tax), + 'order_amount_undiscounted': format_price(order_sudo.amount_undiscounted), } + try: + results['order_totals_table'] = request.env['ir.ui.view'].render_template('sale.sale_order_portal_content_totals_table', {'sale_order': order_sudo}) + except ValueError: + pass + + return results @http.route(["/my/orders//add_option/"], type='http', auth="public", website=True) def add(self, order_id, option_id, access_token=None, **post): diff --git a/addons/sale_management/static/src/js/sale_management.js b/addons/sale_management/static/src/js/sale_management.js index 88b956e0e6e..98484d40f03 100644 --- a/addons/sale_management/static/src/js/sale_management.js +++ b/addons/sale_management/static/src/js/sale_management.js @@ -39,7 +39,7 @@ if (!$('.o_portal_sale_sidebar').length) { var order_id = href.match(/my\/orders\/([0-9]+)/); var line_id = href.match(/update_line\/([0-9]+)/); var params = { - 'line_id': line_id[1], + 'line_id': parseInt(line_id[1]), 'remove': this.$el.is('[href*="remove"]'), 'unlink': this.$el.is('[href*="unlink"]'), 'input_quantity': quantity >= 0 ? quantity : false, @@ -49,6 +49,7 @@ if (!$('.o_portal_sale_sidebar').length) { params.access_token = token; } + order_id = parseInt(order_id[1]) this._callUpdateLineRoute(order_id, params).then(this._updateOrderValues.bind(this)); return false; }, @@ -66,19 +67,20 @@ if (!$('.o_portal_sale_sidebar').length) { * when the quantity of a product has changed * * @private + * @param {integer} order_id * @param {Object} params * @return {Deferred} */ _callUpdateLineRoute: function (order_id, params) { var def = new $.Deferred(); - var url = "/my/orders/" + parseInt(order_id[1]) + "/update_line_dict"; + var url = "/my/orders/" + order_id + "/update_line_dict"; ajax.jsonRpc(url, 'call', params) .then(def.resolve.bind(def)) .fail(function () { // Compatibility: the server may not have been restarted // So the real route may not exist delete params.input_quantity; - ajax.jsonRpc("/quote/update_line", 'call', params) + ajax.jsonRpc("/my/orders/" + order_id + "/update_line", 'call', params) .fail(def.reject.bind(def)) .then(function (data) { // Data is an array, convert it to a dict @@ -108,6 +110,8 @@ if (!$('.o_portal_sale_sidebar').length) { var orderAmountTotal = data.order_amount_total; var orderAmountUntaxed = data.order_amount_untaxed; var orderAmountTax = data.order_amount_tax; + var orderAmountUndiscounted = data.order_amount_undiscounted; + var orderTotalsTable = $(data.order_totals_table); var lineProductUomQty = data.order_line_product_uom_qty; var linePriceTotal = data.order_line_price_total; @@ -129,6 +133,13 @@ if (!$('.o_portal_sale_sidebar').length) { if (orderAmountTotal !== undefined) { this.elems.$orderAmountTotal.text(orderAmountTotal); } + + if (orderAmountUndiscounted !== undefined) { + this.elems.$orderAmountUndiscounted.text(orderAmountUndiscounted); + } + if (orderTotalsTable) { + this.elems.$orderTotalsTable.find('table').replaceWith(orderTotalsTable); + } }, /** * Locate in the DOM the elements to update @@ -147,12 +158,13 @@ if (!$('.o_portal_sale_sidebar').length) { $linePriceTotal = $linePriceSubTotal = $parentTr.find('.oe_currency_value').last(); } - var $orderAmountUntaxed = $('[data-id="total_untaxed"]>span'); - var $orderAmountTotal = $('[data-id="total_amount"]>span'); + var $orderAmountUntaxed = $('[data-id="total_untaxed"]').find('span, b'); + var $orderAmountTotal = $('[data-id="total_amount"]').find('span, b'); + var $orderAmountUndiscounted = $('[data-id="amount_undiscounted"]').find('span, b'); if (!$orderAmountUntaxed.length) { $orderAmountUntaxed = $orderAmountTotal.eq(1); - $orderAmountTotal = $orderAmountTotal.eq(0).add($orderAmountTotal.eq(3)); + $orderAmountTotal = $orderAmountTotal.eq(0).add($orderAmountTotal.eq(2)); } return { @@ -161,6 +173,8 @@ if (!$('.o_portal_sale_sidebar').length) { $linePriceTotal: $linePriceTotal, $orderAmountUntaxed: $orderAmountUntaxed, $orderAmountTotal: $orderAmountTotal, + $orderTotalsTable: $('#total'), + $orderAmountUndiscounted: $orderAmountUndiscounted, } } });
    Subtotal