From 34cbf64966299d25a7fc4b880374f7945df4b99b Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Wed, 23 Oct 2019 08:30:53 +0000 Subject: [PATCH] [FIX] sale_coupon: fix concurrent update on cart Shop page link and popover use the same route which make a write on db to recompute coupon lines. Can lead to concurent updates if unlucky on timing. closes odoo/odoo#39356 X-original-commit: 14253c412be8078290e808fe255c746afa79cc9c Signed-off-by: Quentin Smetz (qsm) --- addons/sale_coupon/models/sale_order.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/sale_coupon/models/sale_order.py b/addons/sale_coupon/models/sale_order.py index bfb875e34c2..1415aded94c 100644 --- a/addons/sale_coupon/models/sale_order.py +++ b/addons/sale_coupon/models/sale_order.py @@ -371,9 +371,11 @@ class SaleOrder(models.Model): coupons_to_remove.write({'state': 'new'}) # Unbind promotion and coupon programs which requirements are not met anymore - order.no_code_promo_program_ids -= programs_to_remove - order.code_promo_program_id -= programs_to_remove - order.applied_coupon_ids -= coupons_to_remove + if programs_to_remove: + order.no_code_promo_program_ids -= programs_to_remove + order.code_promo_program_id -= programs_to_remove + if coupons_to_remove: + order.applied_coupon_ids -= coupons_to_remove # Remove their reward lines invalid_lines |= order.order_line.filtered(lambda line: line.product_id.id in products_to_remove.ids)