fix: mostrar consentimientos del turnero en lab_formularios.php
- 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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
1d8e461b3e
commit
ecc9b74247
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user