feat: implement tiered loyalty program lookup with prioritized mapping and fallback logic
This commit is contained in:
parent
86229809d8
commit
f6a5682692
16
app.py
16
app.py
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user