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 @@
+
| Subtotal |
@@ -582,4 +584,47 @@
+
+
+
+ | Subtotal |
+
+
+ |
+
+
+
+
+ |
+
+ on
+ |
+
+
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+ | Total |
+
+
+ |
+
+
+
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,
}
}
});