From 6935d8fc83a388068fc353fdcfc7674213ecbd34 Mon Sep 17 00:00:00 2001 From: snt Date: Fri, 27 Feb 2026 14:58:20 +0100 Subject: [PATCH 1/8] [FIX] website_sale_aplicoop: save draft on checkout button --- .../static/src/js/website_sale.js | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/website_sale_aplicoop/static/src/js/website_sale.js b/website_sale_aplicoop/static/src/js/website_sale.js index 65010d9..b80fde7 100644 --- a/website_sale_aplicoop/static/src/js/website_sale.js +++ b/website_sale_aplicoop/static/src/js/website_sale.js @@ -449,7 +449,7 @@ var tooltipMap = { "save-cart-btn": "save_cart", "reload-cart-btn": "reload_cart", - "confirm-order-btn": "confirm_order", + "confirm-order-btn": "save_cart", "remove-from-cart": "remove_item", }; @@ -634,9 +634,9 @@ if (confirmBtn) { confirmBtn.addEventListener("click", function (e) { - console.log("[CLICK] confirm-order-btn clicked"); + console.log("[CLICK] confirm-order-btn clicked (save draft)"); e.preventDefault(); - self._confirmOrder(); + self._saveOrderDraft(); }); } @@ -1499,10 +1499,14 @@ console.log("[_saveOrderDraft] Starting - this.orderId:", this.orderId); var self = this; + var labels = this._getLabels(); + var cartKey = "eskaera_" + this.orderId + "_cart"; + var storedCart = localStorage.getItem(cartKey); + var cart = storedCart ? JSON.parse(storedCart) : this.cart; var items = []; - Object.keys(this.cart).forEach(function (productId) { - var item = self.cart[productId]; + Object.keys(cart).forEach(function (productId) { + var item = cart[productId]; items.push({ product_id: productId, product_name: item.name, @@ -1527,11 +1531,11 @@ console.log("Response:", data); if (data.success) { - self._showNotification( - "✓ Order saved as draft successfully", - "success", - 5000 - ); + var successMsg = + labels.draft_saved_success || + labels.draft_saved || + "Order saved as draft successfully"; + self._showNotification("\u2713 " + successMsg, "success", 5000); } else if (data.existing_draft) { // A draft already exists - show modal with merge/replace options self._showDraftConflictModal(data); From 2f57a5d14eacd4824277e9bd24dc319d02347497 Mon Sep 17 00:00:00 2001 From: snt Date: Fri, 27 Feb 2026 15:19:41 +0100 Subject: [PATCH 2/8] [IMP] group_order: confirmar sale orders en cron diario --- website_sale_aplicoop/models/group_order.py | 40 +++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/website_sale_aplicoop/models/group_order.py b/website_sale_aplicoop/models/group_order.py index 8090f27..a4da72c 100644 --- a/website_sale_aplicoop/models/group_order.py +++ b/website_sale_aplicoop/models/group_order.py @@ -680,4 +680,44 @@ class GroupOrder(models.Model): order._compute_cutoff_date() order._compute_pickup_date() order._compute_delivery_date() + order._confirm_linked_sale_orders() _logger.info("Cron: Date update completed") + + def _confirm_linked_sale_orders(self): + """Confirm draft/sent sale orders linked to this group order. + + This is triggered by the daily cron so that weekly orders generated + from the website are confirmed automatically once dates are refreshed. + """ + self.ensure_one() + SaleOrder = self.env["sale.order"].sudo() + sale_orders = SaleOrder.search( + [ + ("group_order_id", "=", self.id), + ("state", "in", ["draft", "sent"]), + ] + ) + + if not sale_orders: + _logger.info( + "Cron: No sale orders to confirm for group order %s (%s)", + self.id, + self.name, + ) + return + + _logger.info( + "Cron: Confirming %d sale orders for group order %s (%s)", + len(sale_orders), + self.id, + self.name, + ) + + try: + sale_orders.action_confirm() + except Exception: + _logger.exception( + "Cron: Error confirming sale orders for group order %s (%s)", + self.id, + self.name, + ) From 97dc41d212680a7459a778c93a19844c8814fbc5 Mon Sep 17 00:00:00 2001 From: snt Date: Fri, 27 Feb 2026 15:43:59 +0100 Subject: [PATCH 3/8] [FIX] website_sale_aplicoop: toggle reparto desde carrito --- .../static/src/js/home_delivery.js | 8 ++++++++ website_sale_aplicoop/views/website_templates.xml | 15 +++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/website_sale_aplicoop/static/src/js/home_delivery.js b/website_sale_aplicoop/static/src/js/home_delivery.js index 68de98b..d7d3d5a 100644 --- a/website_sale_aplicoop/static/src/js/home_delivery.js +++ b/website_sale_aplicoop/static/src/js/home_delivery.js @@ -213,6 +213,14 @@ var cartKey = "eskaera_" + this.orderId + "_cart"; localStorage.setItem(cartKey, JSON.stringify(cart)); + // Mantener sincronizado el carrito en memoria (sidebar de tienda) + if (window.groupOrderShop && window.groupOrderShop.cart !== undefined) { + window.groupOrderShop.cart = cart; + if (typeof window.groupOrderShop._updateCartDisplay === "function") { + window.groupOrderShop._updateCartDisplay(); + } + } + // Re-render checkout summary without reloading setTimeout(function () { // Use the global function from checkout_labels.js diff --git a/website_sale_aplicoop/views/website_templates.xml b/website_sale_aplicoop/views/website_templates.xml index c7964df..1300fe1 100644 --- a/website_sale_aplicoop/views/website_templates.xml +++ b/website_sale_aplicoop/views/website_templates.xml @@ -349,6 +349,11 @@ + +