52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
# -*- 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)
|