From 815f136dcae5ac01ea9d22a2390b88affc67199b Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:11:21 -0500 Subject: [PATCH] =?UTF-8?q?fix:=20secciones=20de=20toma=20se=20renderizan?= =?UTF-8?q?=20en=20orden=20cronol=C3=B3gico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El render iteraba $esquema en orden original del JSON — Otro siempre quedaba de último. Ahora se re-ordena $esquema agrupando las secciones de toma por su minuto (usando $_mpSepOrder construido del usort ya existente) antes de entrar al foreach de render. Co-Authored-By: Claude Sonnet 4.6 --- ver_formulario_enviado.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/ver_formulario_enviado.php b/ver_formulario_enviado.php index 495a909..369798e 100644 --- a/ver_formulario_enviado.php +++ b/ver_formulario_enviado.php @@ -302,6 +302,9 @@ if ($modoTurnero && $embebido && $_soloFirmaPro) { } // Ordenar por tiempo antes de agrupar para garantizar orden cronológico usort($_mpSecs, fn($a, $b) => $a['min'] <=> $b['min']); + // Mapa sep_id → minuto para re-ordenar secciones en el render + $_mpSepOrder = []; + foreach ($_mpSecs as $_s) { $_mpSepOrder[$_s['sep_id']] = $_s['min']; } $_mpGroups = []; foreach ($_mpSecs as $_s) { $_mpGroups[$_s['tipo']][] = $_s; } $_mpGroupsFull = $_mpGroups; @@ -892,6 +895,26 @@ function _addExamWizardHtml(string $cid): string { $_firmaGlobalPacienteUsada = false; // la firma global solo va al primer campo firma if ($compact): ?>
false, 'min' => null, 'campos' => []]; + foreach ($esquema as $__c) { + if (($__c['tipo'] ?? '') === 'separador') { + if (!empty($__cur['campos'])) $__secs[] = $__cur; + $__it = isset($_mpSepOrder[$__c['id'] ?? '']); + $__cur = ['is_toma' => $__it, 'min' => $__it ? $_mpSepOrder[$__c['id']] : null, 'campos' => [$__c]]; + } else { + $__cur['campos'][] = $__c; + } + } + if (!empty($__cur['campos'])) $__secs[] = $__cur; + $__tomaIdxs = []; $__tomaList = []; + foreach ($__secs as $i => $s) { if ($s['is_toma']) { $__tomaIdxs[] = $i; $__tomaList[] = $s; } } + usort($__tomaList, fn($a, $b) => $a['min'] <=> $b['min']); + foreach ($__tomaIdxs as $j => $i) { $__secs[$i] = $__tomaList[$j]; } + $esquema = array_merge(...array_column($__secs, 'campos')); + } + $_saltarSeccion = false; $_mpSkipSec = false; // toma excluida por _tomas_config; siempre ocultar sin importar modoEditar foreach ($esquema as $campo):