fix: selección de empresa/convenio rota por JSON en atributo HTML

JSON.stringify(e) dentro de onmousedown="..." producía comillas dobles
que el parser HTML interpretaba como cierre del atributo, dejando la
función con un objeto incompleto. Ahora los resultados se guardan en
_empresaResultados[] y el handler pasa solo el índice numérico.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-16 19:44:44 -05:00
co-authored by Claude Sonnet 4.6
parent c22c38a58f
commit 123ab0e034
+9 -4
View File
@@ -2142,6 +2142,7 @@ function resetCheckboxes() {
// ── Empresa / Convenio ────────────────────────────────────────
let _empresaActiva = null;
let _empresaBusqTimer;
let _empresaResultados = [];
function buscarEmpresa() {
clearTimeout(_empresaBusqTimer);
@@ -2154,12 +2155,12 @@ async function _doEmpresaSearch() {
if (q.length < 2) { ul.classList.add('d-none'); return; }
const res = await fetch(`${BASE_URL_API_LAB}empresas.php?action=list&search=${encodeURIComponent(q)}&activa=1&limit=10`);
const j = await res.json();
const list = j.empresas || [];
if (!list.length) { ul.innerHTML = '<li class="px-3 py-2 text-muted small">Sin resultados</li>'; ul.classList.remove('d-none'); return; }
ul.innerHTML = list.map(e => `
_empresaResultados = j.empresas || [];
if (!_empresaResultados.length) { ul.innerHTML = '<li class="px-3 py-2 text-muted small">Sin resultados</li>'; ul.classList.remove('d-none'); return; }
ul.innerHTML = _empresaResultados.map((e, i) => `
<li class="px-3 py-2 cursor-pointer hover-bg"
style="cursor:pointer;border-bottom:1px solid #f1f5f9"
onmousedown="seleccionarEmpresa(${JSON.stringify(e)})">
onmousedown="_seleccionarEmpresaIdx(${i})">
<div class="fw-semibold small">${escHtml(e.nombre)}</div>
<div class="text-muted" style="font-size:.75rem">NIT ${escHtml(e.nit)}${e.tarifa_nombre ? ' · ' + escHtml(e.tarifa_nombre) : ''}</div>
</li>
@@ -2167,6 +2168,10 @@ async function _doEmpresaSearch() {
ul.classList.remove('d-none');
}
function _seleccionarEmpresaIdx(i) {
seleccionarEmpresa(_empresaResultados[i]);
}
async function seleccionarEmpresa(e) {
document.getElementById('empresa-resultados').classList.add('d-none');
document.getElementById('empresa-buscador').classList.add('d-none');