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

16
app.py
View File

@ -234,7 +234,21 @@ def migrate_customer(customer_id):
# 2. Find loyalty.program based on level # 2. Find loyalty.program based on level
level = customer.get('level', '') level = customer.get('level', '')
program_ids = models.execute_kw(ODOO_DB, uid, ODOO_PASS, 'loyalty.program', 'search', [[('name', 'ilike', 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: if not program_ids:
return jsonify({"success": False, "message": f"Loyalty program containing '{level}' not found in Odoo."}), 404 return jsonify({"success": False, "message": f"Loyalty program containing '{level}' not found in Odoo."}), 404