BREAKING CHANGES: - vTiger sync: Never overwrites existing vtiger_id - Contact sync: REPLACES links instead of appending (idempotent) - E-conomic sync: Only updates fields it owns (address, city, postal, email_domain, website) - E-conomic sync: Does NOT overwrite name or cvr_number anymore ARCHITECTURE: - Each data source owns specific fields - Sync operations are now idempotent (can run multiple times) - Clear documentation of field ownership in sync_router.py - Contact links deleted and recreated on sync to match vTiger state FIXED: - Contact relationships now correct after re-sync - No more mixed customer data from different sources - Sorting contacts by company_count DESC (companies first)
21 lines
624 B
Python
21 lines
624 B
Python
#!/usr/bin/env python3
|
|
import asyncio
|
|
import sys
|
|
sys.path.insert(0, '/Users/christianthomas/DEV/bmc_hub_dev')
|
|
from app.services.vtiger_service import VTigerService
|
|
|
|
async def test_accounts():
|
|
vtiger = VTigerService()
|
|
|
|
# Check what 3x760 and 3x811 are in vTiger
|
|
for vtiger_id in ['3x760', '3x811']:
|
|
query = f"SELECT id, accountname FROM Accounts WHERE id = '{vtiger_id}';"
|
|
result = await vtiger.query(query)
|
|
|
|
if result:
|
|
print(f"{vtiger_id} = {result[0].get('accountname')}")
|
|
else:
|
|
print(f"{vtiger_id} = NOT FOUND")
|
|
|
|
asyncio.run(test_accounts())
|