diff --git a/app/timetracking/backend/router.py b/app/timetracking/backend/router.py index fe1d018..5cab40a 100644 --- a/app/timetracking/backend/router.py +++ b/app/timetracking/backend/router.py @@ -128,6 +128,54 @@ async def test_vtiger_connection(): raise HTTPException(status_code=500, detail=str(e)) +@router.post("/sync/manual-link-customer", tags=["Sync"]) +async def manual_link_customer(tmodule_customer_id: int, hub_customer_id: int): + """ + 🔗 Manually link en tmodule_customer til en Hub customer. + + Brug dette når auto-linking fejler pga. navn-forskelle eller andre edge cases. + """ + try: + logger.info(f"🔗 Manual linking tmodule {tmodule_customer_id} → Hub {hub_customer_id}") + + # Get Hub customer's economic number + hub_query = "SELECT economic_customer_number FROM customers WHERE id = %s" + hub_result = execute_query(hub_query, (hub_customer_id,)) + + if not hub_result: + raise HTTPException(status_code=404, detail=f"Hub customer {hub_customer_id} not found") + + economic_number = hub_result[0]['economic_customer_number'] + + # Update tmodule_customer + update_query = """ + UPDATE tmodule_customers + SET hub_customer_id = %s, + economic_customer_number = %s, + updated_at = NOW() + WHERE id = %s + RETURNING id, name, hub_customer_id, economic_customer_number + """ + + result = execute_query(update_query, (hub_customer_id, economic_number, tmodule_customer_id)) + + if not result: + raise HTTPException(status_code=404, detail=f"tmodule_customer {tmodule_customer_id} not found") + + logger.info(f"✅ Manual link complete: {result[0]}") + + return { + "success": True, + "linked_customer": result[0] + } + + except HTTPException: + raise + except Exception as e: + logger.error(f"❌ Manual linking failed: {e}") + raise HTTPException(status_code=500, detail=str(e)) + + @router.post("/sync/relink-customers", tags=["Sync"]) async def relink_customers(): """