|
|
@@ -94,6 +94,41 @@ def eliminar_movimiento(request, movimiento_id):
|
|
|
return render(request, 'eliminar_movimiento.html', {'movimiento': movimiento})
|
|
|
|
|
|
|
|
|
+@login_required
|
|
|
+def duplicar_movimiento(request, movimiento_id):
|
|
|
+ original = get_object_or_404(Movimiento, id=movimiento_id, usuario=request.user)
|
|
|
+
|
|
|
+ # Crear una copia del movimiento sin guardar
|
|
|
+ movimiento_nuevo = Movimiento(
|
|
|
+ cuenta_origen=original.cuenta_origen,
|
|
|
+ cuenta_destino=original.cuenta_destino,
|
|
|
+ monto=original.monto,
|
|
|
+ fecha=original.fecha,
|
|
|
+ descripcion=original.descripcion,
|
|
|
+ usuario=request.user,
|
|
|
+ )
|
|
|
+
|
|
|
+ if request.method == 'POST':
|
|
|
+ form = MovimientoForm(request.POST, instance=movimiento_nuevo)
|
|
|
+ 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():
|
|
|
+ nuevo = form.save(commit=False)
|
|
|
+ nuevo.usuario = request.user
|
|
|
+ nuevo.save()
|
|
|
+ # Ajustar saldos
|
|
|
+ nuevo.cuenta_origen.saldo -= nuevo.monto
|
|
|
+ nuevo.cuenta_origen.save()
|
|
|
+ nuevo.cuenta_destino.saldo += nuevo.monto
|
|
|
+ nuevo.cuenta_destino.save()
|
|
|
+ return redirect('dashboard')
|
|
|
+ else:
|
|
|
+ form = MovimientoForm(instance=movimiento_nuevo)
|
|
|
+ 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, 'duplicar_movimiento.html', {'form': form})
|
|
|
+
|
|
|
# Cuentas
|
|
|
|
|
|
@login_required
|