Permitir atender Pediatría y Ginecología desde equipos con estación fija

Un equipo registrado por IP o token queda atado a su estación: si pedía otra,
lugar.php lo devolvía a la suya sin mostrar nada, y parecía que el enlace estaba
roto. La restricción tiene sentido para las Tomas de Muestras, pero Pediatría y
Ginecología se atienden desde cualquier puesto.

Se agrega la marca acceso_libre en turnero_lugares en vez de codificar los
nombres, para que mañana se habilite otra estación sin tocar código. Las
marcadas así no redirigen y aparecen en el menú del equipo junto a la suya.

El bloqueo se mantiene en todo lo demás: el equipo sigue atado a su estación, el
botón de cambiar sigue oculto y no puede saltar a una Toma de Muestras ajena.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-11 10:47:11 -05:00
co-authored by Claude Opus 5
parent 813b712df0
commit dc17c6a469
3 changed files with 39 additions and 11 deletions
+18 -1
View File
@@ -44,9 +44,26 @@ try {
if ($_dispRow['tipo'] === 'recepcion') {
header('Location: ' . BASE_URL . 'erp.php?m=turnero&v=recepcion&desk_id=' . $_forzado); exit;
}
if ((int)($_GET['lugar_id'] ?? 0) !== $_forzado) {
$_pedido = (int)($_GET['lugar_id'] ?? 0);
// Un equipo fijo queda atado a su estación, pero algunas —Pediatría,
// Ginecología— se atienden desde cualquier puesto: se marcan como de
// acceso libre y no se redirige.
$_libre = false;
if ($_pedido && $_pedido !== $_forzado) {
$_sl = $_dispPdo->prepare(
"SELECT acceso_libre FROM turnero_lugares WHERE id = ? AND activo = 1 LIMIT 1"
);
$_sl->execute([$_pedido]);
$_libre = (bool)$_sl->fetchColumn();
}
if ($_pedido !== $_forzado && !$_libre) {
header('Location: ' . BASE_URL . 'erp.php?m=turnero&v=lugar&lugar_id=' . $_forzado); exit;
}
// El equipo sigue atado a su estación aunque esté atendiendo una de
// acceso libre: la vista muestra la pedida (sale de lugar_id), pero el
// botón de cambiar sigue oculto y no puede saltar a cualquier otra.
$lugarForzado = $_forzado;
}
} catch (\Throwable $_) {}