[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) <wbr@odoo.com>
This commit is contained in:
Nasreddin Boulif (bon)
2023-01-17 11:34:18 +01:00
parent bb9c08d443
commit 27fe31c317
+19 -13
View File
@@ -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,