[FIX] website_sale_aplicoop: Arreglar botón Home Delivery en shop (añadir/remover producto de entrega al carrito)

This commit is contained in:
snt 2026-02-26 15:12:06 +01:00
parent 4a668b3240
commit 130a5ff6c4
3 changed files with 79 additions and 52 deletions

View file

@ -14,10 +14,13 @@
homeDeliveryEnabled: false,
init: function () {
// Get delivery product info from data attributes
// Get delivery product info from data attributes (from checkout or shop page)
var checkoutPage = document.querySelector(".eskaera-checkout-page");
if (checkoutPage) {
this.deliveryProductId = checkoutPage.getAttribute("data-delivery-product-id");
var shopPage = document.querySelector(".eskaera-shop-page");
var page = checkoutPage || shopPage;
if (page) {
this.deliveryProductId = page.getAttribute("data-delivery-product-id");
console.log(
"[HomeDelivery] deliveryProductId from attribute:",
this.deliveryProductId,
@ -25,13 +28,13 @@
typeof this.deliveryProductId
);
var price = checkoutPage.getAttribute("data-delivery-product-price");
var price = page.getAttribute("data-delivery-product-price");
if (price) {
this.deliveryProductPrice = parseFloat(price);
}
// Get translated product name from data attribute (auto-translated by Odoo server)
var productName = checkoutPage.getAttribute("data-delivery-product-name");
var productName = page.getAttribute("data-delivery-product-name");
if (productName) {
this.deliveryProductName = productName;
console.log(
@ -41,13 +44,15 @@
}
// Check if home delivery is enabled for this order
var homeDeliveryAttr = checkoutPage.getAttribute("data-home-delivery-enabled");
var homeDeliveryAttr = page.getAttribute("data-home-delivery-enabled");
this.homeDeliveryEnabled =
homeDeliveryAttr === "true" || homeDeliveryAttr === "True";
console.log("[HomeDelivery] Home delivery enabled:", this.homeDeliveryEnabled);
// Show/hide home delivery section based on configuration
this.toggleHomeDeliverySection();
// Show/hide home delivery section based on configuration (only on checkout)
if (checkoutPage) {
this.toggleHomeDeliverySection();
}
}
// Get order ID from confirm button
@ -73,6 +78,52 @@
// Check if delivery product is already in cart on page load
this.checkDeliveryInCart();
// Vincular botón Home Delivery en el shop (cart header)
this.bindShopHomeDeliveryButton();
},
bindShopHomeDeliveryButton: function () {
var self = this;
var homeDeliveryBtn = document.getElementById("home-delivery-btn");
if (homeDeliveryBtn) {
console.log("[HomeDelivery] Binding shop home delivery button");
homeDeliveryBtn.addEventListener("click", function () {
var cart = self.getCart();
var isInCart = cart[self.deliveryProductId];
if (isInCart) {
// Remove delivery product
console.log("[HomeDelivery] Removing delivery product from shop cart");
self.removeDeliveryProduct();
homeDeliveryBtn.classList.remove("active", "btn-warning");
homeDeliveryBtn.classList.add("btn-outline-warning");
} else {
// Add delivery product
console.log("[HomeDelivery] Adding delivery product from shop cart");
self.addDeliveryProduct();
homeDeliveryBtn.classList.remove("btn-outline-warning");
homeDeliveryBtn.classList.add("active", "btn-warning");
}
// Trigger cart reload to update UI
if (typeof window.renderCheckoutSummary === "function") {
window.renderCheckoutSummary();
}
});
// Set initial button state
var cart = self.getCart();
if (cart[self.deliveryProductId]) {
homeDeliveryBtn.classList.add("active", "btn-warning");
homeDeliveryBtn.classList.remove("btn-outline-warning");
} else {
homeDeliveryBtn.classList.add("btn-outline-warning");
homeDeliveryBtn.classList.remove("active", "btn-warning");
}
}
},
toggleHomeDeliverySection: function () {
@ -133,48 +184,10 @@
localStorage.setItem(cartKey, JSON.stringify(cart));
// Re-render checkout summary without reloading
var self = this;
setTimeout(function () {
// Use the global function from checkout_labels.js
if (typeof window.renderCheckoutSummary === "function") {
window.renderCheckoutSummary();
// Vincular botón Entrega a Casa en carrito (shop)
var homeDeliveryBtn = document.getElementById("home-delivery-btn");
if (homeDeliveryBtn) {
homeDeliveryBtn.addEventListener("click", function () {
// Simular click en checkbox de checkout si existe
if (checkbox) {
checkbox.checked = !checkbox.checked;
var event = new Event("change", { bubbles: true });
checkbox.dispatchEvent(event);
} else {
// Alternar home delivery en localStorage/cart
// Aquí puedes implementar lógica para shop
console.log("[HomeDelivery] Toggle home delivery from cart header");
// TODO: Actualizar carrito y mostrar info
}
});
}
}
// Cargar borrador automáticamente al entrar en shop
var cartPage = document.querySelector(".eskaera-shop-page");
if (cartPage) {
var orderId = cartPage.getAttribute("data-order-id") || this.orderId;
var cartKey = "eskaera_" + orderId + "_cart";
var savedCart = localStorage.getItem(cartKey);
if (savedCart) {
try {
var cart = JSON.parse(savedCart);
var event = new CustomEvent("cartLoaded", { detail: { cart: cart } });
document.dispatchEvent(event);
console.log("[SHOP AUTO-LOAD] Cart loaded from localStorage");
} catch (e) {
console.error("[SHOP AUTO-LOAD] Error parsing cart:", e);
}
} else {
console.log("[SHOP AUTO-LOAD] No cart found in localStorage");
}
}
}, 50);
},