fix(tramites): incluir también al Abogado Solicitante en dropdown de Horas

Refinamiento del commit anterior: el dropdown de "Horas Incurridas"
ahora incluye al Abogado Solicitante del trámite + los Involucrados
(deduplicado por nombre).

Si el trámite no tiene ni solicitante asignado ni involucrados,
inputs/botón quedan disabled con mensaje "— Sin asignados —".
This commit is contained in:
Soporte ZH Consultores
2026-06-05 00:36:36 +00:00
parent 729f1b4164
commit a01d1b29d0
+18 -8
View File
@@ -529,14 +529,24 @@ function buildDetail(dept,r){
<h4>Horas Incurridas</h4>
${hrs?`<ul class="hours-list">${hrs}</ul>`:'<p style="color:var(--gray);font-size:11px">Sin horas registradas.</p>'}
<div class="total-hrs">Total: ${totalH} h</div>
<div class="add-hours" onclick="event.stopPropagation()">
${(r.involucrados&&r.involucrados.length)
? `<select id="hr-abog-${r.id}">${r.involucrados.map(u=>`<option>${esc(u.name||u.email)}</option>`).join('')}</select>`
: `<select id="hr-abog-${r.id}" disabled title="Agrega un involucrado al trámite primero"><option>— Sin involucrados —</option></select>`}
<input type="number" id="hr-val-${r.id}" min="0.1" step="0.1" placeholder="Horas" style="width:70px" ${(r.involucrados&&r.involucrados.length)?'':'disabled'}>
<input type="text" id="hr-desc-${r.id}" placeholder="Descripción" style="flex:1" ${(r.involucrados&&r.involucrados.length)?'':'disabled'}>
<button class="btn btn-primary btn-sm" onclick="addHours('${dept}','${r.id}')" ${(r.involucrados&&r.involucrados.length)?'':'disabled'} title="${(r.involucrados&&r.involucrados.length)?'Registrar horas':'Agrega un involucrado al trámite primero'}">+</button>
</div>
${(()=>{
// Opciones del dropdown de Horas: abogado solicitante + todos los involucrados,
// deduplicados por nombre. Si el trámite no tiene ni solicitante ni involucrados,
// el dropdown queda deshabilitado.
const opts = new Set();
if (r.abogado) opts.add(r.abogado);
(r.involucrados||[]).forEach(u => { if (u.name||u.email) opts.add(u.name||u.email); });
const list = [...opts];
const enabled = list.length > 0;
return `<div class="add-hours" onclick="event.stopPropagation()">
${enabled
? `<select id="hr-abog-${r.id}">${list.map(n=>`<option>${esc(n)}</option>`).join('')}</select>`
: `<select id="hr-abog-${r.id}" disabled title="Agrega un abogado solicitante o involucrado primero"><option>— Sin asignados —</option></select>`}
<input type="number" id="hr-val-${r.id}" min="0.1" step="0.1" placeholder="Horas" style="width:70px" ${enabled?'':'disabled'}>
<input type="text" id="hr-desc-${r.id}" placeholder="Descripción" style="flex:1" ${enabled?'':'disabled'}>
<button class="btn btn-primary btn-sm" onclick="addHours('${dept}','${r.id}')" ${enabled?'':'disabled'} title="${enabled?'Registrar horas':'Agrega un abogado solicitante o involucrado primero'}">+</button>
</div>`;
})()}
</div>
</div>
</div>`;