From 50b7f7f8cab3bcf673757d9f5e5bd08ae8c4505b Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 16 Apr 2026 21:24:01 -0500 Subject: [PATCH] up --- api/lab/get_reporte_pagos.php | 26 ++++++++++++++++---------- lab_reportes.php | 23 +++++++++++++++++++---- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/api/lab/get_reporte_pagos.php b/api/lab/get_reporte_pagos.php index 7b08782..4da4ba5 100644 --- a/api/lab/get_reporte_pagos.php +++ b/api/lab/get_reporte_pagos.php @@ -77,6 +77,7 @@ $filas = $db->fetchAll( COALESCE(d.seguro_nombre,'') AS seguro_nombre, d.estado AS dom_estado, COALESCE(d.valor_domicilio, 0) AS valor_domicilio, + COALESCE(d.valor_copago, 0) AS valor_copago, d.pago_estado, COALESCE(d.pago_modo,'') AS pago_modo, COALESCE(d.pago_monto, 0) AS pago_monto, @@ -109,16 +110,21 @@ unset($f); // Resumen financiero — sumar desde parcialidades cuando existen $resumen = [ - 'total' => count($filas), - 'pagados' => 0, - 'pendientes' => 0, - 'exentos' => 0, - 'monto_total' => 0.0, - 'por_modo' => [], + 'total' => count($filas), + 'pagados' => 0, + 'pendientes' => 0, + 'exentos' => 0, + 'monto_total' => 0.0, + 'total_valor_dom' => 0.0, // suma valor_domicilio esperado + 'total_valor_copago' => 0.0, // suma valor_copago esperado + 'por_modo' => [], ]; foreach ($filas as $f) { $est = $f['pago_estado'] ?? 'pendiente'; + // Acumular valores esperados (siempre, no solo pagados) + $resumen['total_valor_dom'] += (float)($f['valor_domicilio'] ?? 0); + $resumen['total_valor_copago'] += (float)($f['valor_copago'] ?? 0); if ($est === 'pagado') { $resumen['pagados']++; if (!empty($f['pagos_detalle'])) { @@ -126,15 +132,15 @@ foreach ($filas as $f) { foreach ($f['pagos_detalle'] as $p) { $monto = (float)$p['monto']; $key = $p['modo'] ?: 'sin_registrar'; - $resumen['monto_total'] += $monto; - $resumen['por_modo'][$key] = ($resumen['por_modo'][$key] ?? 0.0) + $monto; + $resumen['monto_total'] += $monto; + $resumen['por_modo'][$key] = ($resumen['por_modo'][$key] ?? 0.0) + $monto; } } else { // Fallback registro legacy $monto = (float)$f['pago_monto']; $key = $f['pago_modo'] ?: 'sin_registrar'; - $resumen['monto_total'] += $monto; - $resumen['por_modo'][$key] = ($resumen['por_modo'][$key] ?? 0.0) + $monto; + $resumen['monto_total'] += $monto; + $resumen['por_modo'][$key] = ($resumen['por_modo'][$key] ?? 0.0) + $monto; } } elseif ($est === 'exento') { $resumen['exentos']++; diff --git a/lab_reportes.php b/lab_reportes.php index 806c224..bd63a44 100644 --- a/lab_reportes.php +++ b/lab_reportes.php @@ -177,6 +177,7 @@ if ($tipo) { d.tipo_cliente, COALESCE(d.seguro_nombre,'') AS seguro, d.estado AS dom_estado, COALESCE(d.valor_domicilio,0) AS valor_domicilio, + COALESCE(d.valor_copago,0) AS valor_copago, COALESCE(d.pago_estado,'pendiente') AS pago_estado, COALESCE(d.pago_modo,'') AS pago_modo, COALESCE(d.pago_monto,0) AS pago_monto, @@ -193,7 +194,7 @@ if ($tipo) { $headers = [ 'ID','Fecha programada','Fecha pago','Paciente','Documento', 'Enfermero/a','Tipo cliente','Seguro','Estado domicilio', - 'Valor domicilio','Estado pago','Modo pago','Monto recibido','Notas pago', + 'Valor domicilio','Valor copago','Estado pago','Modo pago','Monto recibido','Notas pago', ]; break; @@ -769,11 +770,22 @@ async function cargarReportePagos() { const modosEl = document.getElementById('pr-modos'); const MODO_LABEL = { efectivo:'Efectivo', transferencia:'Transferencia', otro:'Otro', sin_registrar:'Sin modo' }; const modos = Object.entries(rs.por_modo || {}); - modosEl.innerHTML = modos.length + + // Badges por método de pago + desglose domicilio/copago esperados + let modosHtml = modos.length ? modos.map(([k, v]) => `${esc(MODO_LABEL[k] || k)}: ${fmtMoney(v)}` ).join('') : ''; + if (rs.total_valor_dom || rs.total_valor_copago) { + modosHtml += ` + Domicilio esperado: ${fmtMoney(rs.total_valor_dom || 0)} + + + Copago esperado: ${fmtMoney(rs.total_valor_copago || 0)} + `; + } + modosEl.innerHTML = modosHtml; document.getElementById('pago-resumen').style.display = ''; // Tabla de detalle @@ -796,7 +808,8 @@ async function cargarReportePagos() { Documento Enfermero/a Tipo cliente - Valor domicilio + Val. domicilio + Val. copago Estado pago Modo pago Monto recibido @@ -835,7 +848,8 @@ async function cargarReportePagos() { ${esc(f.numero_documento || '—')} ${esc(f.enfermera)} ${cliente} - ${fmtMoney(f.valor_domicilio)} + ${parseFloat(f.valor_domicilio||0) > 0 ? fmtMoney(f.valor_domicilio) : ''} + ${parseFloat(f.valor_copago||0) > 0 ? fmtMoney(f.valor_copago) : ''} ${esc(pagoEst)} @@ -855,6 +869,7 @@ async function cargarReportePagos() { Total ${fmtMoney(d.filas.reduce((s,f) => s + parseFloat(f.valor_domicilio||0), 0))} + ${fmtMoney(d.filas.reduce((s,f) => s + parseFloat(f.valor_copago||0), 0))} ${fmtMoney(rs.monto_total)}