From eaedf0b421189e74b427ddbb7344dd5968599e18 Mon Sep 17 00:00:00 2001 From: snt Date: Tue, 3 Mar 2026 15:49:19 +0100 Subject: [PATCH] [FIX] website_sale_aplicoop: hard block out-of-stock button --- .../static/src/js/website_sale.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/website_sale_aplicoop/static/src/js/website_sale.js b/website_sale_aplicoop/static/src/js/website_sale.js index 9ccd9f7..b88bbee 100644 --- a/website_sale_aplicoop/static/src/js/website_sale.js +++ b/website_sale_aplicoop/static/src/js/website_sale.js @@ -796,6 +796,24 @@ var isOutOfStock = (form.getAttribute("data-out-of-stock") || "false") === "true" || (cartBtn.getAttribute("data-out-of-stock") || "false") === "true"; + + // Fallback guards in case cached markup drops the data attribute + if (!isOutOfStock) { + var btnTitle = (cartBtn.getAttribute("title") || "").toLowerCase(); + var btnAria = (cartBtn.getAttribute("aria-label") || "").toLowerCase(); + var iconEl = cartBtn.querySelector("i"); + var hasBanIcon = iconEl && iconEl.classList.contains("fa-ban"); + + if ( + hasBanIcon || + btnTitle.includes("out of stock") || + btnTitle.includes("sin stock") || + btnAria.includes("out of stock") || + btnAria.includes("sin stock") + ) { + isOutOfStock = true; + } + } if (isOutOfStock) { var labels = self._getLabels(); self._showNotification(