fix: recepcion_desk_id quedaba NULL en historial

Agregado selector de escritorio al abrir recepcion.php sin desk_id.
Si hay múltiples escritorios muestra un modal para elegir; si hay uno
solo se asigna automáticamente. Así recepcion_desk_id siempre queda
registrado en el turno y aparece correctamente en el historial.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-06-24 01:27:28 -05:00
co-authored by Claude Sonnet 4.6
parent 9b4cdcc817
commit 64f2e7c784
+43 -7
View File
@@ -32,16 +32,23 @@ try {
$examenesAgrupados[$cat][] = $ex;
}
// Escritorio de recepción (opcional, vía ?desk_id=X)
// Escritorio de recepción (vía ?desk_id=X)
$deskId = (int)($_GET['desk_id'] ?? 0);
$desk = null;
$desksRecepcion = $pdo->query(
"SELECT id, nombre FROM turnero_lugares WHERE tipo='recepcion' AND activo=1 ORDER BY sort_order"
)->fetchAll(PDO::FETCH_ASSOC);
if ($deskId) {
$stmtDesk = $pdo->prepare(
"SELECT id, nombre FROM turnero_lugares WHERE id = ? AND tipo = 'recepcion' AND activo = 1"
);
$stmtDesk->execute([$deskId]);
$desk = $stmtDesk->fetch(PDO::FETCH_ASSOC) ?: null;
if (!$desk) { $deskId = 0; } // ID inválido → sin desk
foreach ($desksRecepcion as $d) {
if ($d['id'] === $deskId) { $desk = $d; break; }
}
if (!$desk) { $deskId = 0; }
}
// Si solo hay un escritorio, asignarlo automáticamente
if (!$deskId && count($desksRecepcion) === 1) {
$desk = $desksRecepcion[0];
$deskId = (int)$desk['id'];
}
} catch (\Throwable $e) {
$lugares = [];
@@ -256,6 +263,35 @@ $SIDEBAR_ICON = 'fas fa-ticket-alt';
require_once __DIR__ . '/../../../shared/components/sidebar.php';
?>
<?php if (!$deskId && count($desksRecepcion) > 1): ?>
<!-- Modal selector de escritorio (se muestra si no hay desk_id en URL) -->
<div class="modal fade" id="modalDeskSelect" tabindex="-1" data-bs-backdrop="static" data-bs-keyboard="false">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header" style="background:var(--doc-color,#1565c0);color:#fff">
<h5 class="modal-title"><i class="fas fa-desktop me-2"></i>Seleccione su escritorio</h5>
</div>
<div class="modal-body pb-2">
<p class="text-muted small mb-3">¿Desde qué escritorio de recepción está trabajando hoy?</p>
<div class="d-grid gap-2">
<?php foreach ($desksRecepcion as $d): ?>
<a href="?m=turnero&v=recepcion&desk_id=<?= $d['id'] ?>"
class="btn btn-outline-primary btn-lg">
<i class="fas fa-chair me-2"></i><?= htmlspecialchars($d['nombre']) ?>
</a>
<?php endforeach; ?>
</div>
</div>
</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
new bootstrap.Modal(document.getElementById('modalDeskSelect')).show();
});
</script>
<?php endif; ?>
<main class="main-content" style="padding:0">
<!-- ── Top bar ──────────────────────────────────────────── -->