From a47143ed6ea24e59173b36d63e79e6f43397077b Mon Sep 17 00:00:00 2001 From: nie Date: Wed, 23 Dec 2020 15:40:43 +0000 Subject: [PATCH] [FIX] coupon: public user cannot use promo code with edited rule Steps: - Install eCommerce - Go to Website > Products > Promotion Programs - Create a promotion program with a filter Based on Customers and a promotion code - Save - Edit the new program and clear the filter Based on Customers - Save again - Log out and go to the shop - Add an article to your cart and click "View Cart" - Click "I have a promo code" - Apply the promo code you created earlier Bug: The promo code is not accepted. Explanation: When the filter Based on Customers is cleared, `[]` is written on the program rule. This makes the app search for a partner with id = 4 (Public User). Since this user is not active, the search returns no results and, therefore, forbids the user from using the promo code. This works flawlessly when you create a promotion program with no filters as they are initialized with `NULL` and a `NULL` filter always returns `True`. opw:2419796 closes odoo/odoo#63822 X-original-commit: d31a86cead03623c375f4162324a6d1872cad6a3 Signed-off-by: backspac --- addons/coupon/models/coupon_program.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/coupon/models/coupon_program.py b/addons/coupon/models/coupon_program.py index c31e94af4ee..8e0cb3b1f1a 100644 --- a/addons/coupon/models/coupon_program.py +++ b/addons/coupon/models/coupon_program.py @@ -137,7 +137,7 @@ class CouponProgram(models.Model): return self.currency_id._convert(self[field], currency_to, self.company_id, fields.Date.today()) def _is_valid_partner(self, partner): - if self.rule_partners_domain: + if self.rule_partners_domain and self.rule_partners_domain != '[]': domain = ast.literal_eval(self.rule_partners_domain) + [('id', '=', partner.id)] return bool(self.env['res.partner'].search_count(domain)) else: