From ecc9b74247acfaddb9ad2e0f5c0c52150dd55cfe Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 21 Jul 2026 07:44:16 -0500 Subject: [PATCH] fix: mostrar consentimientos del turnero en lab_formularios.php MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fecha usa COALESCE(firmado_at, enviado_at, t.creado_at) porque turnero siempre deja enviado_at en NULL - filtro por fecha tambiƩn usa ese COALESCE para no excluir registros - total_envios y total_completados suman turnero_consentimientos Co-Authored-By: Claude Sonnet 4.6 --- classes/lab/Formulario.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/classes/lab/Formulario.php b/classes/lab/Formulario.php index 43c064e..7cd4b5f 100644 --- a/classes/lab/Formulario.php +++ b/classes/lab/Formulario.php @@ -23,8 +23,10 @@ class Formulario { $w = $soloActivos ? 'WHERE f.is_active = 1' : ''; return $this->db->fetchAll(" SELECT f.*, u.full_name AS creado_por_nombre, - (SELECT COUNT(*) FROM lab_form_envios e WHERE e.formulario_id = f.id) AS total_envios, - (SELECT COUNT(*) FROM lab_form_envios e WHERE e.formulario_id = f.id AND e.estado IN ('completado','firmado')) AS total_completados + (SELECT COUNT(*) FROM lab_form_envios e WHERE e.formulario_id = f.id) + + (SELECT COUNT(*) FROM turnero_consentimientos tc WHERE tc.formulario_id = f.id) AS total_envios, + (SELECT COUNT(*) FROM lab_form_envios e WHERE e.formulario_id = f.id AND e.estado IN ('completado','firmado')) + + (SELECT COUNT(*) FROM turnero_consentimientos tc WHERE tc.formulario_id = f.id AND tc.estado = 'firmado') AS total_completados FROM lab_formularios f LEFT JOIN admin_users u ON u.id = f.creado_por $w @@ -214,13 +216,13 @@ class Formulario { $whereB[] = '1=0'; // estados como 'completado'/'expirado' no aplican al turnero } } - if (!empty($filtros['fecha_desde'])) { $whereB[] = 'DATE(tc.enviado_at) >= ?'; $paramsB[] = $filtros['fecha_desde']; } - if (!empty($filtros['fecha_hasta'])) { $whereB[] = 'DATE(tc.enviado_at) <= ?'; $paramsB[] = $filtros['fecha_hasta']; } + if (!empty($filtros['fecha_desde'])) { $whereB[] = 'DATE(COALESCE(tc.firmado_at, tc.enviado_at, t.creado_at)) >= ?'; $paramsB[] = $filtros['fecha_desde']; } + if (!empty($filtros['fecha_hasta'])) { $whereB[] = 'DATE(COALESCE(tc.firmado_at, tc.enviado_at, t.creado_at)) <= ?'; $paramsB[] = $filtros['fecha_hasta']; } if (!empty($filtros['paciente'])) { $whereB[] = 'p.nombre_completo LIKE ?'; $paramsB[] = '%' . $filtros['paciente'] . '%'; } if (!empty($filtros['enviado_por'])) { $whereB[] = '1=0'; } // turnero no tiene enviado_por $wB = implode(' AND ', $whereB); - $sqlB = "SELECT tc.id, tc.formulario_id, tc.estado, COALESCE(tc.enviado_at, tc.firmado_at) AS fecha, + $sqlB = "SELECT tc.id, tc.formulario_id, tc.estado, COALESCE(tc.firmado_at, tc.enviado_at, t.creado_at) AS fecha, f.nombre AS form_nombre, f.categoria, p.nombre_completo AS paciente_nombre, 'Turnero' AS enviado_por_nombre,