diff --git a/addons/website_sale_delivery/controllers/main.py b/addons/website_sale_delivery/controllers/main.py
index db8b9309951..d90cb31f636 100644
--- a/addons/website_sale_delivery/controllers/main.py
+++ b/addons/website_sale_delivery/controllers/main.py
@@ -77,9 +77,9 @@ class WebsiteSaleDelivery(WebsiteSale):
def order_2_return_dict(self, order):
""" Returns the tracking_cart dict of the order for Google analytics """
ret = super(WebsiteSaleDelivery, self).order_2_return_dict(order)
- for line in order.order_line:
- if line.is_delivery:
- ret['transaction']['shipping'] = line.price_unit
+ delivery_line = order.order_line.filtered('is_delivery')
+ if delivery_line:
+ ret['shipping'] = delivery_line.price_unit
return ret
def _get_shop_payment_values(self, order, **kwargs):
diff --git a/addons/website_sale_product_configurator/static/src/js/website_sale_options.js b/addons/website_sale_product_configurator/static/src/js/website_sale_options.js
index 7524a6d916e..d95ea5bcfe3 100644
--- a/addons/website_sale_product_configurator/static/src/js/website_sale_options.js
+++ b/addons/website_sale_product_configurator/static/src/js/website_sale_options.js
@@ -80,6 +80,28 @@ publicWidget.registry.WebsiteSale.include({
* @param {Boolean} goToShop Triggers a page refresh to the url "shop/cart"
*/
_onModalSubmit: function (goToShop) {
+ const $product = $('#product_detail');
+ let currency;
+ if ($product.length) {
+ currency = $product.data('product-tracking-info')['currency'];
+ } else {
+ // Add to cart from /shop page
+ currency = this.$('[itemprop="priceCurrency"]').first().text();
+ }
+ const productsTrackingInfo = [];
+ this.$('.js_product.in_cart').each((i, el) => {
+ productsTrackingInfo.push({
+ 'item_id': el.getElementsByClassName('product_id')[0].value,
+ 'item_name': el.getElementsByClassName('product_display_name')[0].textContent,
+ 'quantity': el.getElementsByClassName('js_quantity')[0].value,
+ 'currency': currency,
+ 'price': el.getElementsByClassName('oe_price')[0].getElementsByClassName('oe_currency_value')[0].textContent,
+ });
+ });
+ if (productsTrackingInfo) {
+ this.$el.trigger('add_to_cart_event', productsTrackingInfo);
+ }
+
this.optionalProductsModal.getAndCreateSelectedProducts()
.then((products) => {
const productAndOptions = JSON.stringify(products);
diff --git a/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js b/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js
index 075dfc9216f..794285079d6 100644
--- a/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js
+++ b/addons/website_sale_wishlist/static/src/js/website_sale_wishlist.js
@@ -173,12 +173,18 @@ publicWidget.registry.ProductWishlist = publicWidget.Widget.extend(VariantMixin,
/**
* @private
*/
- _addToCart: function (productID, qty_id) {
+ _addToCart: function (productID, qty) {
+ const $tr = this.$(`tr[data-product-id="${productID}"]`);
+ const productTrackingInfo = $tr.data('product-tracking-info');
+ if (productTrackingInfo) {
+ productTrackingInfo.quantity = qty;
+ $tr.trigger('add_to_cart_event', [productTrackingInfo]);
+ }
return this._rpc({
route: "/shop/cart/update_json",
params: {
product_id: parseInt(productID, 10),
- add_qty: parseInt(qty_id, 10),
+ add_qty: parseInt(qty, 10),
display: false,
},
}).then(function (resp) {
diff --git a/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml b/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml
index 6e30644e46b..f59b0db7aa7 100644
--- a/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml
+++ b/addons/website_sale_wishlist/views/website_sale_wishlist_template.xml
@@ -163,7 +163,9 @@