|
|
@@ -17,6 +17,8 @@ def dashboard(request):
|
|
|
'favoritas': favoritas,
|
|
|
})
|
|
|
|
|
|
+# Movimientos
|
|
|
+
|
|
|
@login_required
|
|
|
def agregar_movimiento(request):
|
|
|
if request.method == 'POST':
|
|
|
@@ -40,6 +42,60 @@ def agregar_movimiento(request):
|
|
|
return render(request, 'agregar_movimiento.html', {'form': form})
|
|
|
|
|
|
|
|
|
+@login_required
|
|
|
+def editar_movimiento(request, movimiento_id):
|
|
|
+ movimiento = get_object_or_404(Movimiento, id=movimiento_id, usuario=request.user)
|
|
|
+ saldo_original_origen = movimiento.cuenta_origen
|
|
|
+ saldo_original_destino = movimiento.cuenta_destino
|
|
|
+ monto_original = movimiento.monto
|
|
|
+
|
|
|
+ if request.method == 'POST':
|
|
|
+ form = MovimientoForm(request.POST, instance=movimiento)
|
|
|
+ form.fields['cuenta_origen'].queryset = Cuenta.objects.filter(usuario=request.user)
|
|
|
+ form.fields['cuenta_destino'].queryset = Cuenta.objects.filter(usuario=request.user)
|
|
|
+ if form.is_valid():
|
|
|
+ movimiento_nuevo = form.save(commit=False)
|
|
|
+
|
|
|
+ # Revertir efecto anterior
|
|
|
+ saldo_original_origen.saldo += monto_original
|
|
|
+ saldo_original_origen.save()
|
|
|
+ saldo_original_destino.saldo -= monto_original
|
|
|
+ saldo_original_destino.save()
|
|
|
+
|
|
|
+ # Aplicar nuevo efecto
|
|
|
+ movimiento_nuevo.usuario = request.user
|
|
|
+ movimiento_nuevo.save()
|
|
|
+ movimiento_nuevo.cuenta_origen.saldo -= movimiento_nuevo.monto
|
|
|
+ movimiento_nuevo.cuenta_origen.save()
|
|
|
+ movimiento_nuevo.cuenta_destino.saldo += movimiento_nuevo.monto
|
|
|
+ movimiento_nuevo.cuenta_destino.save()
|
|
|
+
|
|
|
+ return redirect('dashboard')
|
|
|
+ else:
|
|
|
+ form = MovimientoForm(instance=movimiento)
|
|
|
+ form.fields['cuenta_origen'].queryset = Cuenta.objects.filter(usuario=request.user)
|
|
|
+ form.fields['cuenta_destino'].queryset = Cuenta.objects.filter(usuario=request.user)
|
|
|
+
|
|
|
+ return render(request, 'editar_movimiento.html', {'form': form})
|
|
|
+
|
|
|
+
|
|
|
+@login_required
|
|
|
+def eliminar_movimiento(request, movimiento_id):
|
|
|
+ movimiento = get_object_or_404(Movimiento, id=movimiento_id, usuario=request.user)
|
|
|
+ if request.method == 'POST':
|
|
|
+ # Revertir efecto del movimiento antes de borrarlo
|
|
|
+ movimiento.cuenta_origen.saldo += movimiento.monto
|
|
|
+ movimiento.cuenta_origen.save()
|
|
|
+ movimiento.cuenta_destino.saldo -= movimiento.monto
|
|
|
+ movimiento.cuenta_destino.save()
|
|
|
+ movimiento.delete()
|
|
|
+ return redirect('dashboard')
|
|
|
+
|
|
|
+ return render(request, 'eliminar_movimiento.html', {'movimiento': movimiento})
|
|
|
+
|
|
|
+
|
|
|
+# Cuentas
|
|
|
+
|
|
|
@login_required
|
|
|
def agregar_cuenta(request):
|
|
|
if request.method == 'POST':
|