feat: implement tiered loyalty program lookup with prioritized mapping and fallback logic

This commit is contained in:
Suherdy Yacob 2026-06-08 17:38:12 +07:00
parent 86229809d8
commit f6a5682692

14
app.py
View File

@ -234,6 +234,20 @@ def migrate_customer(customer_id):
# 2. Find loyalty.program based on level
level = customer.get('level', '')
level_map = {
'Silver': 'Membership Silver',
'Gold': 'Membership Gold',
'Platinum': 'Membership Platinum'
}
target_program_name = level_map.get(level, f"Membership {level}")
# 1. Search by exact mapped name
program_ids = models.execute_kw(ODOO_DB, uid, ODOO_PASS, 'loyalty.program', 'search', [[('name', '=', target_program_name)]])
if not program_ids:
# 2. Search by exact level name
program_ids = models.execute_kw(ODOO_DB, uid, ODOO_PASS, 'loyalty.program', 'search', [[('name', '=', level)]])
if not program_ids:
# 3. Fallback to ilike
program_ids = models.execute_kw(ODOO_DB, uid, ODOO_PASS, 'loyalty.program', 'search', [[('name', 'ilike', level)]])
if not program_ids: