diff --git a/app/services/scheduler.py b/app/services/scheduler.py index be6b647..d6a03f5 100644 --- a/app/services/scheduler.py +++ b/app/services/scheduler.py @@ -167,6 +167,21 @@ async def sync_recientes(ventana_min: int = 2) -> dict: resultado = await sync_todos(recientes, ingest_url, wa_key, timeout, modo="upsert", examenes_map=examenes_map) + # Enriquecer detalle con exámenes, diagnóstico, empresa y valor para el log + for entry in resultado.get("detalle", []): + doc = entry.get("doc", "") + exams = examenes_map.get(doc, []) + if exams: + first = exams[0] + entry["diagnostico_cod"] = first.get("diagnostico_cod", "") + entry["diagnostico_nombre"] = first.get("diagnostico_nombre", "") + entry["nit_empresa"] = first.get("nit_empresa", "") + entry["valor_total"] = first.get("valor_total") + entry["examenes_det"] = [ + {"cups": e.get("cups", ""), "nombre": e.get("nombre", ""), "precio": e.get("precio")} + for e in exams + ] + if resultado["total"] > 0: guardar_sync_log(resultado, None, origen="scheduler", modo="upsert") diff --git a/app/services/whatsapp_sync.py b/app/services/whatsapp_sync.py index 8ea172f..4e45792 100644 --- a/app/services/whatsapp_sync.py +++ b/app/services/whatsapp_sync.py @@ -31,9 +31,17 @@ def guardar_sync_log( detalle_json = None if detalle_raw: detalle_json = json.dumps( - [{"doc": d["doc"], "nombre": d["nombre"], "action": d.get("action", ""), - "examenes": d.get("examenes_guardados", 0)} - for d in detalle_raw], + [{ + "doc": d["doc"], + "nombre": d["nombre"], + "action": d.get("action", ""), + "examenes_cnt": d.get("examenes_guardados", 0), + "diagnostico_cod": d.get("diagnostico_cod", ""), + "diagnostico_nombre": d.get("diagnostico_nombre", ""), + "nit_empresa": d.get("nit_empresa", ""), + "valor_total": d.get("valor_total"), + "examenes_det": d.get("examenes_det", []), + } for d in detalle_raw], ensure_ascii=False, ) diff --git a/app/templates/envios_erp.html b/app/templates/envios_erp.html index 2d8175d..25a9e99 100644 --- a/app/templates/envios_erp.html +++ b/app/templates/envios_erp.html @@ -254,6 +254,55 @@ async function cargarHistorialScheduler() { const errDet = r.errores_det ? JSON.parse(r.errores_det) : []; const pacientes = r.detalle_json ? JSON.parse(r.detalle_json) : []; const rowId = 'hist-det-' + i; + + const detHtml = pacientes.map((p, pi) => { + const badge = p.action === 'created' ? 'Nuevo' + : p.action === 'updated' ? 'Actualizado' + : p.action === 'skipped' ? 'Omitido' + : `${p.action}`; + + const diag = p.diagnostico_cod + ? `${p.diagnostico_cod}${p.diagnostico_nombre ? ' · ' + p.diagnostico_nombre : ''}` + : 'Sin diagnóstico'; + + const empresa = p.nit_empresa + ? `${p.nit_empresa}` + : 'Sin empresa'; + + const valor = p.valor_total > 0 + ? `$${Number(p.valor_total).toLocaleString('es-CO')}` + : ''; + + const exams = (p.examenes_det || []).map(e => + ` + ${e.cups || '—'} + ${e.nombre || '—'} + ${e.precio != null ? '$' + Number(e.precio).toLocaleString('es-CO') : '—'} + ` + ).join(''); + + return `
+
+ ${p.doc} + ${p.nombre} + ${badge} +
+
+ Dx: ${diag} + EPS: ${empresa} + ${valor ? `Total: ${valor}` : ''} +
+ ${exams ? ` + + + + + + ${exams} +
CUPSExamenPrecio
` : '

Sin exámenes registrados

'} +
`; + }).join(''); + return ` ${fecha} @@ -273,22 +322,10 @@ async function cargarHistorialScheduler() { ${pacientes.length ? ` - - -
- ${pacientes.map(p => { - const badge = p.action === 'created' ? 'Nuevo' - : p.action === 'updated' ? 'Actualizado' - : p.action === 'skipped' ? 'Omitido' - : `${p.action}`; - const exBadge = p.examenes > 0 - ? `${p.examenes} exám.` : ''; - return `
- ${p.doc} - ${p.nombre} - ${badge} ${exBadge} -
`; - }).join('')} + + +
+ ${detHtml}
` : ''}`;