From 030071e8d59c93ffe6f0c958674642efdce19594 Mon Sep 17 00:00:00 2001 From: Christian Date: Fri, 19 Dec 2025 16:54:57 +0100 Subject: [PATCH] Improve e-conomic sync: Only match new customers, verify existing ones --- app/system/backend/sync_router.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/app/system/backend/sync_router.py b/app/system/backend/sync_router.py index b43468e..920481e 100644 --- a/app/system/backend/sync_router.py +++ b/app/system/backend/sync_router.py @@ -350,25 +350,32 @@ async def sync_from_economic() -> Dict[str, Any]: (cvr,) ) - # If no CVR match, try normalized name + # If no CVR match, try normalized name (only for customers without economic number) if not matched and name: normalized = normalize_name(name) - all_customers = execute_query("SELECT id, name FROM customers WHERE economic_customer_number IS NULL") - for hub_customer in all_customers: + hub_customers = execute_query("SELECT id, name, economic_customer_number FROM customers WHERE economic_customer_number IS NULL") + for hub_customer in hub_customers: if normalize_name(hub_customer['name']) == normalized: matched = [hub_customer] break if matched: # Update Hub customer with e-conomic number - execute_query( - "UPDATE customers SET economic_customer_number = %s, last_synced_at = NOW() WHERE id = %s", - (customer_number, matched[0]['id']) - ) - matched_count += 1 - logger.info(f"πŸ”— Matchet: {matched[0]['name']} β†’ e-conomic kunde #{customer_number} (CVR: {cvr or 'navn-match'})") + current_number = matched[0].get('economic_customer_number') + if current_number is None: + execute_query( + "UPDATE customers SET economic_customer_number = %s, last_synced_at = NOW() WHERE id = %s", + (customer_number, matched[0]['id']) + ) + matched_count += 1 + logger.info(f"πŸ”— Matchet: {matched[0]['name']} β†’ e-conomic kunde #{customer_number} (CVR: {cvr or 'navn-match'})") + else: + # Already has number, just update sync timestamp + execute_query("UPDATE customers SET last_synced_at = NOW() WHERE id = %s", (matched[0]['id'],)) + logger.debug(f"βœ“ Verificeret: {matched[0]['name']} β†’ #{customer_number}") else: not_matched_count += 1 + logger.debug(f"❌ Ikke matchet: {name} (CVR: {cvr or 'ingen'})") logger.info(f"βœ… e-conomic sync fuldfΓΈrt: {matched_count} matchet, {not_matched_count} ikke matchet af {len(economic_customers)} totalt")