fix(turnero): turno de recepcion 1 aparece en recepcion 2 en display

get_display_global.php: la query de cada escritorio tenía la condición
  OR t.recepcion_desk_id IS NULL
lo que hacía que un turno llamado sin desk_id (NULL) apareciera como activo
en TODOS los escritorios simultáneamente, anunciando el destino incorrecto.
Se eliminó esa condición para usar match exacto por escritorio.

llamar_turno.php: cambiar COALESCE(?, recepcion_desk_id) por ? directo.
El COALESCE era innecesario porque el UPDATE solo aplica sobre estado='espera'
(primer llamado). Ahora siempre escribe el valor recibido.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-04 12:15:05 -05:00
co-authored by Claude Sonnet 4.6
parent 4f25cd6b59
commit 9afefcf3e7
2 changed files with 5 additions and 2 deletions
+1 -1
View File
@@ -44,7 +44,7 @@ foreach ($escritoriosRec as $desk) {
JOIN turnero_prioridades p ON p.id = t.prioridad_id
WHERE t.sesion_id = ?
AND t.estado = 'en_recepcion'
AND (t.recepcion_desk_id = ? OR t.recepcion_desk_id IS NULL)
AND t.recepcion_desk_id = ?
ORDER BY t.llamado_recepcion_at DESC
LIMIT 1"
);
+4 -1
View File
@@ -41,13 +41,16 @@ try {
}
// Actualizar estado + timestamp
// $deskId puede ser null si el recepcionista no seleccionó escritorio;
// se guarda igual (puede quedar NULL) pero la query del display ya no
// usa IS NULL para evitar que aparezca en todos los escritorios.
$stmt = $pdo->prepare(
'UPDATE turnero_turnos
SET estado = "en_recepcion",
llamado_recepcion_at = NOW(),
inicio_recepcion_at = NOW(),
atendido_recepcion_por = ?,
recepcion_desk_id = COALESCE(?, recepcion_desk_id)
recepcion_desk_id = ?
WHERE id = ? AND estado = "espera"'
);
$stmt->execute([adminId(), $deskId, $turno['id']]);