fix(turnero): incluir solo_muestras en llamar_turno y bypass consent para entrega
- 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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
dffb242522
commit
925b29b00b
@@ -96,8 +96,12 @@ try {
|
|||||||
$pdo->commit();
|
$pdo->commit();
|
||||||
// Refrescar y retornar
|
// Refrescar y retornar
|
||||||
$stmt = $pdo->prepare(
|
$stmt = $pdo->prepare(
|
||||||
'SELECT t.*, p.codigo AS prioridad_codigo, p.nombre AS prioridad_nombre, p.color AS prioridad_color
|
'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 = ?'
|
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']]);
|
$stmt->execute([$turno['id']]);
|
||||||
$turnoActualizado = $stmt->fetch(PDO::FETCH_ASSOC);
|
$turnoActualizado = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
@@ -127,9 +131,11 @@ try {
|
|||||||
'SELECT t.*,
|
'SELECT t.*,
|
||||||
p.codigo AS prioridad_codigo,
|
p.codigo AS prioridad_codigo,
|
||||||
p.nombre AS prioridad_nombre,
|
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
|
FROM turnero_turnos t
|
||||||
JOIN turnero_prioridades p ON p.id = t.prioridad_id
|
JOIN turnero_prioridades p ON p.id = t.prioridad_id
|
||||||
|
LEFT JOIN turnero_solicitudes ts ON ts.turno_id = t.id
|
||||||
WHERE t.id = ?'
|
WHERE t.id = ?'
|
||||||
);
|
);
|
||||||
$stmt->execute([$turno['id']]);
|
$stmt->execute([$turno['id']]);
|
||||||
|
|||||||
@@ -1545,7 +1545,8 @@ function renderConsentimientos(lista) {
|
|||||||
// Mostrar consentimientos de examen (origen null) + los de esta estación
|
// Mostrar consentimientos de examen (origen null) + los de esta estación
|
||||||
lista = lista.filter(c => !c.origen_lugar_id || c.origen_lugar_id == lugarId);
|
lista = lista.filter(c => !c.origen_lugar_id || c.origen_lugar_id == lugarId);
|
||||||
tieneConsent = lista.length > 0;
|
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"
|
// 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;
|
const pendCount = lista.filter(c => ['pendiente','enviado','visto'].includes(c.estado)).length;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user