bank fields, date range filters, add worker modal, fix empty report crash

This commit is contained in:
2026-06-22 01:28:33 -04:00
parent dcad421c27
commit 81251fb869
16 changed files with 346 additions and 225 deletions

View File

@@ -82,7 +82,7 @@
</div>
{% endmacro %}
{% macro edit_worker_modal(modulos) %}
{% macro edit_worker_modal(modulos, bancos) %}
<div class="modal fade" id="editWorkerModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
@@ -120,6 +120,37 @@
<option value="Part Time">Part Time</option>
</select>
</div>
<div class="mb-3">
<label class="form-label">Banco</label>
<select class="form-select" name="nombre_banco" id="edit_worker_nombre_banco" onchange="toggleOtroBanco(this, 'edit_otro_banco_wrapper')">
<option value="">Seleccionar...</option>
{% for b in bancos %}
<option value="{{ b }}">{{ b }}</option>
{% endfor %}
<option value="__otro__">Otro...</option>
</select>
<div id="edit_otro_banco_wrapper" class="mt-1" style="display:none">
<input type="text" class="form-control form-control-sm" name="nombre_banco_otro" id="edit_worker_nombre_banco_otro" placeholder="Especificar banco...">
</div>
</div>
<div class="mb-3">
<label class="form-label">N° Cuenta</label>
<input type="text" class="form-control" name="numero_cuenta" id="edit_worker_numero_cuenta" placeholder="Ej: 12345678">
</div>
<div class="mb-3">
<label class="form-label">RUT Cuenta</label>
<input type="text" class="form-control" name="rut_banco" id="edit_worker_rut_banco" placeholder="Ej: 12.345.678-9">
</div>
<div class="mb-3">
<label class="form-label">Tipo Cuenta</label>
<select class="form-select" name="tipo_cuenta" id="edit_worker_tipo_cuenta">
<option value="">Seleccionar...</option>
<option value="Cuenta Corriente">Cuenta Corriente</option>
<option value="Cuenta Vista">Cuenta Vista</option>
<option value="Cuenta Rut">Cuenta Rut</option>
<option value="Cuenta de Ahorro">Cuenta de Ahorro</option>
</select>
</div>
</form>
<hr>
@@ -144,6 +175,88 @@
</div>
{% endmacro %}
{% macro add_worker_modal(modulos, bancos) %}
<div class="modal fade" id="addWorkerModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Agregar Nuevo Trabajador</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form method="POST" action="{{ url_for('admin.manage_workers') }}">
<div class="modal-body">
<div class="row g-3">
<div class="col-md-4">
<label class="form-label">RUT</label>
<input type="text" class="form-control" name="rut" id="addRutInput" placeholder="12.345.678-9" maxlength="12" required>
</div>
<div class="col-md-8">
<label class="form-label">Nombre Completo</label>
<input type="text" class="form-control" name="name" required>
</div>
<div class="col-md-4">
<label class="form-label">Teléfono</label>
<input type="text" class="form-control" name="phone" id="addPhoneInput" placeholder="9 1234 5678" required>
</div>
<div class="col-md-4">
<label class="form-label">Módulo Asignado</label>
<select class="form-select" name="modulo_id" required>
<option value="" selected disabled>Seleccionar Módulo...</option>
{% for mod in modulos %}
<option value="{{ mod[0] }}">{{ mod[2] }} - {{ mod[1] }}</option>
{% endfor %}
</select>
</div>
<div class="col-md-4">
<label class="form-label">Jornada</label>
<select class="form-select" name="tipo" required>
<option value="Full Time">Full Time</option>
<option value="Part Time">Part Time</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label">Banco</label>
<select class="form-select" name="nombre_banco" onchange="toggleOtroBanco(this, 'add_otro_banco_wrapper')">
<option value="">Seleccionar...</option>
{% for b in bancos %}
<option value="{{ b }}">{{ b }}</option>
{% endfor %}
<option value="__otro__">Otro...</option>
</select>
<div id="add_otro_banco_wrapper" class="mt-1" style="display:none">
<input type="text" class="form-control form-control-sm" name="nombre_banco_otro" placeholder="Especificar banco...">
</div>
</div>
<div class="col-md-4">
<label class="form-label">N° Cuenta</label>
<input type="text" class="form-control" name="numero_cuenta" placeholder="Ej: 12345678">
</div>
<div class="col-md-4">
<label class="form-label">RUT Cuenta</label>
<input type="text" class="form-control" name="rut_banco" placeholder="Ej: 12.345.678-9">
</div>
<div class="col-md-4">
<label class="form-label">Tipo Cuenta</label>
<select class="form-select" name="tipo_cuenta">
<option value="">Seleccionar...</option>
<option value="Cuenta Corriente">Cuenta Corriente</option>
<option value="Cuenta Vista">Cuenta Vista</option>
<option value="Cuenta Rut">Cuenta Rut</option>
<option value="Cuenta de Ahorro">Cuenta de Ahorro</option>
</select>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
<button type="submit" class="btn btn-primary">Guardar Trabajador</button>
</div>
</form>
</div>
</div>
</div>
{% endmacro %}
{% macro rendicion_detail_modal(rendicion, items, total_calculado, comision_total) %}
<div class="modal fade" id="viewRendicion{{ rendicion[0] }}" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
@@ -575,30 +688,17 @@
</div>
{% endmacro %}
{% macro report_filters(action_url, workers, selected_worker, selected_dia, meses, mes_act, anios, anio_act) %}
{% macro report_filters(action_url, workers, selected_worker, fecha_inicio, fecha_fin) %}
<div class="card shadow-sm mb-4 border-0 bg-dark-subtle">
<div class="card-body p-3">
<form method="GET" action="{{ action_url }}" class="row g-2 align-items-end">
<div class="col-md-2">
<label class="form-label small text-muted mb-1">Año/Mes</label>
<div class="input-group input-group-sm">
<select name="anio" class="form-select">
{% for a in anios %}<option value="{{ a }}" {{ 'selected' if a|string == anio_act|string }}>{{ a }}</option>{% endfor %}
</select>
<select name="mes" class="form-select">
{% for m_num, m_name in meses %}<option value="{{ m_num }}" {{ 'selected' if m_num == mes_act }}>{{ m_name }}</option>{% endfor %}
</select>
</div>
<label class="form-label small text-muted mb-1">Desde</label>
<input type="date" name="fecha_inicio" class="form-control form-control-sm" value="{{ fecha_inicio }}">
</div>
<div class="col-md-2">
<label class="form-label small text-muted mb-1">Día (Opcional)</label>
<select name="dia" class="form-select form-select-sm">
<option value="">Todos los días</option>
{% for d in range(1, 32) %}
{% set d_str = "%02d"|format(d) %}
<option value="{{ d_str }}" {{ 'selected' if d_str == selected_dia }}>{{ d_str }}</option>
{% endfor %}
</select>
<label class="form-label small text-muted mb-1">Hasta</label>
<input type="date" name="fecha_fin" class="form-control form-control-sm" value="{{ fecha_fin }}">
</div>
<div class="col-md-3">
<label class="form-label small text-muted mb-1">Trabajador</label>