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)
|
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 = ""
|
case_number = ""
|
||||||
if group['case_vtiger_id']:
|
if group['case_vtiger_id']:
|
||||||
vtiger_parts = group['case_vtiger_id'].split('x')
|
vtiger_parts = group['case_vtiger_id'].split('x')
|
||||||
if len(vtiger_parts) > 1:
|
if len(vtiger_parts) > 1:
|
||||||
# Take last 4 digits
|
# Use full case ID number
|
||||||
case_number = f"CC{vtiger_parts[1][-4:]}"
|
case_number = f"CC{vtiger_parts[1]}"
|
||||||
|
|
||||||
# Brug case titel fra vTiger (fallback til time entry beskrivelser)
|
# Brug case titel fra vTiger (fallback til time entry beskrivelser)
|
||||||
case_title = group.get('case_title') or "Ingen beskrivelse"
|
case_title = group.get('case_title') or "Ingen beskrivelse"
|
||||||
|
|||||||
@ -66,6 +66,16 @@ async def sync_from_vtiger(
|
|||||||
try:
|
try:
|
||||||
logger.info("🚀 Starting vTiger sync...")
|
logger.info("🚀 Starting vTiger sync...")
|
||||||
result = await vtiger_service.full_sync(user_id=user_id, fetch_comments=fetch_comments)
|
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
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"❌ Sync failed: {e}")
|
logger.error(f"❌ Sync failed: {e}")
|
||||||
@ -118,6 +128,51 @@ async def test_vtiger_connection():
|
|||||||
raise HTTPException(status_code=500, detail=str(e))
|
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"])
|
@router.get("/debug/raw-stats", tags=["Debug"])
|
||||||
async def get_debug_raw_stats():
|
async def get_debug_raw_stats():
|
||||||
"""
|
"""
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user