|
|
@@ -17,6 +17,7 @@ from django.template.loader import get_template
|
|
|
from django.http import HttpResponse
|
|
|
from weasyprint import HTML
|
|
|
import tempfile
|
|
|
+from django.utils.dateparse import parse_date
|
|
|
|
|
|
import logging
|
|
|
import re
|
|
|
@@ -462,37 +463,33 @@ def resumen_saldos_mensuales(request):
|
|
|
|
|
|
|
|
|
@login_required
|
|
|
-def informe_cuenta(request, cuenta_id):
|
|
|
- cuenta = get_object_or_404(Cuenta, id=cuenta_id, usuario=request.user)
|
|
|
+def informe_cuenta(request):
|
|
|
+ cuenta_id = request.GET.get('cuenta_id')
|
|
|
+ fecha_inicio = parse_date(request.GET.get('fecha_inicio')) or date.today().replace(day=1)
|
|
|
+ fecha_fin = parse_date(request.GET.get('fecha_fin')) or date.today()
|
|
|
|
|
|
+ cuenta = get_object_or_404(Cuenta, id=cuenta_id)
|
|
|
movimientos = Movimiento.objects.filter(
|
|
|
- Q(cuenta_origen=cuenta) | Q(cuenta_destino=cuenta)
|
|
|
+ Q(cuenta_origen=cuenta) | Q(cuenta_destino=cuenta),
|
|
|
+ fecha__date__range=(fecha_inicio, fecha_fin)
|
|
|
).order_by('fecha')
|
|
|
|
|
|
+ # Cálculo de saldos después de cada movimiento
|
|
|
saldo = 0
|
|
|
- historial = []
|
|
|
-
|
|
|
+ movimientos_con_saldo = []
|
|
|
for mov in movimientos:
|
|
|
if mov.cuenta_origen == cuenta:
|
|
|
saldo -= mov.monto
|
|
|
- tipo = 'Salida'
|
|
|
elif mov.cuenta_destino == cuenta:
|
|
|
saldo += mov.monto
|
|
|
- tipo = 'Entrada'
|
|
|
- else:
|
|
|
- tipo = 'Otro' # Por seguridad, aunque no debería ocurrir
|
|
|
-
|
|
|
- historial.append({
|
|
|
- 'fecha': mov.fecha,
|
|
|
- 'descripcion': mov.descripcion,
|
|
|
- 'monto': mov.monto,
|
|
|
- 'tipo': tipo,
|
|
|
- 'saldo_despues': saldo,
|
|
|
- })
|
|
|
+ movimientos_con_saldo.append((mov, saldo))
|
|
|
|
|
|
+ # Renderizado del PDF o del HTML como prefieras
|
|
|
context = {
|
|
|
'cuenta': cuenta,
|
|
|
- 'historial': historial,
|
|
|
+ 'movimientos_con_saldo': movimientos_con_saldo,
|
|
|
+ 'fecha_inicio': fecha_inicio,
|
|
|
+ 'fecha_fin': fecha_fin,
|
|
|
}
|
|
|
return render(request, 'informe_cuenta.html', context)
|
|
|
|