diff --git a/addons/loyalty/models/loyalty_program.py b/addons/loyalty/models/loyalty_program.py index c3e414a9681..c4bdaeff2bd 100644 --- a/addons/loyalty/models/loyalty_program.py +++ b/addons/loyalty/models/loyalty_program.py @@ -598,3 +598,15 @@ class LoyaltyProgram(models.Model): })] }, } + + @api.model_create_multi + def create(self, vals_list): + """ + trigger_product_ids will overwrite product ids defined in a loyalty rule in certain instances. Thus, it should + be explicitly removed from an incoming vals dict unless, of course, it was actually a visible field. + """ + for vals in vals_list: + if 'trigger_product_ids' in vals and vals['program_type'] not in ['gift_card', 'ewallet']: + del vals['trigger_product_ids'] + + return super().create(vals_list)