feat: módulos de envío TNS/ERP Lab + sync de médico, empresa y valor total

- Hub /envios/tns con 5 sub-tabs (Terceros, Transacción RIPS, Facturas Venta, Prueba RDA, Automatización) via iframe lazy
- Hub /envios/erp con sub-tabs Pacientes y Sync Automático (historial scheduler)
- Modo embed (?embed=1) en base.html para cargar páginas sin sidebar/header dentro de iframes
- Sidebar simplificado: 6 ítems individuales reemplazados por módulos TNS y ERP Lab
- Scheduler y endpoint /pacientes/examenes ahora incluyen médico ordenante (DOCIDMEDICO), empresa/EPS (NIT_EMPRESA) y valor total (VALORTOTAL) desde Firebird

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-16 21:13:48 -05:00
co-authored by Claude Sonnet 4.6
parent 31c0b71c90
commit 8e27225326
8 changed files with 676 additions and 165 deletions
+26
View File
@@ -0,0 +1,26 @@
from fastapi import APIRouter, Request, Depends
from app.auth import get_current_user
from app.database import get_connection
router = APIRouter(prefix="/envios", tags=["envios"])
@router.get("/tns")
async def envios_tns(request: Request, user: dict = Depends(get_current_user)):
return request.app.state.templates.TemplateResponse("envios_tns.html", {
"request": request, "user": user,
})
@router.get("/erp")
async def envios_erp(request: Request, user: dict = Depends(get_current_user)):
conn = get_connection()
configs = {row["key"]: row["value"] for row in conn.execute("SELECT * FROM config").fetchall()}
conn.close()
wa_url = configs.get("whatsapp_url", "")
wa_key = configs.get("whatsapp_api_key", "")
return request.app.state.templates.TemplateResponse("envios_erp.html", {
"request": request, "user": user,
"wa_configurado": bool(wa_url and wa_key),
"wa_url": wa_url,
})