diff --git a/website_sale_aplicoop/controllers/website_sale.py b/website_sale_aplicoop/controllers/website_sale.py index e3fac6b..3d7a051 100644 --- a/website_sale_aplicoop/controllers/website_sale.py +++ b/website_sale_aplicoop/controllers/website_sale.py @@ -260,6 +260,7 @@ class AplicoopWebsiteSale(WebsiteSale): # ============ MISC ============ "items": env_lang._("items"), "added_to_cart": env_lang._("added to cart"), + "out_of_stock": env_lang._("Out of stock"), } return labels diff --git a/website_sale_aplicoop/static/src/js/website_sale.js b/website_sale_aplicoop/static/src/js/website_sale.js index 0acea67..9ccd9f7 100644 --- a/website_sale_aplicoop/static/src/js/website_sale.js +++ b/website_sale_aplicoop/static/src/js/website_sale.js @@ -792,6 +792,19 @@ var quantityInput = form.querySelector(".product-qty"); var quantity = quantityInput ? parseFloat(quantityInput.value) : 1; + // Block add-to-cart if product is flagged out of stock (from template) + var isOutOfStock = + (form.getAttribute("data-out-of-stock") || "false") === "true" || + (cartBtn.getAttribute("data-out-of-stock") || "false") === "true"; + if (isOutOfStock) { + var labels = self._getLabels(); + self._showNotification( + labels.out_of_stock || "Product is out of stock", + "warning" + ); + return; + } + console.log("Adding:", { productId: productId, productName: productName, diff --git a/website_sale_aplicoop/views/website_templates.xml b/website_sale_aplicoop/views/website_templates.xml index 9b3bd20..c5cdb78 100644 --- a/website_sale_aplicoop/views/website_templates.xml +++ b/website_sale_aplicoop/views/website_templates.xml @@ -666,7 +666,16 @@ -
+
@@ -677,8 +686,14 @@ -