bank fields, date range filters, add worker modal, fix empty report crash
This commit is contained in:
@@ -14,40 +14,13 @@
|
||||
<form method="GET" action="{{ url_for('admin.admin_rendiciones') }}" id="filterForm">
|
||||
<div class="row g-2 align-items-end">
|
||||
<div class="col-md-2">
|
||||
<label class="form-label small text-muted mb-1">Año</label>
|
||||
<select name="anio" class="form-select form-select-sm">
|
||||
{% for anio in anios_disponibles %}
|
||||
<option value="{{ anio }}" {% if anio_actual == anio %}selected{% endif %}>{{ anio }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<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">Mes</label>
|
||||
<select name="mes" class="form-select form-select-sm">
|
||||
<option value="01" {% if mes_actual == '01' %}selected{% endif %}>Enero</option>
|
||||
<option value="02" {% if mes_actual == '02' %}selected{% endif %}>Febrero</option>
|
||||
<option value="03" {% if mes_actual == '03' %}selected{% endif %}>Marzo</option>
|
||||
<option value="04" {% if mes_actual == '04' %}selected{% endif %}>Abril</option>
|
||||
<option value="05" {% if mes_actual == '05' %}selected{% endif %}>Mayo</option>
|
||||
<option value="06" {% if mes_actual == '06' %}selected{% endif %}>Junio</option>
|
||||
<option value="07" {% if mes_actual == '07' %}selected{% endif %}>Julio</option>
|
||||
<option value="08" {% if mes_actual == '08' %}selected{% endif %}>Agosto</option>
|
||||
<option value="09" {% if mes_actual == '09' %}selected{% endif %}>Septiembre</option>
|
||||
<option value="10" {% if mes_actual == '10' %}selected{% endif %}>Octubre</option>
|
||||
<option value="11" {% if mes_actual == '11' %}selected{% endif %}>Noviembre</option>
|
||||
<option value="12" {% if mes_actual == '12' %}selected{% endif %}>Diciembre</option>
|
||||
</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-1">
|
||||
<label class="form-label small text-muted mb-1">Día</label>
|
||||
<select name="dia" class="form-select form-select-sm">
|
||||
<option value="">Todos</option>
|
||||
{% for d in dias_disponibles %}
|
||||
<option value="{{ d }}" {% if dia_actual == d %}selected{% endif %}>{{ d }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<label class="form-label small text-muted mb-1">Zona</label>
|
||||
<select name="zona_id" id="zonaSelect" class="form-select form-select-sm">
|
||||
@@ -66,8 +39,7 @@
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-md-1">
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary btn-sm w-100"><i class="bi bi-search"></i> Filtrar</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -16,14 +16,11 @@
|
||||
</div>
|
||||
</div>
|
||||
{{ report_filters(
|
||||
url_for('admin.report_modulo_periodo', modulo_id=modulo_id),
|
||||
url_for('admin.report_modulo_centros_comerciales', modulo_id=modulo_id),
|
||||
workers_list,
|
||||
worker_actual,
|
||||
dia_actual,
|
||||
[('01','Ene'),('02','Feb'),('03','Mar'),('04','Abr'),('05','May'),('06','Jun'),('07','Jul'),('08','Ago'),('09','Sep'),('10','Oct'),('11','Nov'),('12','Dic')],
|
||||
mes_actual,
|
||||
anios_disponibles,
|
||||
anio_actual
|
||||
fecha_inicio,
|
||||
fecha_fin
|
||||
) }}
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body p-0">
|
||||
|
||||
@@ -16,14 +16,11 @@
|
||||
</div>
|
||||
</div>
|
||||
{{ report_filters(
|
||||
url_for('admin.report_modulo_periodo', modulo_id=modulo_id),
|
||||
url_for('admin.report_modulo_comisiones', modulo_id=modulo_id),
|
||||
workers_list,
|
||||
worker_actual,
|
||||
dia_actual,
|
||||
[('01','Ene'),('02','Feb'),('03','Mar'),('04','Abr'),('05','May'),('06','Jun'),('07','Jul'),('08','Ago'),('09','Sep'),('10','Oct'),('11','Nov'),('12','Dic')],
|
||||
mes_actual,
|
||||
anios_disponibles,
|
||||
anio_actual
|
||||
fecha_inicio,
|
||||
fecha_fin
|
||||
) }}
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body">
|
||||
|
||||
@@ -16,14 +16,11 @@
|
||||
</div>
|
||||
</div>
|
||||
{{ report_filters(
|
||||
url_for('admin.report_modulo_periodo', modulo_id=modulo_id),
|
||||
url_for('admin.report_modulo_horarios', modulo_id=modulo_id),
|
||||
workers_list,
|
||||
worker_actual,
|
||||
dia_actual,
|
||||
[('01','Ene'),('02','Feb'),('03','Mar'),('04','Abr'),('05','May'),('06','Jun'),('07','Jul'),('08','Ago'),('09','Sep'),('10','Oct'),('11','Nov'),('12','Dic')],
|
||||
mes_actual,
|
||||
anios_disponibles,
|
||||
anio_actual
|
||||
fecha_inicio,
|
||||
fecha_fin
|
||||
) }}
|
||||
{% if workers_data %}
|
||||
<div class="card shadow-sm border-0">
|
||||
|
||||
@@ -16,14 +16,11 @@
|
||||
</div>
|
||||
</div>
|
||||
{{ report_filters(
|
||||
url_for('admin.report_modulo_periodo', modulo_id=modulo_id),
|
||||
url_for('admin.report_modulo_calculo_iva', modulo_id=modulo_id),
|
||||
workers_list,
|
||||
worker_actual,
|
||||
dia_actual,
|
||||
[('01','Ene'),('02','Feb'),('03','Mar'),('04','Abr'),('05','May'),('06','Jun'),('07','Jul'),('08','Ago'),('09','Sep'),('10','Oct'),('11','Nov'),('12','Dic')],
|
||||
mes_actual,
|
||||
anios_disponibles,
|
||||
anio_actual
|
||||
fecha_inicio,
|
||||
fecha_fin
|
||||
) }}
|
||||
<div class="card shadow-sm border-0">
|
||||
<div class="card-body p-0">
|
||||
|
||||
@@ -55,11 +55,8 @@
|
||||
url_for('admin.report_modulo_periodo', modulo_id=modulo_id),
|
||||
workers_list,
|
||||
worker_actual,
|
||||
dia_actual,
|
||||
[('01','Ene'),('02','Feb'),('03','Mar'),('04','Abr'),('05','May'),('06','Jun'),('07','Jul'),('08','Ago'),('09','Sep'),('10','Oct'),('11','Nov'),('12','Dic')],
|
||||
mes_actual,
|
||||
anios_disponibles,
|
||||
anio_actual
|
||||
fecha_inicio,
|
||||
fecha_fin
|
||||
) }}
|
||||
|
||||
<div class="card shadow-sm border-0">
|
||||
|
||||
@@ -1,53 +1,20 @@
|
||||
{% extends "macros/base.html" %}
|
||||
{% from 'macros/modals.html' import confirm_modal, edit_worker_modal %}
|
||||
{% from 'macros/modals.html' import confirm_modal, edit_worker_modal, add_worker_modal %}
|
||||
{% from "macros/ui.html" import flashed_messages %}
|
||||
|
||||
{% block title %}Gestión de Trabajadores{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2 class="mb-4">Gestión de Trabajadores</h2>
|
||||
|
||||
{{ flashed_messages() }}
|
||||
|
||||
{{ edit_worker_modal(modulos) }}
|
||||
{{ edit_worker_modal(modulos, bancos) }}
|
||||
{{ add_worker_modal(modulos, bancos) }}
|
||||
|
||||
<div class="card mb-4">
|
||||
<div class="card-header bg-primary text-white">Agregar Nuevo Trabajador</div>
|
||||
<div class="card-body">
|
||||
<form method="POST" action="{{ url_for('admin.manage_workers') }}">
|
||||
<div class="row g-3">
|
||||
<div class="col-md-2">
|
||||
<label class="form-label">RUT</label>
|
||||
<input type="text" class="form-control" name="rut" id="rutInput" placeholder="12.345.678-9" value="{{ form.get('rut', '') }}" maxlength="12" required>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label">Nombre Completo</label>
|
||||
<input type="text" class="form-control" name="name" value="{{ form.get('name', '') }}" required>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label class="form-label">Teléfono</label>
|
||||
<input type="text" class="form-control" name="phone" id="phoneInput" placeholder="9 1234 5678" value="{{ form.get('phone', '') }}" required>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<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-2">
|
||||
<label class="form-label">Jornada</label>
|
||||
<select class="form-select" name="tipo" required>
|
||||
<option value="Full Time" {% if form.get('tipo') == 'Full Time' %}selected{% endif %}>Full Time</option>
|
||||
<option value="Part Time" {% if form.get('tipo') == 'Part Time' %}selected{% endif %}>Part Time</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary mt-3">Guardar Trabajador</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||
<h2 class="mb-0">Gestión de Trabajadores</h2>
|
||||
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addWorkerModal">
|
||||
<i class="bi bi-plus-lg"></i> Agregar Trabajador
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="card mb-4 shadow-sm border-0">
|
||||
@@ -88,6 +55,10 @@
|
||||
<th>Teléfono</th>
|
||||
<th>Módulo</th>
|
||||
<th>Tipo</th>
|
||||
<th>Banco</th>
|
||||
<th>N° Cuenta</th>
|
||||
<th>RUT Cuenta</th>
|
||||
<th>Tipo Cuenta</th>
|
||||
<th class="text-end">Acciones</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -103,6 +74,10 @@
|
||||
{{ worker[6] }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="align-middle">{{ worker[7] or '-' }}</td>
|
||||
<td class="align-middle">{{ worker[8] or '-' }}</td>
|
||||
<td class="align-middle">{{ worker[10] or '-' }}</td>
|
||||
<td class="align-middle">{{ worker[9] or '-' }}</td>
|
||||
<td class="text-end">
|
||||
<button type="button"
|
||||
class="btn btn-primary btn-sm btn-edit-sm"
|
||||
@@ -113,7 +88,11 @@
|
||||
data-name="{{ worker[2] }}"
|
||||
data-phone="{{ worker[3] }}"
|
||||
data-modulo="{{ worker[5] }}"
|
||||
data-tipo="{{ worker[6] }}">
|
||||
data-tipo="{{ worker[6] }}"
|
||||
data-nombre-banco="{{ worker[7] }}"
|
||||
data-numero-cuenta="{{ worker[8] }}"
|
||||
data-tipo-cuenta="{{ worker[9] }}"
|
||||
data-rut-banco="{{ worker[10] }}">
|
||||
<i class="bi bi-pencil"></i>
|
||||
</button>
|
||||
|
||||
@@ -132,7 +111,7 @@
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="6" class="text-center py-3 text-muted">No hay trabajadores registrados.</td>
|
||||
<td colspan="10" class="text-center py-3 text-muted">No hay trabajadores registrados.</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user