From 464fb9a1307d8ed69c6fbaddfaea85b42d7bb358 Mon Sep 17 00:00:00 2001 From: Abdul Aziz Amrullah Date: Fri, 12 Jun 2026 14:17:42 +0700 Subject: [PATCH] Fix bug similiar phone number --- app.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app.py b/app.py index b6d3bb3..949e1e6 100644 --- a/app.py +++ b/app.py @@ -224,13 +224,18 @@ def migrate_customer(customer_id): existing_partner = None if norm_phone: + # Fetch potential matches using ilike to account for Odoo's formatting (spaces, dashes, country codes) partner_ids = models.execute_kw(ODOO_DB, uid, ODOO_PASS, 'res.partner', 'search_read', [[('phone', 'ilike', norm_phone)]], - {'fields': ['name', 'phone', 'email', 'gender', 'birth_date', 'city', 'total_spend', 'membership_level_id'], 'limit': 1} + {'fields': ['name', 'phone', 'email', 'x_studio_gender', 'x_studio_birth_date', 'city', 'total_spend', 'membership_level_id']} ) - if partner_ids: - existing_partner = partner_ids[0] - partner_id = existing_partner['id'] + + # Filter strictly by matching the normalized phone to prevent substring matches (e.g. 8123 vs 81234) + for p in partner_ids: + if normalize_phone(p.get('phone')) == norm_phone: + existing_partner = p + partner_id = existing_partner['id'] + break # 2. Find loyalty.program based on level level = customer.get('level', '')