diff --git a/Finanzas/finanzas/.gitignore b/Finanzas/finanzas/.gitignore new file mode 100644 index 0000000..49ef255 --- /dev/null +++ b/Finanzas/finanzas/.gitignore @@ -0,0 +1 @@ +db.sqlite3 diff --git a/Finanzas/finanzas/apuntes/.gitignore b/Finanzas/finanzas/apuntes/.gitignore new file mode 100644 index 0000000..62616c7 --- /dev/null +++ b/Finanzas/finanzas/apuntes/.gitignore @@ -0,0 +1 @@ +migrations/ diff --git a/Finanzas/finanzas/apuntes/forms.py b/Finanzas/finanzas/apuntes/forms.py index 5b46524..7192323 100644 --- a/Finanzas/finanzas/apuntes/forms.py +++ b/Finanzas/finanzas/apuntes/forms.py @@ -14,7 +14,7 @@ class CuentaForm(forms.ModelForm): widget=forms.TextInput(attrs={'class': 'form-control'})) tipo = forms.ModelChoiceField( queryset=Tipo.objects.all(), - widget=forms.TextInput(attrs={'class': 'form-control'})) + widget=forms.Select(attrs={'class': 'form-control'})) class ApunteForm(forms.ModelForm): diff --git a/Finanzas/finanzas/apuntes/models.py b/Finanzas/finanzas/apuntes/models.py index fb0e68c..c201e6d 100644 --- a/Finanzas/finanzas/apuntes/models.py +++ b/Finanzas/finanzas/apuntes/models.py @@ -3,14 +3,23 @@ from django.db import models class Tipo(models.Model): tipo = models.TextField(max_length=10) + def __str__(self): + return self.tipo + class Cuenta(models.Model): nombre = models.TextField(max_length=20) - saldo_inicial = models.DecimalField(max_digits=10, decimal_places=2) - saldo_actual = models.DecimalField(max_digits=10, decimal_places=2) + saldo_inicial = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True) + saldo_actual = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True) tipo = models.ForeignKey(Tipo, on_delete=models.CASCADE) + + def __str__(self): + return self.nombre class Apunte(models.Model): fecha = models.DateField() cta_origen = models.ForeignKey(Cuenta, on_delete=models.CASCADE, related_name='origen') cta_destino = models.ForeignKey(Cuenta, on_delete=models.CASCADE, related_name='destino') importe = models.DecimalField(max_digits=10, decimal_places=2) + + def __str__(self): + return self.fecha diff --git a/Finanzas/finanzas/apuntes/views.py b/Finanzas/finanzas/apuntes/views.py index 08fd420..9ff6520 100644 --- a/Finanzas/finanzas/apuntes/views.py +++ b/Finanzas/finanzas/apuntes/views.py @@ -25,7 +25,7 @@ def lista_cuentas(request): def detalle_cuenta(request, cuenta_id): cuenta = get_object_or_404(Cuenta, pk=cuenta_id) - apuntes = Apunte.objects.filter(cuenta=cuenta_id) + apuntes = Apunte.objects.filter(cta_origen=cuenta_id) return render(request, 'apuntes/detalle_cuenta.html', {'cuenta': cuenta, 'apuntes': apuntes}) @@ -35,7 +35,11 @@ def nueva_cuenta(request): if request.method == 'POST': form = CuentaForm(request.POST, request.FILES) if form.is_valid(): - form.save() + instancia = form.save(commit=False) + + instancia.saldo_actual = instancia.saldo_inicial + + instancia.save() return redirect('lista_cuentas') else: form = CuentaForm() @@ -78,7 +82,7 @@ def detalle_apunte(request, apunte_id): @login_required def nuevo_apunte(request): - cuentas = Cuenta.objects.all() # vamos a ver si hay vehículos dados de alta + cuentas = Cuenta.objects.all() # vamos a ver si hay cuentas dadas de alta if cuentas: if request.method == 'POST': @@ -86,33 +90,11 @@ def nuevo_apunte(request): if form.is_valid(): instancia = form.save(commit=False) - aplica_descuento = form.cleaned_data['aplica_descuento'] - - if aplica_descuento: - instancia.descuento = float(instancia.importe) * 0.03 - else: - instancia.descuento = 0.0 - - instancia.importe = float(instancia.importe) - instancia.descuento - - if instancia.litros > 0: - instancia.precioxlitro = round(instancia.importe / float(instancia.litros), 2) - else: - instancia.precioxlitro = 0 - - # lee todos los apuntes del vehículo - # apuntes = Apunte.query.filter_by(cuenta_id=cuenta_id).all() - - if Apunte.objects.filter(cuenta_id=instancia.cuenta): - apuntes = Apunte.objects.filter(cuenta_id=instancia.cuenta).order_by('-fecha')[0] - - instancia.kmsrecorridos = instancia.kms - apuntes.kms + instancia.cta_origen.saldo_actual = instancia.cta_origen.saldo_actual - instancia.importe + instancia.cta_origen.save() - if instancia.kmsrecorridos > 0: - instancia.consumo = round(instancia.litros * 100 / instancia.kmsrecorridos, 2) - else: - instancia.kmsrecorridos = 0 - instancia.consumo = 0 + instancia.cta_destino.saldo_actual = instancia.cta_destino.saldo_actual + instancia.importe + instancia.cta_destino.save() instancia.save() diff --git a/Finanzas/finanzas/db.sqlite3 b/Finanzas/finanzas/db.sqlite3 index 38cccc0..f45f349 100644 Binary files a/Finanzas/finanzas/db.sqlite3 and b/Finanzas/finanzas/db.sqlite3 differ diff --git a/Finanzas/finanzas/templates/_head.html b/Finanzas/finanzas/templates/_head.html index f05a4fa..e6670db 100644 --- a/Finanzas/finanzas/templates/_head.html +++ b/Finanzas/finanzas/templates/_head.html @@ -3,7 +3,7 @@
-No hay imágen disponible
- {% endif %} -