diff --git a/modules/turnero/views/recepcion.php b/modules/turnero/views/recepcion.php index aaf6a65..c73ce4a 100644 --- a/modules/turnero/views/recepcion.php +++ b/modules/turnero/views/recepcion.php @@ -736,7 +736,7 @@ document.addEventListener('DOMContentLoaded', function() {
-
@@ -1168,6 +1168,19 @@ function _actualizarContadorExamenes() { badge.classList.toggle('d-none', n === 0); } +/** + * Limpia la selección de exámenes dejando contador y precios en sincronía. + * examTS.clear() quita los ítems en modo silencioso, así que no dispara + * onItemRemove: sin esto la insignia conserva el número anterior y el panel + * de precios sigue mostrando exámenes que ya no están seleccionados. + */ +function limpiarExamenes() { + if (!examTS) return; + examTS.clear(); + _actualizarContadorExamenes(); + recalcularPrecios(); +} + document.addEventListener('DOMContentLoaded', () => { examTS = new TomSelect('#sel-examenes', { plugins: ['remove_button'], @@ -1711,7 +1724,10 @@ async function consultarExamenesRips(cedula) { async function cargarExamenesRips() { if (!_ripsData?.encontrados?.length || !examTS) return; + // Se agregan en modo silencioso para no recalcular precios en cada examen; + // el recálculo y el contador se hacen una sola vez al terminar. _ripsData.encontrados.forEach(e => examTS.addItem(String(e.exam_tipo_id), true)); + _actualizarContadorExamenes(); if (_ripsData.diagnostico_cod) { document.getElementById('inp-diag').value = _ripsData.diagnostico_cod; } @@ -2382,7 +2398,7 @@ function escJs(s) { return String(s||'').replace(/\\/g,'\\\\').replace(/'/g,"\\' function toggleSoloMuestras() { const solo = document.getElementById('chk-solo-muestras').checked; const wrap = document.getElementById('wrap-examenes'); - if (examTS) { examTS.clear(); solo ? examTS.disable() : examTS.enable(); } + if (examTS) { limpiarExamenes(); solo ? examTS.disable() : examTS.enable(); } wrap.classList.toggle('disabled', solo); document.getElementById('bloque-medico').style.display = solo ? 'none' : ''; if (solo) quitarMedico(); @@ -2390,7 +2406,7 @@ function toggleSoloMuestras() { function resetCheckboxes() { document.getElementById('chk-solo-muestras').checked = false; - if (examTS) { examTS.clear(); examTS.enable(); } + if (examTS) { limpiarExamenes(); examTS.enable(); } document.getElementById('wrap-examenes').classList.remove('disabled'); document.getElementById('bloque-medico').style.display = ''; descartarRips();