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
+10 -10
View File
@@ -19,7 +19,7 @@ try {
)->fetchAll(PDO::FETCH_ASSOC);
$_trMuestras = $_trPdo->query(
"SELECT id, nombre FROM turnero_lugares WHERE activo=1 AND tipo='muestras' ORDER BY sort_order"
"SELECT id, nombre, acceso_libre FROM turnero_lugares WHERE activo=1 AND tipo='muestras' ORDER BY sort_order"
)->fetchAll(PDO::FETCH_ASSOC);
} catch (\Throwable $_) {
$_trDesks = [];
@@ -108,16 +108,16 @@ if ($_trIsRecep) {
$_trLinks[] = ['name' => 'Bandeja del día', 'icon' => 'fas fa-layer-group', 'route' => '/erp.php?m=turnero&v=bandeja'];
if ($_trIpLugar) {
// IP registrada: solo ese lugar en el sidebar
// IP registrada: su estación, más las marcadas como de acceso libre
// (Pediatría, Ginecología), que se atienden desde cualquier puesto.
foreach ($_trMuestras as $_m) {
if ((int)$_m['id'] === (int)$_trIpLugar) {
$_trLinks[] = [
'name' => $_m['nombre'],
'icon' => 'fas fa-flask',
'route' => '/erp.php?m=turnero&v=lugar&lugar_id=' . (int)$_m['id'],
];
break;
}
$_esSuyo = (int)$_m['id'] === (int)$_trIpLugar;
if (!$_esSuyo && empty($_m['acceso_libre'])) continue;
$_trLinks[] = [
'name' => $_m['nombre'],
'icon' => $_esSuyo ? 'fas fa-flask' : 'fas fa-share-square',
'route' => '/erp.php?m=turnero&v=lugar&lugar_id=' . (int)$_m['id'],
];
}
} else {
// IP no registrada: TV + todos los lugares muestras