From 925b29b00b6c5ba22cfadfeb95e96a2f04c39772 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 28 Jul 2026 09:20:56 -0500 Subject: [PATCH] fix(turnero): incluir solo_muestras en llamar_turno y bypass consent para entrega MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - llamar_turno.php: ambos SELECT de refresco hacen LEFT JOIN con turnero_solicitudes para devolver COALESCE(ts.solo_muestras,0). Sin este JOIN, JS recibía undefined y _esSoloEntrega() retornaba false → polling de consentimientos arrancaba → hayPendientes=true → finalizar bloqueado (caso turno E047 ALVARO TIRADO). - lugar.php renderConsentimientos: hayPendientes se fuerza a false cuando _esSoloEntrega(turnoActivo) es true, para que un consentimiento huérfano previo no bloquee la finalización en turnos de solo entrega de muestras. Co-Authored-By: Claude Sonnet 4.6 --- modules/turnero/api/llamar_turno.php | 12 +++++++++--- modules/turnero/views/lugar.php | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/modules/turnero/api/llamar_turno.php b/modules/turnero/api/llamar_turno.php index c95a04e..5ad006d 100644 --- a/modules/turnero/api/llamar_turno.php +++ b/modules/turnero/api/llamar_turno.php @@ -96,8 +96,12 @@ try { $pdo->commit(); // Refrescar y retornar $stmt = $pdo->prepare( - 'SELECT t.*, p.codigo AS prioridad_codigo, p.nombre AS prioridad_nombre, p.color AS prioridad_color - FROM turnero_turnos t JOIN turnero_prioridades p ON p.id = t.prioridad_id WHERE t.id = ?' + 'SELECT t.*, p.codigo AS prioridad_codigo, p.nombre AS prioridad_nombre, p.color AS prioridad_color, + COALESCE(ts.solo_muestras, 0) AS solo_muestras + FROM turnero_turnos t + JOIN turnero_prioridades p ON p.id = t.prioridad_id + LEFT JOIN turnero_solicitudes ts ON ts.turno_id = t.id + WHERE t.id = ?' ); $stmt->execute([$turno['id']]); $turnoActualizado = $stmt->fetch(PDO::FETCH_ASSOC); @@ -127,9 +131,11 @@ try { 'SELECT t.*, p.codigo AS prioridad_codigo, p.nombre AS prioridad_nombre, - p.color AS prioridad_color + p.color AS prioridad_color, + COALESCE(ts.solo_muestras, 0) AS solo_muestras FROM turnero_turnos t JOIN turnero_prioridades p ON p.id = t.prioridad_id + LEFT JOIN turnero_solicitudes ts ON ts.turno_id = t.id WHERE t.id = ?' ); $stmt->execute([$turno['id']]); diff --git a/modules/turnero/views/lugar.php b/modules/turnero/views/lugar.php index a97a6a0..9b9fe18 100644 --- a/modules/turnero/views/lugar.php +++ b/modules/turnero/views/lugar.php @@ -1545,7 +1545,8 @@ function renderConsentimientos(lista) { // Mostrar consentimientos de examen (origen null) + los de esta estación lista = lista.filter(c => !c.origen_lugar_id || c.origen_lugar_id == lugarId); tieneConsent = lista.length > 0; - hayPendientes = lista.some(c => !['firmado','rechazado','cerrado_anticipado'].includes(c.estado)); + hayPendientes = !_esSoloEntrega(turnoActivo) && + lista.some(c => !['firmado','rechazado','cerrado_anticipado'].includes(c.estado)); // en_progreso bloquea finalizar pero no muestra aviso de "pendiente sin acción" const pendCount = lista.filter(c => ['pendiente','enviado','visto'].includes(c.estado)).length;