Skip to content

Commit

Permalink
[IMP] website_sale_cart_with_unconfirmed_budget: Remove fork
Browse files Browse the repository at this point in the history
  • Loading branch information
unaiberis committed Oct 18, 2024
1 parent a321ca6 commit 184ede7
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -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()

Expand All @@ -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"],
Expand All @@ -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,
Expand All @@ -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")
Expand All @@ -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,
Expand All @@ -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
46 changes: 26 additions & 20 deletions website_sale_cart_with_unconfirmed_budget/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 184ede7

Please sign in to comment.