diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 6d57b25ad29..61c5c925269 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -603,6 +603,11 @@ class WebsiteSale(http.Controller): assert layout_mode in ('grid', 'list'), "Invalid shop layout mode" request.session['website_sale_shop_layout_mode'] = layout_mode + @http.route(['/shop/cart/quantity'], type='json', auth="public", methods=['POST'], website=True, csrf=False) + def cart_quantity(self): + cart = request.website.sale_get_order() + return cart and cart.cart_quantity or 0 + # ------------------------------------------------------ # Checkout # ------------------------------------------------------ diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index c2cb2d2ef63..194c3cd627b 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -21,6 +21,13 @@ publicWidget.registry.websiteSaleCartLink = publicWidget.Widget.extend({ init: function () { this._super.apply(this, arguments); this._popoverRPC = null; + this._onVisibilityChange = this._onVisibilityChange.bind(this); + }, + /** + * @override + */ + willStart() { + return Promise.all([this._super.apply(this, arguments), this._updateCartQuantityValue()]); }, /** * @override @@ -37,8 +44,17 @@ publicWidget.registry.websiteSaleCartLink = publicWidget.Widget.extend({ placement: 'auto', template: '