diff --git a/app.py b/app.py index e1e5fe9..3bff1fd 100644 --- a/app.py +++ b/app.py @@ -588,20 +588,44 @@ def admin_rendiciones(): conn = sqlite3.connect(DB_NAME) c = conn.cursor() - # Fetch all rendiciones, newest first + # 1. Obtenemos la cabecera exacta igual que en view_rendicion (Índices 0 al 10) c.execute(''' SELECT r.id, r.fecha, w.name, m.name, r.turno, - (r.venta_tarjeta + r.venta_mp + r.venta_efectivo) as total_declarado, - r.gastos + r.venta_tarjeta, r.venta_mp, r.venta_efectivo, r.gastos, r.observaciones, + c_w.name FROM rendiciones r JOIN workers w ON r.worker_id = w.id JOIN modulos m ON r.modulo_id = m.id + LEFT JOIN workers c_w ON r.companion_id = c_w.id ORDER BY r.fecha DESC, r.id DESC ''') - rendiciones = c.fetchall() + rendiciones_basicas = c.fetchall() + + rendiciones_completas = [] + + # 2. Por cada rendición, buscamos sus ítems y calculamos los totales + for r in rendiciones_basicas: + c.execute(''' + SELECT p.name, ri.cantidad, ri.precio_historico, ri.comision_historica, + (ri.cantidad * ri.precio_historico) as total_linea, + (ri.cantidad * ri.comision_historica) as total_comision + FROM rendicion_items ri + JOIN productos p ON ri.producto_id = p.id + WHERE ri.rendicion_id = ? + ''', (r[0],)) + items = c.fetchall() + + total_calculado = sum(item[4] for item in items) + comision_total = sum(item[5] for item in items) + + # 3. Anexamos los nuevos datos a la tupla original + # r[11] = items, r[12] = total_calculado, r[13] = comision_total + r_completa = r + (items, total_calculado, comision_total) + rendiciones_completas.append(r_completa) + conn.close() - return render_template('admin_rendiciones.html', rendiciones=rendiciones) + return render_template('admin_rendiciones.html', rendiciones=rendiciones_completas) @app.route('/admin/rendiciones/') @admin_required diff --git a/templates/admin_rendicion_detail.html b/templates/admin_rendicion_detail.html deleted file mode 100644 index fc89171..0000000 --- a/templates/admin_rendicion_detail.html +++ /dev/null @@ -1,132 +0,0 @@ -{% extends "macros/base.html" %} - - -{% block title %}Detalle de Rendición{% endblock %} - -{% block head %} - -{% endblock %} -{% block content %} - -
-

Detalle de Rendición #{{ rendicion[0] }}

- Volver al Historial -
- -
-
-
-
Productos Vendidos
-
- - - - - - - - - - - - {% for item in items %} - - - - - - - - {% else %} - - - - {% endfor %} - - - - - - - - -
ProductoCant.Precio Un.Total LíneaComisión
{{ item[0] }}{{ item[1] }}${{ "{:,.0f}".format(item[2]).replace(',', '.') }}${{ "{:,.0f}".format(item[4]).replace(',', '.') }}${{ "{:,.0f}".format(item[5]).replace(',', '.') }}
No se registraron productos en esta rendición.
Total Calculado por Sistema:${{ "{:,.0f}".format(total_calculado).replace(',', '.') }}${{ "{:,.0f}".format(comision_total).replace(',', '.') }}
-
-
-
- -
-
-
Declaración del Trabajador
-
-
-
Fecha
-
{{ rendicion[1] }}
- -
Trabajador
-
{{ rendicion[2] }}
- -
Acompañante
-
- {% if rendicion[10] %} - {{ rendicion[10] }} - {% else %} - Sin acompañante - {% endif %} -
- -
Módulo
-
{{ rendicion[3] }}
- -
Turno
-
{{ rendicion[4] }}
-
- -
- -
- Tarjetas: - ${{ "{:,.0f}".format(rendicion[5]).replace(',', '.') }} -
-
- Mercado Pago: - ${{ "{:,.0f}".format(rendicion[6]).replace(',', '.') }} -
-
- Efectivo: - ${{ "{:,.0f}".format(rendicion[7]).replace(',', '.') }} -
- - {% set total_declarado = rendicion[5] + rendicion[6] + rendicion[7] %} - -
- Total Declarado: - ${{ "{:,.0f}".format(total_declarado).replace(',', '.') }} -
- - {% if total_declarado != total_calculado %} -
- ⚠️ Discrepancia: El total declarado (${{ "{:,.0f}".format(total_declarado).replace(',', '.') }}) no coincide con la suma de los productos vendidos (${{ "{:,.0f}".format(total_calculado).replace(',', '.') }}). -
- {% endif %} -
-
- -
-
Gastos y Observaciones
-
-
- Monto Gastos: - -${{ "{:,.0f}".format(rendicion[8]).replace(',', '.') }} -
-
- Observaciones: -

- {{ rendicion[9] if rendicion[9] else "Sin observaciones." }} -

-
-
-
-
-
-{% endblock %} \ No newline at end of file diff --git a/templates/admin_rendiciones.html b/templates/admin_rendiciones.html index 4bed7ca..db62d7d 100644 --- a/templates/admin_rendiciones.html +++ b/templates/admin_rendiciones.html @@ -1,5 +1,5 @@ {% extends "macros/base.html" %} -{% from 'macros/modals.html' import view_rendicion_modal %} +{% from 'macros/modals.html' import rendicion_detail_modal %} {% block title %}Historial de Rendiciones{% endblock %} @@ -9,8 +9,6 @@ {% block content %}

Historial de Rendiciones

-{{ view_rendicion_modal() }} -
@@ -32,17 +30,17 @@ - - + + {% else %} @@ -54,35 +52,4 @@
{{ r[2] }} {{ r[3] }} {{ r[4] }}${{ "{:,.0f}".format(r[5]).replace(',', '.') }}${{ "{:,.0f}".format(r[6]).replace(',', '.') }}${{ "{:,.0f}".format((r[5] or 0) + (r[6] or 0) + (r[7] or 0)).replace(',', '.') }}${{ "{:,.0f}".format(r[8] or 0).replace(',', '.') }} + + {{ rendicion_detail_modal(r, r[11], r[12], r[13]) }}
-{% endblock %} - -{% block scripts %} - {% endblock %} \ No newline at end of file diff --git a/templates/macros/modals.html b/templates/macros/modals.html index bd2820e..011d0ea 100644 --- a/templates/macros/modals.html +++ b/templates/macros/modals.html @@ -117,18 +117,126 @@ {% endmacro %} -{% macro view_rendicion_modal() %} -