From a4839250059fae1f47b5e3327005273183722831 Mon Sep 17 00:00:00 2001 From: snt Date: Fri, 27 Feb 2026 13:43:56 +0100 Subject: [PATCH] demo files --- website_sale_aplicoop/__manifest__.py | 14 + website_sale_aplicoop/demo/README.md | 247 ++++++++++++ .../demo/account_tax_demo.xml | 64 +++ .../demo/group_order_demo.xml | 165 ++++++++ website_sale_aplicoop/demo/product_demo.xml | 365 ++++++++++++++++++ .../demo/res_partner_demo.xml | 134 +++++++ .../demo/res_partner_suppliers_demo.xml | 85 ++++ .../demo/sale_order_demo.xml | 265 +++++++++++++ .../models/product_extension.py | 4 +- .../static/src/js/home_delivery.js | 72 +++- 10 files changed, 1391 insertions(+), 24 deletions(-) create mode 100644 website_sale_aplicoop/demo/README.md create mode 100644 website_sale_aplicoop/demo/account_tax_demo.xml create mode 100644 website_sale_aplicoop/demo/group_order_demo.xml create mode 100644 website_sale_aplicoop/demo/product_demo.xml create mode 100644 website_sale_aplicoop/demo/res_partner_demo.xml create mode 100644 website_sale_aplicoop/demo/res_partner_suppliers_demo.xml create mode 100644 website_sale_aplicoop/demo/sale_order_demo.xml diff --git a/website_sale_aplicoop/__manifest__.py b/website_sale_aplicoop/__manifest__.py index b0cf8d3..296b487 100644 --- a/website_sale_aplicoop/__manifest__.py +++ b/website_sale_aplicoop/__manifest__.py @@ -42,6 +42,20 @@ "views/portal_templates.xml", "views/load_from_history_templates.xml", ], + "demo": [ + # Demo: Account Taxes (must be loaded first) + "demo/account_tax_demo.xml", + # Demo: Partners (Groups and Members) + "demo/res_partner_demo.xml", + # Demo: Suppliers + "demo/res_partner_suppliers_demo.xml", + # Demo: Products and Categories + "demo/product_demo.xml", + # Demo: Group Orders + "demo/group_order_demo.xml", + # Demo: Sale Orders + "demo/sale_order_demo.xml", + ], "i18n": [ "i18n/es.po", "i18n/eu_ES.po", diff --git a/website_sale_aplicoop/demo/README.md b/website_sale_aplicoop/demo/README.md new file mode 100644 index 0000000..03ca16e --- /dev/null +++ b/website_sale_aplicoop/demo/README.md @@ -0,0 +1,247 @@ +# Demo Data - Website Sale Aplicoop + +Este directorio contiene datos de demostración completos para el addon `website_sale_aplicoop`, diseñados para mostrar todas las funcionalidades del sistema de pedidos colaborativos (eskaera) para cooperativas de consumo. + +## Contenido de los Archivos Demo + +### 1. `res_partner_demo.xml` - Grupos y Miembros + +**Grupos de Consumo (3 grupos):** +- **Garaialde Kooperatiba** (Bilbao) + - Grupo activo con pedidos semanales + - 3 miembros activos + +- **Lamiakada Kontsumoko Taldea** (Donostia) + - Grupo con pedidos quincenales + - 2 miembros activos + +- **Eko Auzolan** (Gasteiz) + - Grupo con pedidos mensuales + - 2 miembros activos + +**Total Miembros:** 7 personas distribuidas entre los 3 grupos + +### 2. `res_partner_suppliers_demo.xml` - Proveedores + +**6 Proveedores Locales:** +- **Baserritarra SL** - Productos frescos locales y de temporada +- **Bio Zikloa Kooperatiba** - Productos ecológicos certificados +- **Artizarra Esnea** - Lácteos artesanales del País Vasco +- **Hiruki Kontserbak** - Conservas y productos elaborados artesanales +- **Ekotalde Barazkiak** - Verduras eco de km 0 +- **Auzoko Okindegia** - Pan artesano y repostería tradicional vasca + +Todos los proveedores tienen `supplier_rank > 0` y pueden ser asignados a group orders. + +### 3. `product_demo.xml` - Productos y Categorías + +**Categorías de Producto:** +- Fruta Fresca +- Verdura Fresca +- Lácteos +- Pan y Repostería +- Conservas + +**13 Productos Demo:** + +| Código | Nombre | Categoría | Proveedor(es) | Precio/€ | +|-------------|-------------------------------|-----------------|------------------------|----------| +| MANZ-ECO | Manzana Ecológica | Fruta | Baserritarra | 2.50/kg | +| NARA-VAL | Naranja Valenciana | Fruta | Bio Zikloa | 2.80/kg | +| PLAT-CAN | Plátano de Canarias | Fruta | Bio Zikloa | 3.20/kg | +| TOMA-ECO | Tomate Ecológico | Verdura | Baserritarra | 3.50/kg | +| LECH-KM0 | Lechuga Km 0 | Verdura | Ekotalde | 1.50/ud | +| PIMI-VER | Pimiento Verde | Verdura | Ekotalde | 4.20/kg | +| LECH-ENT | Leche Entera Artesana | Lácteos | Artizarra | 1.80/L | +| YOGU-NAT | Yogur Natural (Pack 4) | Lácteos | Artizarra | 3.20/ud | +| QUES-IDI | Queso Idiazabal D.O. | Lácteos | Artizarra | 25.00/kg | +| PAN-INT | Pan Integral Artesano | Pan/Repostería | Auzoko Okindegia | 3.50/kg | +| POST-GOX | Goxua (6 unidades) | Pan/Repostería | Auzoko Okindegia | 8.50/ud | +| CONS-BON | Bonito del Norte en Aceite | Conservas | Hiruki | 12.50/ud | +| CONS-PIQ | Pimientos del Piquillo D.O. | Conservas | Hiruki | 5.80/ud | + +**Plus:** +- `SRV-DELIV` - Servicio de Envío a Domicilio (5.00€/servicio) + +Todos los productos incluyen: +- Configuración de impuestos (IVA 4%, 10% o 21% según corresponda) +- Información de proveedor (precio, cantidad mínima, plazo de entrega) +- Unidades de medida apropiadas (kg, L, unidad) + +### 4. `group_order_demo.xml` - Pedidos de Grupo + +**8 Group Orders con diferentes configuraciones:** + +1. **Eskaera Astekaria Garaialde** (ACTIVO) + - Tipo: Regular (weekly) + - Grupo: Garaialde + - Pickup: Viernes / Cutoff: Jueves + - Home delivery: SÍ + - Proveedores: Baserritarra, Ekotalde, Artizarra, Okindegia + - Categorías: Frutas, Verduras, Lácteos, Pan + +2. **Eskaera Hamabostaldia Lamiakada** (ACTIVO) + - Tipo: Regular (biweekly) + - Grupo: Lamiakada + - Pickup: Sábado / Cutoff: Viernes + - Home delivery: NO + - Proveedores: Bio Zikloa, Hiruki + - Categorías: Frutas, Conservas + +3. **Eskaera Hilabetekoa Eko Auzolan** (ACTIVO) + - Tipo: Regular (monthly) + - Grupo: Eko Auzolan + - Pickup: Lunes / Cutoff: Domingo + - Home delivery: SÍ + - Productos específicos: Queso Idiazabal, Bonito, Pimientos Piquillo + +4. **Eskaera Berezia - Denboraldia** (ACTIVO - Temporal) + - Tipo: Special (once) + - Grupos: Garaialde + Lamiakada + - Duración: 14 días + - Productos de temporada: Tomate, Pimiento, Lechuga + +5. **Eskaera Promozionala - Gabonak** (FUTURO) + - Tipo: Promotional (once) + - Grupos: Los 3 grupos + - Inicio: +5 días / Fin: +21 días + - Productos: Goxua, Queso Idiazabal, Bonito + +6. **Eskaera Astekaria (Itxita)** (CERRADO - Histórico) + - Ejemplo de pedido histórico finalizado + - Útil para testing de históricos + +7. **Eskaera Kolektiboa - Ekintza Elkartua** (MULTI-GRUPO) + - Los 3 grupos participan + - Productos excluidos: Plátano de Canarias (demo de blacklist) + +8. **Eskaera Urtekoa - Produktu Iraunkorra** (CON EXCLUSIONES) + - Demo de funcionalidad de blacklist + - Excluye: Pimientos del Piquillo + +### 5. `sale_order_demo.xml` - Pedidos de Venta + +**9 Sale Orders** asociados a diferentes group orders y miembros: + +**Estado CONFIRMED (sale):** +- Ane García: 4 líneas (frutas, verduras, leche, pan) - Pickup en tienda +- Mikel Lopez: 3 líneas + delivery - Con envío a domicilio ✓ +- Jon Fernández: 3 líneas (conservas, frutas) +- Unai Sánchez: 3 líneas + delivery - Pedido mensual + +**Estado DRAFT:** +- Leire Martínez: 2 líneas (naranjas, queso) +- Amaia Méndez: 1 línea (naranjas) +- Ainhoa Rodríguez: 1 línea (conservas) +- Ane García (especial): 3 líneas - Pedido de temporada + +**Características destacadas:** +- Mezcla de pedidos confirmados y en borrador +- Algunos con home_delivery=True (incluyen producto de delivery) +- Diferentes fechas de pickup según el group order +- Cantidades realistas y variadas + +## Instalación y Uso + +### Instalación Básica (Sin Demo) + +```bash +docker-compose run odoo odoo -d odoo -i website_sale_aplicoop --stop-after-init +``` + +### Instalación con Datos Demo + +```bash +docker-compose run odoo odoo -d odoo -i website_sale_aplicoop --load-language=es_ES --load-language=eu_ES --stop-after-init --demo=True +``` + +O desde la UI de Odoo: +1. Apps > Buscar "Website Sale - Aplicoop" +2. Asegurarse de que la base de datos tiene demo data habilitado +3. Instalar el módulo + +### Acceso a los Datos Demo + +**Backend (Odoo):** +- Ventas > Órdenes > Consumer Group Orders +- Contactos > Filtrar por "Is a Consumer Group" +- Productos > Ver productos demo con prefijos MANZ-, NARA-, etc. + +**Frontend (Website):** +1. Ir a `/shop/eskaera` +2. Los group orders estarán visibles según permisos +3. Hacer login como uno de los miembros demo para probar el flujo completo + +### Usuarios Demo Recomendados + +Para testing, crear usuarios de Odoo asociados a estos partners: +- `ane.garcia@example.com` (Garaialde - Pedido semanal) +- `jon.fernandez@example.com` (Lamiakada - Pedido quincenal) +- `unai.sanchez@example.com` (Eko Auzolan - Pedido mensual) + +## Casos de Uso Cubiertos + +Los datos demo permiten probar: + +✅ **Flujos básicos:** +- Crear/editar/confirmar pedidos individuales +- Añadir productos al carrito de eskaera +- Seleccionar home delivery +- Ver fechas de pickup y cutoff + +✅ **Configuraciones variadas:** +- Pedidos semanales, quincenales, mensuales +- Pedidos especiales (one-time) +- Pedidos promocionales con fechas futuras +- Multi-grupo (varios grupos en un pedido) + +✅ **Filtrado de productos:** +- Por proveedores +- Por categorías +- Por productos específicos +- Con exclusiones (blacklist) + +✅ **Gestión de grupos:** +- Múltiples grupos de diferentes ciudades +- Miembros con diferentes patrones de compra +- Asociaciones grupo-miembro + +✅ **Reportes y análisis:** +- Pedidos históricos (cerrados) +- Pedidos activos con diferentes estados +- Datos para testing de lazy loading +- Datos para testing de date calculations + +## Mantenimiento + +Para regenerar o actualizar los datos demo: + +```bash +# Limpiar base de datos +docker-compose run odoo odoo -d odoo --init=website_sale_aplicoop --demo=True --stop-after-init + +# O actualizar solo el módulo +docker-compose run odoo odoo -d odoo -u website_sale_aplicoop --stop-after-init +``` + +## Notas Importantes + +- Los precios incluyen IVA según categoría de producto +- Las fechas de group orders usan `eval` con `DateTime.today()` para ser dinámicas +- Los supplierinfo están correctamente configurados con precios y MOQ +- Todos los partners tienen direcciones completas en España (Euskadi) +- Los códigos de producto siguen un patrón coherente para fácil identificación + +## Contribuir + +Para añadir más datos demo: +1. Seguir la estructura existente +2. Usar XML IDs descriptivos (ej: `product_nombre_descriptivo`) +3. Mantener coherencia en nombres (euskera + castellano) +4. Documentar en este README + +--- + +**Versión:** 18.0.1.7.0 +**Última actualización:** 2026-02-26 +**Autor:** Criptomart diff --git a/website_sale_aplicoop/demo/account_tax_demo.xml b/website_sale_aplicoop/demo/account_tax_demo.xml new file mode 100644 index 0000000..61850f1 --- /dev/null +++ b/website_sale_aplicoop/demo/account_tax_demo.xml @@ -0,0 +1,64 @@ + + + + + + + + + IVA 4% (Demo) + 4.0 + percent + sale + + IVA4 + + + + IVA 4% Compras (Demo) + 4.0 + percent + purchase + + IVA4_P + + + + + IVA 10% (Demo) + 10.0 + percent + sale + + IVA10 + + + + IVA 10% Compras (Demo) + 10.0 + percent + purchase + + IVA10_P + + + + + IVA 21% (Demo) + 21.0 + percent + sale + + IVA21 + + + + IVA 21% Compras (Demo) + 21.0 + percent + purchase + + IVA21_P + + + diff --git a/website_sale_aplicoop/demo/group_order_demo.xml b/website_sale_aplicoop/demo/group_order_demo.xml new file mode 100644 index 0000000..dfec880 --- /dev/null +++ b/website_sale_aplicoop/demo/group_order_demo.xml @@ -0,0 +1,165 @@ + + + + + + + + + Eskaera Astekaria Garaialde + 10 + + regular + + + weekly + 4 + + 3 + + + + + + + + + + + Eskaera Hamabostaldia Lamiakada + 20 + + regular + + + biweekly + 5 + + 4 + + + + + + + + + + Eskaera Hilabetekoa Eko Auzolan + 30 + + regular + + + monthly + 0 + + 6 + + + + + + + + + + + Eskaera Berezia - Denboraldia + 40 + + special + + + once + 5 + + 3 + + + + + + + + + + Eskaera Promozionala - Gabonak + 50 + + promotional + + + once + 4 + + 2 + + + + + + + + + + + Eskaera Astekaria (Itxita) + 100 + + regular + + + weekly + 4 + 3 + + + + + + + + + + Eskaera Kolektiboa - Ekintza Elkartua + 15 + + regular + + + monthly + 6 + + 5 + + + + + + + + + + + + Eskaera Urtekoa - Produktu Iraunkorra + 25 + + regular + + + monthly + 1 + + 0 + + + + + + + + + + diff --git a/website_sale_aplicoop/demo/product_demo.xml b/website_sale_aplicoop/demo/product_demo.xml new file mode 100644 index 0000000..292bb24 --- /dev/null +++ b/website_sale_aplicoop/demo/product_demo.xml @@ -0,0 +1,365 @@ + + + + + + + + Fruta Fresca + + + + + Verdura Fresca + + + + + Lácteos + + + + + Pan y Repostería + + + + + Conservas + + + + + + + + + + Manzana Ecológica + MANZ-ECO + + consu + 2.50 + 1.20 + + + + + + + + + + Naranja Valenciana + NARA-VAL + + consu + 2.80 + 1.50 + + + + + + + + + + Plátano de Canarias + PLAT-CAN + + consu + 3.20 + 1.80 + + + + + + + + + + + Tomate Ecológico + TOMA-ECO + + consu + 3.50 + 1.80 + + + + + + + + + + Lechuga Km 0 + LECH-KM0 + + consu + 1.50 + 0.80 + + + + + + + + + + Pimiento Verde + PIMI-VER + + consu + 4.20 + 2.10 + + + + + + + + + + + Leche Entera Artesana + LECH-ENT + + consu + 1.80 + 1.00 + + + + + + + + + + Yogur Natural (Pack 4) + YOGU-NAT + + consu + 3.20 + 1.80 + + + + + + + + + + Queso Idiazabal D.O. + QUES-IDI + + consu + 25.00 + 15.00 + + + + + + + + + + + Pan Integral Artesano + PAN-INT + + consu + 3.50 + 1.80 + + + + + + + + + + Goxua (6 unidades) + POST-GOX + + consu + 8.50 + 4.50 + + + + + + + + + + + Bonito del Norte en Aceite + CONS-BON + + consu + 12.50 + 7.00 + + + + + + + + + + Pimientos del Piquillo D.O. + CONS-PIQ + + consu + 5.80 + 3.20 + + + + + + + + + + + Servicio de Envío a Domicilio + SRV-DELIV + + service + 5.00 + 0.00 + + + + + + + + + + + + + + + + 1.20 + 10.0 + 2 + + + + + + 1.80 + 5.0 + 2 + + + + + + + 1.50 + 10.0 + 3 + + + + + + 1.80 + 10.0 + 3 + + + + + + + 1.00 + 20.0 + 1 + + + + + + 1.80 + 10.0 + 1 + + + + + + 15.00 + 2.0 + 7 + + + + + + + 1.80 + 5.0 + 1 + + + + + + 4.50 + 2.0 + 1 + + + + + + + 7.00 + 6.0 + 5 + + + + + + 3.20 + 12.0 + 5 + + + + + + + 0.80 + 10.0 + 1 + + + + + + 2.10 + 5.0 + 1 + + + diff --git a/website_sale_aplicoop/demo/res_partner_demo.xml b/website_sale_aplicoop/demo/res_partner_demo.xml new file mode 100644 index 0000000..b5a59eb --- /dev/null +++ b/website_sale_aplicoop/demo/res_partner_demo.xml @@ -0,0 +1,134 @@ + + + + + + + + Garaialde Kooperatiba + + + Garaialde Kalea 1 + Bilbao + 48012 + + garaialde@kooperatiba.eus + +34 944 123 456 + + + + Lamiakada Kontsumoko Taldea + + + Lamia Plaza 5 + Donostia + 20004 + + info@lamiakada.eus + +34 943 234 567 + + + + Eko Auzolan + + + Arrasate Bidea 22 + Gasteiz + 01008 + + kontaktua@ekoauzolan.eus + +34 945 345 678 + + + + + + + + + Ane García Etxebarria + + Autonomia Kalea 15, 3A + Bilbao + 48012 + + ane.garcia@example.com + +34 666 111 222 + + + + + Mikel Lopez Zubizarreta + + Elcano Kalea 8, 2B + Bilbao + 48012 + + mikel.lopez@example.com + +34 666 222 333 + + + + + Leire Martínez Galdos + + Uribitarte Kalea 5, 4D + Bilbao + 48001 + + leire.martinez@example.com + +34 666 333 444 + + + + + + Jon Fernández Iraola + + Zurriola Hiribidea 12, 1A + Donostia + 20002 + + jon.fernandez@example.com + +34 677 111 222 + + + + + Amaia Méndez Etxeberria + + Ategorrieta Kalea 33, 5C + Donostia + 20013 + + amaia.mendez@example.com + +34 677 222 333 + + + + + + Unai Sánchez Alonso + + Portal de Castilla 18, 2A + Gasteiz + 01007 + + unai.sanchez@example.com + +34 688 111 222 + + + + + Ainhoa Rodríguez Pérez + + Florida Kalea 7, 1B + Gasteiz + 01005 + + ainhoa.rodriguez@example.com + +34 688 222 333 + + + + diff --git a/website_sale_aplicoop/demo/res_partner_suppliers_demo.xml b/website_sale_aplicoop/demo/res_partner_suppliers_demo.xml new file mode 100644 index 0000000..98069a7 --- /dev/null +++ b/website_sale_aplicoop/demo/res_partner_suppliers_demo.xml @@ -0,0 +1,85 @@ + + + + + + + + Baserritarra SL + + + Basarte Baserria s/n + Zestoa + 20740 + + pedidos@baserritarra.eus + +34 943 147 258 + Proveedor de productos frescos locales y de temporada + + + + Bio Zikloa Kooperatiba + + + Errekalde Industrialdea 15 + Irun + 20304 + + info@biozikloa.eus + +34 943 625 789 + Productos ecológicos certificados + + + + Artizarra Esnea + + + Aralar Etorbidea 33 + Tolosa + 20400 + + pedidos@artizarra.com + +34 943 654 321 + Lácteos artesanales del País Vasco + + + + Hiruki Kontserbak + + + Industrialdea 8 + Gernika + 48300 + + ventas@hiruki.eus + +34 946 257 412 + Conservas y productos elaborados artesanales + + + + Ekotalde Barazkiak + + + Merkataritza Plaza 2 + Durango + 48200 + + info@ekotalde.eus + +34 946 234 789 + Verduras eco de km 0 + + + + Auzoko Okindegia + + + Elcano Kalea 44 + Bilbao + 48008 + + okindegia@auzokookindegia.eus + +34 944 789 123 + Pan artesano y repostería tradicional vasca + + + diff --git a/website_sale_aplicoop/demo/sale_order_demo.xml b/website_sale_aplicoop/demo/sale_order_demo.xml new file mode 100644 index 0000000..eb44b60 --- /dev/null +++ b/website_sale_aplicoop/demo/sale_order_demo.xml @@ -0,0 +1,265 @@ + + + + + + + + + + + + 4 + + + + sale + + + + + + + + 2.5 + + 2.50 + + + + + + 1.5 + + 3.50 + + + + + + 4.0 + + 1.80 + + + + + + 1.0 + + 3.50 + + + + + + + 4 + + + sale + + + + + + + + 2.0 + + 1.50 + + + + + + 3.0 + + 3.20 + + + + + + 1.0 + + 5.00 + + + + + + + 4 + + + draft + + + + + + + + 3.0 + + 2.80 + + + + + + 0.5 + + 25.00 + + + + + + + 5 + + + sale + + + + + + + + 3.0 + + 12.50 + + + + + + 2.0 + + 5.80 + + + + + + 2.0 + + 3.20 + + + + + + + 5 + + + draft + + + + + + + + 5.0 + + 2.80 + + + + + + + 0 + + + sale + + + + + + + + 1.0 + + 25.00 + + + + + + 6.0 + + 12.50 + + + + + + 1.0 + + 5.00 + + + + + + + 0 + + + draft + + + + + + + + 4.0 + + 5.80 + + + + + + + 5 + + + draft + + + + + + + + 5.0 + + 3.50 + + + + + + 2.0 + + 4.20 + + + + + + 3.0 + + 1.50 + + + diff --git a/website_sale_aplicoop/models/product_extension.py b/website_sale_aplicoop/models/product_extension.py index 6fa1134..defc458 100644 --- a/website_sale_aplicoop/models/product_extension.py +++ b/website_sale_aplicoop/models/product_extension.py @@ -1,12 +1,10 @@ -# Copyright 2025 Criptomart +# Copyright 2025 - Today Criptomart # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) from odoo import api from odoo import fields from odoo import models -# Note: translation function _ is not used in this module (removed to satisfy flake8) - class ProductProduct(models.Model): _inherit = "product.product" diff --git a/website_sale_aplicoop/static/src/js/home_delivery.js b/website_sale_aplicoop/static/src/js/home_delivery.js index 54676d4..68de98b 100644 --- a/website_sale_aplicoop/static/src/js/home_delivery.js +++ b/website_sale_aplicoop/static/src/js/home_delivery.js @@ -20,9 +20,22 @@ var page = checkoutPage || shopPage; if (page) { - this.deliveryProductId = page.getAttribute("data-delivery-product-id"); + var deliveryProductIdStr = page.getAttribute("data-delivery-product-id"); + // Parse to integer, filter out None/empty/invalid values + if ( + deliveryProductIdStr && + deliveryProductIdStr !== "None" && + deliveryProductIdStr !== "" + ) { + this.deliveryProductId = parseInt(deliveryProductIdStr, 10); + if (isNaN(this.deliveryProductId)) { + this.deliveryProductId = null; + } + } console.log( "[HomeDelivery] deliveryProductId from attribute:", + deliveryProductIdStr, + "-> parsed:", this.deliveryProductId, "type:", typeof this.deliveryProductId @@ -55,32 +68,49 @@ } } - // Get order ID from confirm button + // Get order ID from multiple possible sources var confirmBtn = document.getElementById("confirm-order-btn"); - if (confirmBtn) { - this.orderId = confirmBtn.getAttribute("data-order-id"); - console.log("[HomeDelivery] orderId from button:", this.orderId); + var cartContainer = document.getElementById("cart-items-container"); + var orderIdElement = confirmBtn || cartContainer; + + if (orderIdElement) { + this.orderId = orderIdElement.getAttribute("data-order-id"); } + // If still not found, try to extract from URL + if (!this.orderId) { + var urlMatch = window.location.pathname.match(/\/eskaera\/(\d+)/); + this.orderId = urlMatch ? urlMatch[1] : null; + } + + console.log("[HomeDelivery] orderId resolved:", this.orderId); + + // Handle checkbox (only exists on checkout page) var checkbox = document.getElementById("home-delivery-checkbox"); - if (!checkbox) return; + if (checkbox) { + var self = this; + checkbox.addEventListener("change", function () { + if (this.checked) { + self.addDeliveryProduct(); + self.showDeliveryInfo(); + } else { + self.removeDeliveryProduct(); + self.hideDeliveryInfo(); + } + }); - var self = this; - checkbox.addEventListener("change", function () { - if (this.checked) { - self.addDeliveryProduct(); - self.showDeliveryInfo(); - } else { - self.removeDeliveryProduct(); - self.hideDeliveryInfo(); - } - }); + // Check if delivery product is already in cart on page load + this.checkDeliveryInCart(); + } - // 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(); + // Vincular botón Home Delivery en el shop SOLO si hay un producto de delivery válido + if (this.deliveryProductId && this.homeDeliveryEnabled) { + this.bindShopHomeDeliveryButton(); + } else { + console.log( + "[HomeDelivery] Shop button NOT bound - no delivery product or disabled" + ); + } }, bindShopHomeDeliveryButton: function () {