Fix: Brug fuldt case ID (ikke kun sidste 4 cifre) + auto-link kunder efter vTiger sync
This commit is contained in:
parent
68eb1d31d1
commit
24a517a10c
@ -167,13 +167,13 @@ class OrderService:
|
||||
)
|
||||
was_rounded = (case_hours != original_hours)
|
||||
|
||||
# Extract case number from vtiger_id (format: 39x42930 -> CC2930)
|
||||
# Extract case number from vtiger_id (format: 39x3942 -> CC3942)
|
||||
case_number = ""
|
||||
if group['case_vtiger_id']:
|
||||
vtiger_parts = group['case_vtiger_id'].split('x')
|
||||
if len(vtiger_parts) > 1:
|
||||
# Take last 4 digits
|
||||
case_number = f"CC{vtiger_parts[1][-4:]}"
|
||||
# Use full case ID number
|
||||
case_number = f"CC{vtiger_parts[1]}"
|
||||
|
||||
# Brug case titel fra vTiger (fallback til time entry beskrivelser)
|
||||
case_title = group.get('case_title') or "Ingen beskrivelse"
|
||||
|
||||
@ -66,6 +66,16 @@ async def sync_from_vtiger(
|
||||
try:
|
||||
logger.info("🚀 Starting vTiger sync...")
|
||||
result = await vtiger_service.full_sync(user_id=user_id, fetch_comments=fetch_comments)
|
||||
|
||||
# Auto-link customers after sync to update links based on fresh vTiger data
|
||||
logger.info("🔗 Auto-linking customers after sync...")
|
||||
try:
|
||||
link_query = "SELECT * FROM link_tmodule_customers_to_hub()"
|
||||
link_results = execute_query(link_query)
|
||||
logger.info(f"✅ Linked {len(link_results)} customers automatically")
|
||||
except Exception as link_error:
|
||||
logger.warning(f"⚠️ Customer linking failed (non-critical): {link_error}")
|
||||
|
||||
return result
|
||||
except Exception as e:
|
||||
logger.error(f"❌ Sync failed: {e}")
|
||||
@ -118,6 +128,51 @@ async def test_vtiger_connection():
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
@router.post("/sync/relink-customers", tags=["Sync"])
|
||||
async def relink_customers():
|
||||
"""
|
||||
🔗 Re-link alle tmodule_customers til Hub customers.
|
||||
|
||||
Bruger linking funktion der prioriterer:
|
||||
1. economic_customer_number match (mest præcis)
|
||||
2. Navn match (fallback)
|
||||
|
||||
Kør efter vTiger sync for at opdatere kunde-links baseret på
|
||||
nyeste data fra vTiger (cf_854 economic numbers).
|
||||
"""
|
||||
try:
|
||||
logger.info("🔗 Starting customer re-linking...")
|
||||
|
||||
# Call database function
|
||||
query = "SELECT * FROM link_tmodule_customers_to_hub()"
|
||||
results = execute_query(query)
|
||||
|
||||
# Count by action type
|
||||
stats = {
|
||||
"economic_matches": 0,
|
||||
"name_matches": 0,
|
||||
"total_linked": len(results)
|
||||
}
|
||||
|
||||
for result in results:
|
||||
if result['action'] == 'economic_number_match':
|
||||
stats["economic_matches"] += 1
|
||||
elif result['action'] == 'name_match':
|
||||
stats["name_matches"] += 1
|
||||
|
||||
logger.info(f"✅ Customer linking complete: {stats}")
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
"stats": stats,
|
||||
"linked_customers": results
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"❌ Customer linking failed: {e}")
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/debug/raw-stats", tags=["Debug"])
|
||||
async def get_debug_raw_stats():
|
||||
"""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user