editor rendiciones v2

This commit is contained in:
2026-03-22 21:16:38 -03:00
parent 73aa15da74
commit 8d6a5b2d9e
3 changed files with 250 additions and 160 deletions

View File

@@ -295,9 +295,9 @@
</div>
{% endmacro %}
{% macro edit_rendicion_modal(rendicion, workers, modulos) %}
{% macro edit_rendicion_modal(rendicion, items, workers, modulos) %}
<div class="modal fade" id="editRendicion{{ rendicion[0] }}" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Editar Rendición #{{ rendicion[0] }}</h5>
@@ -305,105 +305,141 @@
</div>
<form method="POST" action="{{ url_for('edit_rendicion', id=rendicion[0]) }}">
<div class="modal-body text-start">
<h6 class="border-bottom pb-2 text-primary">Datos Generales</h6>
<div class="row g-3 mb-4">
<div class="col-md-6">
<label class="form-label">Fecha</label>
<input type="date" class="form-control" name="fecha" value="{{ rendicion[1] }}" required>
</div>
<div class="col-md-6">
<label class="form-label">Módulo</label>
<select class="form-select" name="modulo_id" required>
{% for mod in modulos %}
<option value="{{ mod[0] }}" {% if mod[0] == rendicion[13] %}selected{% endif %}>{{ mod[1] }}</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<label class="form-label">Trabajador</label>
<select class="form-select" name="worker_id" onchange="updateComisionToggle(this, 'wc_{{ rendicion[0] }}')" required>
{% for w in workers %}
<option value="{{ w[0] }}" data-tipo="{{ w[2] }}" {% if w[0] == rendicion[11] %}selected{% endif %}>{{ w[1] }} ({{ w[2] }})</option>
{% endfor %}
</select>
<div class="form-check form-switch mt-2">
<input class="form-check-input" type="checkbox" role="switch" name="worker_comision" id="wc_{{ rendicion[0] }}" {% if rendicion[14] %}checked{% endif %}>
<label class="form-check-label text-warning small" for="wc_{{ rendicion[0] }}"><i class="bi bi-star me-1"></i>Recibe comisión</label>
</div>
</div>
<div class="col-md-6">
<label class="form-label">Acompañante</label>
<select class="form-select" name="companion_id" onchange="document.getElementById('comp_com_div_{{ rendicion[0] }}').style.display = this.value ? 'block' : 'none'; updateComisionToggle(this, 'cc_{{ rendicion[0] }}');">
<option value="" data-tipo="">Sin acompañante</option>
{% for w in workers %}
<option value="{{ w[0] }}" data-tipo="{{ w[2] }}" {% if w[0] == rendicion[12] %}selected{% endif %}>{{ w[1] }} ({{ w[2] }})</option>
{% endfor %}
</select>
<div class="form-check form-switch mt-2" id="comp_com_div_{{ rendicion[0] }}" {% if not rendicion[12] %}style="display:none;"{% endif %}>
<input class="form-check-input" type="checkbox" role="switch" name="companion_comision" id="cc_{{ rendicion[0] }}" {% if rendicion[15] %}checked{% endif %}>
<label class="form-check-label text-warning small" for="cc_{{ rendicion[0] }}"><i class="bi bi-star me-1"></i>Recibe comisión</label>
<div class="row">
<div class="col-md-8 mb-3">
<div class="card shadow-sm h-100">
<div class="card-header bg-secondary text-white">Productos Vendidos</div>
<div class="card-body p-0">
<div class="table-responsive">
<table class="table table-striped mb-0 text-nowrap">
<thead class="table-dark">
<tr>
<th>Producto</th>
<th class="text-center" style="width: 80px;">Cant.</th>
<th class="text-end">Precio Un.</th>
<th class="text-end">Total Línea</th>
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td class="text-wrap align-middle" style="min-width: 180px;">{{ item[0] }}</td>
<td class="p-1">
<input type="number" class="form-control form-control-sm text-center prod-qty-input"
name="qty_{{ item[6] }}" value="{{ item[1] }}" min="0"
data-price="{{ item[2] }}" data-rid="{{ rendicion[0] }}"
oninput="recalcProductLine(this)">
</td>
<td class="text-end align-middle text-muted">${{ "{:,.0f}".format(item[2]).replace(',', '.') }}</td>
<td class="text-end align-middle fw-bold item-total-line">
${{ "{:,.0f}".format(item[4]).replace(',', '.') }}
</td>
</tr>
{% endfor %}
</tbody>
<tfoot class="table-group-divider">
<tr>
<td colspan="3" class="text-end fw-bold">Total Calculado por Sistema:</td>
<td class="text-end fw-bold fs-6 text-primary" id="sys_total_{{ rendicion[0] }}">
${{ "{:,.0f}".format(rendicion[17] or 0).replace(',', '.') }}
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div>
<h6 class="border-bottom pb-2 text-success">Declaración de Dinero</h6>
<div class="row g-3">
<div class="col-md-3">
<label class="form-label">Débito</label>
<div class="input-group">
<span class="input-group-text">$</span>
<input type="text" class="form-control" id="edit_debito_{{ rendicion[0] }}" name="venta_debito" value="{{ '{:,.0f}'.format(rendicion[4] or 0).replace(',', '.') }}" oninput="calcTotalEdit({{ rendicion[0] }})">
</div>
</div>
<div class="col-md-3">
<label class="form-label">Crédito</label>
<div class="input-group">
<span class="input-group-text">$</span>
<input type="text" class="form-control" id="edit_credito_{{ rendicion[0] }}" name="venta_credito" value="{{ '{:,.0f}'.format(rendicion[5] or 0).replace(',', '.') }}" oninput="calcTotalEdit({{ rendicion[0] }})">
</div>
</div>
<div class="col-md-3">
<label class="form-label">Mercado Pago</label>
<div class="input-group">
<span class="input-group-text">$</span>
<input type="text" class="form-control money-input" id="edit_mp_{{ rendicion[0] }}" name="venta_mp" value="{{ '{:,.0f}'.format(rendicion[6] or 0).replace(',', '.') }}" oninput="calcTotalEdit({{ rendicion[0] }})" required>
</div>
</div>
<div class="col-md-3">
<label class="form-label">Efectivo</label>
<div class="input-group">
<span class="input-group-text">$</span>
<input type="text" class="form-control money-input" id="edit_efectivo_{{ rendicion[0] }}" name="venta_efectivo" value="{{ '{:,.0f}'.format(rendicion[7] or 0).replace(',', '.') }}" oninput="calcTotalEdit({{ rendicion[0] }})" required>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm mb-3 border-info">
<div class="card-header bg-info text-dark fw-bold">Configuración y Dinero</div>
<div class="card-body py-2">
<div class="mb-2">
<label class="small text-muted mb-0">Fecha de Rendición</label>
<input type="date" class="form-control form-control-sm" name="fecha" value="{{ rendicion[1] }}" required>
{% set total_declarado_actual = (rendicion[4] or 0) + (rendicion[5] or 0) + (rendicion[6] or 0) + (rendicion[7] or 0) %}
<div class="col-12 mt-3 bg-body-secondary p-3 rounded border border-secondary-subtle">
<div class="d-flex justify-content-between pb-2">
<span class="text-body-secondary">Total Declarado (Original):</span>
<span class="text-body-secondary">${{ "{:,.0f}".format(total_declarado_actual).replace(',', '.') }}</span>
</div>
<div class="d-flex justify-content-between pt-2 border-top border-secondary-subtle">
<strong class="text-info">Nuevo Total Declarado:</strong>
<strong class="text-info fs-5" id="display_nuevo_total_{{ rendicion[0] }}">${{ "{:,.0f}".format(total_declarado_actual).replace(',', '.') }}</strong>
</div>
</div>
<input type="hidden" name="modulo_id" value="{{ rendicion[13] }}">
<label class="small text-muted mb-0 mt-2 d-block">Trabajador</label>
<select class="form-select form-select-sm" name="worker_id" onchange="updateComisionToggle(this, 'wc_{{ rendicion[0] }}')" required>
{% for w in workers %}
<option value="{{ w[0] }}" data-tipo="{{ w[2] }}" {% if w[0] == rendicion[11] %}selected{% endif %}>{{ w[1] }}</option>
{% endfor %}
</select>
<div class="d-flex justify-content-between align-items-center mt-1">
<div id="badge_worker_{{ rendicion[0] }}"></div>
<div class="form-check form-switch m-0">
<input class="form-check-input" type="checkbox" role="switch" name="worker_comision" id="wc_{{ rendicion[0] }}" {% if rendicion[14] %}checked{% endif %}>
<label class="form-check-label text-warning small" for="wc_{{ rendicion[0] }}">$ Sí</label>
</div>
</div>
</div>
<div class="col-md-4 mt-4">
<label class="form-label text-danger">Gastos</label>
<div class="input-group">
<span class="input-group-text">$</span>
<input type="text" class="form-control money-input border-danger" name="gastos" value="{{ '{:,.0f}'.format(rendicion[8] or 0).replace(',', '.') }}" required>
<div class="mb-2 border-top pt-2">
<label class="small text-muted mb-0">Acompañante</label>
<select class="form-select form-select-sm" name="companion_id" onchange="toggleCompDiv({{ rendicion[0] }}, this)">
<option value="" data-tipo="">Sin acompañante</option>
{% for w in workers %}
<option value="{{ w[0] }}" data-tipo="{{ w[2] }}" {% if w[0] == rendicion[12] %}selected{% endif %}>{{ w[1] }}</option>
{% endfor %}
</select>
<div class="d-flex justify-content-between align-items-center mt-1" id="comp_com_div_{{ rendicion[0] }}" {% if not rendicion[12] %}style="display:none;"{% endif %}>
<div id="badge_comp_{{ rendicion[0] }}"></div>
<div class="form-check form-switch m-0">
<input class="form-check-input" type="checkbox" role="switch" name="companion_comision" id="cc_{{ rendicion[0] }}" {% if rendicion[15] %}checked{% endif %}>
<label class="form-check-label text-warning small" for="cc_{{ rendicion[0] }}">$ Sí</label>
</div>
</div>
</div>
<div class="row g-1 mt-1 border-top pt-2">
<div class="col-6">
<label class="small text-muted mb-0">Débito</label>
<input type="text" class="form-control form-control-sm text-end money-input" id="edit_debito_{{ rendicion[0] }}" name="venta_debito" value="{{ '{:,.0f}'.format(rendicion[4] or 0).replace(',', '.') }}" oninput="calcTotalEdit({{ rendicion[0] }})">
</div>
<div class="col-6">
<label class="small text-muted mb-0">Crédito</label>
<input type="text" class="form-control form-control-sm text-end money-input" id="edit_credito_{{ rendicion[0] }}" name="venta_credito" value="{{ '{:,.0f}'.format(rendicion[5] or 0).replace(',', '.') }}" oninput="calcTotalEdit({{ rendicion[0] }})">
</div>
<div class="col-6">
<label class="small text-muted mb-0">Mercado Pago</label>
<input type="text" class="form-control form-control-sm text-end money-input" id="edit_mp_{{ rendicion[0] }}" name="venta_mp" value="{{ '{:,.0f}'.format(rendicion[6] or 0).replace(',', '.') }}" oninput="calcTotalEdit({{ rendicion[0] }})">
</div>
<div class="col-6">
<label class="small text-muted mb-0">Efectivo</label>
<input type="text" class="form-control form-control-sm text-end money-input" id="edit_efectivo_{{ rendicion[0] }}" name="venta_efectivo" value="{{ '{:,.0f}'.format(rendicion[7] or 0).replace(',', '.') }}" oninput="calcTotalEdit({{ rendicion[0] }})">
</div>
</div>
<div class="d-flex justify-content-between mt-3 pt-2 border-top">
<strong class="fs-6">Total Declarado:</strong>
<strong class="fs-5 text-info" id="display_nuevo_total_{{ rendicion[0] }}">${{ "{:,.0f}".format((rendicion[4] or 0) + (rendicion[5] or 0) + (rendicion[6] or 0) + (rendicion[7] or 0)).replace(',', '.') }}</strong>
</div>
</div>
</div>
<div class="card shadow-sm border-danger">
<div class="card-header bg-danger text-white fw-bold">Gastos y Observaciones</div>
<div class="card-body py-2">
<div class="mb-2">
<label class="small text-danger fw-bold">Monto Gastos</label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-dark border-danger text-danger">-$</span>
<input type="text" class="form-control money-input border-danger text-end" name="gastos" value="{{ '{:,.0f}'.format(rendicion[8] or 0).replace(',', '.') }}" required>
</div>
</div>
<div class="mb-0">
<label class="small text-muted">Observaciones</label>
<textarea class="form-control form-control-sm bg-dark text-white" name="observaciones" rows="2">{{ rendicion[9] }}</textarea>
</div>
</div>
</div>
</div>
<div class="col-md-8 mt-4">
<label class="form-label">Observaciones</label>
<textarea class="form-control" name="observaciones" rows="1">{{ rendicion[9] }}</textarea>
</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 Cambios</button>
</div> <div class="modal-footer py-2">
<button type="button" class="btn btn-secondary btn-sm" data-bs-dismiss="modal">Cancelar</button>
<button type="submit" class="btn btn-primary btn-sm px-4">Guardar Cambios</button>
</div>
</form>
</div>