From 184ede724d7d60489586fe70262da749cf93aa3d Mon Sep 17 00:00:00 2001 From: Unai Beristain Date: Thu, 17 Oct 2024 17:31:25 +0200 Subject: [PATCH] [IMP] website_sale_cart_with_unconfirmed_budget: Remove fork --- .../controllers/website_sale.py | 44 +++++++++++++++++- .../models/sale_order.py | 46 +++++++++++-------- 2 files changed, 69 insertions(+), 21 deletions(-) diff --git a/website_sale_cart_with_unconfirmed_budget/controllers/website_sale.py b/website_sale_cart_with_unconfirmed_budget/controllers/website_sale.py index f55bf691..9d232073 100644 --- a/website_sale_cart_with_unconfirmed_budget/controllers/website_sale.py +++ b/website_sale_cart_with_unconfirmed_budget/controllers/website_sale.py @@ -1,15 +1,31 @@ +import logging + from odoo import fields, http from odoo.http import request from odoo.addons.website_sale.controllers.main import WebsiteSale +_logger = logging.getLogger(__name__) + class WebsiteSale(WebsiteSale): @http.route(["/shop/cart"], type="http", auth="public", website=True, sitemap=False) def cart(self, access_token=None, revive="", **post): + _logger.info( + "Entrando a la función cart con access_token: %s y revive: %s", + access_token, + revive, + ) + + response = super().cart(access_token=access_token, revive=revive, **post) order = request.website.sale_get_order() + if order and order.state != "draft": + _logger.info( + "El pedido tiene un estado diferente de 'draft',\ + reiniciando el ID del pedido en la sesión." + ) request.session["sale_order_id"] = None order = request.website.sale_get_order() @@ -22,14 +38,19 @@ def cart(self, access_token=None, revive="", **post): } if order: + _logger.info("Actualizando valores adicionales para el pedido.") values.update(order._get_website_sale_extra_values()) order.order_line.filtered( lambda line: line.product_id and not line.product_id.active ).unlink() + _logger.info("Productos sugeridos calculados para el pedido.") values["suggested_products"] = order._cart_accessories() values.update(self._get_express_shop_payment_values(order)) - return request.render("website_sale.cart", values) + response.qcontext.update(values) + + _logger.info("Valores de respuesta actualizados: %s", values) + return response @http.route( ["/shop/cart/update"], @@ -48,6 +69,13 @@ def cart_update( express=False, **kwargs ): + _logger.info( + "Actualizando carrito con producto_id: %s, add_qty: %s, set_qty: %s", + product_id, + add_qty, + set_qty, + ) + sale_order = super().cart_update( product_id=product_id, add_qty=add_qty, @@ -59,8 +87,10 @@ def cart_update( ) request.session["website_sale_cart_quantity"] = sale_order.cart_quantity + _logger.info("Cantidad del carrito actualizada a: %s", sale_order.cart_quantity) if express: + _logger.info("Redirigiendo a la página de checkout en modo expreso.") return request.redirect("/shop/checkout?express=1") return request.redirect("/shop/cart") @@ -84,6 +114,15 @@ def cart_update_json( no_variant_attribute_values=None, **kw ): + _logger.info( + "Actualizando carrito (JSON) con producto_id: %s,\ + line_id: %s, add_qty: %s, set_qty: %s", + product_id, + line_id, + add_qty, + set_qty, + ) + values = super().cart_update_json( product_id=product_id, line_id=line_id, @@ -96,5 +135,8 @@ def cart_update_json( ) request.session["website_sale_cart_quantity"] = values.get("cart_quantity", 0) + _logger.info( + "Cantidad del carrito actualizada a: %s", values.get("cart_quantity", 0) + ) return values diff --git a/website_sale_cart_with_unconfirmed_budget/models/sale_order.py b/website_sale_cart_with_unconfirmed_budget/models/sale_order.py index 3b8e76fd..a22bf57a 100644 --- a/website_sale_cart_with_unconfirmed_budget/models/sale_order.py +++ b/website_sale_cart_with_unconfirmed_budget/models/sale_order.py @@ -5,25 +5,31 @@ class SaleOrder(models.Model): _inherit = "sale.order" @api.model - def create(self, vals): - unconfirmed_budget = self.env["sale.order"].search( - [ - ("state", "=", "draft"), - ("partner_id", "=", vals.get("partner_id")), - ], - limit=1, - ) + def create(self, vals_list): + created_orders = [] - if unconfirmed_budget: - unconfirmed_budget.order_line.unlink() - for line in vals.get("order_line", []): - unconfirmed_budget.order_line.create( - { - "order_id": unconfirmed_budget.id, - "product_id": line[2]["product_id"], - "product_uom_qty": line[2]["product_uom_qty"], - } - ) - return unconfirmed_budget + for vals in vals_list: + unconfirmed_budget = self.env["sale.order"].search( + [ + ("state", "=", "draft"), + ("partner_id", "=", vals.get("partner_id")), + ], + limit=1, + ) - return super().create(vals) + if unconfirmed_budget: + unconfirmed_budget.order_line.unlink() + for line in vals.get("order_line", []): + unconfirmed_budget.order_line.create( + { + "order_id": unconfirmed_budget.id, + "product_id": line[2]["product_id"], + "product_uom_qty": line[2]["product_uom_qty"], + } + ) + created_orders.append(unconfirmed_budget) + else: + created_order = super().create(vals) + created_orders.append(created_order) + + return created_orders