pos_loyalty_subscription/models/loyalty_program.py

57 lines
2.0 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)):
if any(not p.manual_membership for p in self):
vals['manual_membership'] = True
if any(p.trigger != 'auto' for p in self):
vals['trigger'] = 'auto'
if any(p.applies_on != 'both' for p in self):
vals['applies_on'] = 'both'
if any(not p.portal_visible for p in self):
vals['portal_visible'] = True
return super().write(vals)