fix: corrección portal enfermero — pagos y agendamiento

- fix: portal.renderAgenda → portal._renderLista() (error JS al registrar pago)
- feat: modal nueva agenda añade tipo_cliente (particular/seguro), seguro_nombre, autorizacion, valor_domicilio, valor_copago
- feat: toggleSeguro() muestra/oculta campo EPS según tipo seleccionado
- fix: abrir() resetea todos los campos nuevos en cada apertura del modal
- datos de cobro se envían al guardar y se auto-asigna la enfermera creadora
This commit is contained in:
Lizandro Guarnizo
2026-03-12 23:02:48 -05:00
parent eaebda9fe7
commit 702323f852
+56 -1
View File
@@ -794,6 +794,46 @@ document.addEventListener('DOMContentLoaded', () => {
</select>
</div>
<!-- Tipo de cliente y cobros -->
<div class="row g-2 mb-2">
<div class="col-6">
<label class="form-label small">Tipo de cliente</label>
<select id="na-tipo-cliente" class="form-select form-select-sm"
onchange="agendaNueva.toggleSeguro(this.value)">
<option value="particular">👛 Particular</option>
<option value="seguro">🛡️ Seguro / EPS</option>
</select>
</div>
<div class="col-6" id="na-bloque-seguro" style="display:none">
<label class="form-label small">Seguro / EPS</label>
<input type="text" id="na-seguro-nombre" class="form-control form-control-sm"
placeholder="Ej: Sura, Nueva EPS…">
</div>
</div>
<div class="row g-2 mb-2" id="na-bloque-autorizacion">
<div class="col-6">
<label class="form-label small">N° de autorización</label>
<input type="text" id="na-autorizacion" class="form-control form-control-sm"
placeholder="Número de autorización">
</div>
</div>
<div class="row g-2 mb-3">
<div class="col-6">
<label class="form-label small">Valor domicilio</label>
<div class="input-group input-group-sm">
<span class="input-group-text">$</span>
<input type="number" id="na-valor-dom" class="form-control" min="0" step="1000" placeholder="0">
</div>
</div>
<div class="col-6">
<label class="form-label small">Copago cliente</label>
<div class="input-group input-group-sm">
<span class="input-group-text">$</span>
<input type="number" id="na-valor-cop" class="form-control" min="0" step="1000" placeholder="0">
</div>
</div>
</div>
<!-- Notas -->
<div class="mb-2">
<label class="form-label small">Notas / instrucciones</label>
@@ -899,6 +939,12 @@ const agendaNueva = {
document.getElementById('na-hora').value = '';
document.getElementById('na-tipo').value = '';
document.getElementById('na-notas').value = '';
document.getElementById('na-tipo-cliente').value = 'particular';
document.getElementById('na-seguro-nombre').value = '';
document.getElementById('na-autorizacion').value = '';
document.getElementById('na-valor-dom').value = '';
document.getElementById('na-valor-cop').value = '';
agendaNueva.toggleSeguro('particular');
document.getElementById('na-fecha').value = document.getElementById('portal-fecha').value;
document.getElementById('na-sugerencias').classList.add('d-none');
document.getElementById('na-paciente-elegido').classList.add('d-none');
@@ -910,6 +956,10 @@ const agendaNueva = {
this._modal.show();
},
toggleSeguro(val) {
document.getElementById('na-bloque-seguro').style.display = val === 'seguro' ? '' : 'none';
},
async _buscarPacientes(q) {
if (q.length < 2) {
document.getElementById('na-sugerencias').classList.add('d-none');
@@ -994,6 +1044,11 @@ const agendaNueva = {
fecha_programada: fecha,
hora_programada: document.getElementById('na-hora').value || null,
tipo_servicio: document.getElementById('na-tipo').value || null,
tipo_cliente: document.getElementById('na-tipo-cliente').value || 'particular',
seguro_nombre: document.getElementById('na-seguro-nombre').value.trim() || null,
autorizacion: document.getElementById('na-autorizacion').value.trim() || null,
valor_domicilio: parseFloat(document.getElementById('na-valor-dom').value) || null,
valor_copago: parseFloat(document.getElementById('na-valor-cop').value) || null,
notas_admin: document.getElementById('na-notas').value.trim() || null,
estado: 'programado',
...(ENFERMERA_ID ? { enfermera_id: ENFERMERA_ID } : {}),
@@ -1226,7 +1281,7 @@ const pagoModal = {
// Cerrar modal y re-renderizar
if (this._bsModal) this._bsModal.hide();
portal.renderAgenda();
portal._renderLista();
} catch(e) {
alert('Error: ' + e.message);
}