From 9818f305bce29f3e56c7ed3aebada63eddd13003 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Mon, 25 Jan 2021 14:16:56 +0000 Subject: [PATCH] [FIX] sale_coupon: promo_applicability on next order MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Steps to reproduce the bug: - Create a promotion program PP - Set 50 in minimal amount - Set promo_applicability = on_next_order - Set reward_type = discount - Set discount_type = discount - Create a new sale order SO with a product with price 100€ - Cancel the SO Bug: A coupon C had been created PS: When reset to draft and confirm SO, C became valid Closes #64361 opw:2431740 closes odoo/odoo#65067 X-original-commit: c2ce00173c612d38dd8dc6b1f15edf2261f2acc6 Signed-off-by: Simon Goffin (sig) --- addons/sale_coupon/models/sale_order.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale_coupon/models/sale_order.py b/addons/sale_coupon/models/sale_order.py index 0ff4fa37b47..af58270e8aa 100644 --- a/addons/sale_coupon/models/sale_order.py +++ b/addons/sale_coupon/models/sale_order.py @@ -314,7 +314,7 @@ class SaleOrder(models.Model): error_status = program._check_promo_code(order, False) if not error_status.get('error'): if program.promo_applicability == 'on_next_order': - order._create_reward_coupon(program) + order.state != 'cancel' and order._create_reward_coupon(program) elif program.discount_line_product_id.id not in self.order_line.mapped('product_id').ids: self.write({'order_line': [(0, False, value) for value in self._get_reward_line_values(program)]}) order.no_code_promo_program_ids |= program