From 27fe31c3172726d867c86df661a83c3dcffaff35 Mon Sep 17 00:00:00 2001 From: "Nasreddin Boulif (bon)" Date: Wed, 11 Jan 2023 17:37:51 +0000 Subject: [PATCH] [IMP] website_sale: extract order line update processes to ease override In order to be able to do a pre or post processing on the order line updates, we extract the code to a dedicated method. i.e.: will be used in this PR: https://github.com/odoo/enterprise/pull/35689 opw-3099515 closes odoo/odoo#110082 X-original-commit: 7129806a9aad0ea87e0e73b9322b56006caed202 Related: odoo/enterprise#35879 Signed-off-by: William Braeckman (wbr) --- addons/website_sale/models/sale_order.py | 32 ++++++++++++++---------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/addons/website_sale/models/sale_order.py b/addons/website_sale/models/sale_order.py index 0dda64ad1d2..e6a805326c1 100644 --- a/addons/website_sale/models/sale_order.py +++ b/addons/website_sale/models/sale_order.py @@ -104,6 +104,24 @@ class SaleOrder(models.Model): return abandoned_domain return expression.distribute_not(['!'] + abandoned_domain) # negative domain + def _cart_update_order_line(self, product_id, quantity, order_line, **kwargs): + self.ensure_one() + + if order_line and quantity <= 0: + # Remove zero or negative lines + order_line.unlink() + order_line = self.env['sale.order.line'] + elif order_line: + # Update existing line + update_values = self._prepare_order_line_update_values(order_line, quantity, **kwargs) + if update_values: + self._update_cart_line_values(order_line, update_values) + elif quantity >= 0: + # Create new line + order_line_values = self._prepare_order_line_values(product_id, quantity, **kwargs) + order_line = self.env['sale.order.line'].sudo().create(order_line_values) + return order_line + def _cart_update_pricelist(self, pricelist_id=None, update_pricelist=False): self.ensure_one() @@ -173,19 +191,7 @@ class SaleOrder(models.Model): # the requested quantity update. warning = '' - if order_line and quantity <= 0: - # Remove zero or negative lines - order_line.unlink() - order_line = self.env['sale.order.line'] - elif order_line: - # Update existing line - update_values = self._prepare_order_line_update_values(order_line, quantity, **kwargs) - if update_values: - self._update_cart_line_values(order_line, update_values) - elif quantity >= 0: - # Create new line - order_line_values = self._prepare_order_line_values(product_id, quantity, **kwargs) - order_line = self.env['sale.order.line'].sudo().create(order_line_values) + order_line = self._cart_update_order_line(product_id, quantity, order_line, **kwargs) return { 'line_id': order_line.id,