"""Bring an existing database's membership tiers in line with the six plans on tncsc.com/membership-registration. data/membership_data.xml is noupdate="1", so an upgrade creates the new tiers (Long-Term, Senior Life Term) but leaves existing ones untouched. This script rewrites those, and archives the old "Individual" tier, which TNCSC doesn't offer. Archiving, not deleting, keeps it on any member already holding it. """ from odoo import SUPERUSER_ID, api TIER_VALUES = { 'membership_tier_family': { 'name': 'Annual/Family', 'price': 30.0, 'period': 'annual', 'sequence': 10, 'allows_family_members': True, 'min_age': 0, 'requires_proof': False, 'description': 'Covers the member, his/her spouse and kids living at the same address.', }, 'membership_tier_life': { 'name': 'Life Term Membership', 'price': 500.0, 'period': 'one_time', 'sequence': 30, }, 'membership_tier_senior': { 'name': 'Senior Annual Membership', 'price': 15.0, 'period': 'annual', 'sequence': 40, 'min_age': 65, 'requires_proof': True, 'description': 'For seniors over 65 years. Documents may be requested to confirm.', }, 'membership_tier_student': { 'name': 'Student Annual Membership', 'price': 10.0, 'period': 'annual', 'sequence': 60, 'requires_proof': True, 'description': 'For full-time students. Documents may be requested to confirm.', }, } def migrate(cr, version): env = api.Environment(cr, SUPERUSER_ID, {}) for xmlid, values in TIER_VALUES.items(): tier = env.ref(f'tncsc_deployment.{xmlid}', raise_if_not_found=False) if tier: tier.write(values) individual = env.ref('tncsc_deployment.membership_tier_individual', raise_if_not_found=False) if individual: individual.active = False