# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import api, fields, models, _ class LoyaltyProgram(models.Model): _inherit = 'loyalty.program' program_type = fields.Selection( selection_add=[('subscription', 'Subscription')], ondelete={'subscription': 'set default'} ) @api.model def _program_items_name(self): res = super()._program_items_name() res['subscription'] = _("Subscriptions") return res @api.model def _program_type_default_values(self): res = super()._program_type_default_values() res['subscription'] = { 'applies_on': 'both', 'trigger': 'auto', 'portal_visible': True, 'portal_point_name': _("Subscription claim(s)"), 'manual_membership': True, 'rule_ids': [(5, 0, 0)], 'reward_ids': [(5, 0, 0)], 'communication_plan_ids': [(5, 0, 0)], } return res @api.model_create_multi def create(self, vals_list): for vals in vals_list: if vals.get('program_type') == 'subscription': vals['manual_membership'] = True vals['trigger'] = 'auto' vals['applies_on'] = 'both' vals['portal_visible'] = True return super().create(vals_list) def write(self, vals): if vals.get('program_type') == 'subscription' or (not vals.get('program_type') and any(p.program_type == 'subscription' for p in self)): vals['manual_membership'] = True vals['trigger'] = 'auto' vals['applies_on'] = 'both' vals['portal_visible'] = True return super().write(vals)