From aadfb3f35558fe36b0cbb876162e6729d3b591b9 Mon Sep 17 00:00:00 2001 From: Celestino Rey Date: Wed, 4 Sep 2024 12:45:32 +0200 Subject: [PATCH] Crea cuentas, apuntes y actualiza saldos --- Finanzas/finanzas/.gitignore | 1 + Finanzas/finanzas/apuntes/.gitignore | 1 + Finanzas/finanzas/apuntes/forms.py | 2 +- Finanzas/finanzas/apuntes/models.py | 13 +++++- Finanzas/finanzas/apuntes/views.py | 40 +++++------------- Finanzas/finanzas/db.sqlite3 | Bin 172032 -> 176128 bytes Finanzas/finanzas/templates/_head.html | 4 +- .../templates/apuntes/detalle_apunte.html | 12 +----- .../templates/apuntes/detalle_cuenta.html | 27 +++--------- .../templates/apuntes/form_cuenta.html | 2 +- .../templates/apuntes/lista_apuntes.html | 18 ++------ .../templates/apuntes/lista_cuentas.html | 9 +++- 12 files changed, 48 insertions(+), 81 deletions(-) create mode 100644 Finanzas/finanzas/.gitignore create mode 100644 Finanzas/finanzas/apuntes/.gitignore 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 38cccc040e3784d028edb2c89a691d26326be9e7..f45f3493a75c78ff75ab0d6dc3639997cb1401c4 100644 GIT binary patch delta 1657 zcmah}U1%It6rOwU&dkon-IL9K8*Dd;!NmN{%+Bm&x2C1rfoZtck2tL7`gE2Nm@}OPkh2u$4%yU=;PiJF_uOQ_+EY zX7|iJ-#Pa?-#uqObe*~3da2Ue$uLaA>O%CreY(+)I7^x>Eh(WB;ZefZzLB$A0}LLZhzS!oi3 zO`_rxgCSK3$!c>zRy9$Yo88>cR%~YkC}H6}_yMM17WP0KUWPg-$)^AC^cT5EJzA|G zl7DkW!a85R76M;0#q==ipAwcdq1X{Ud6*U%8%ZQ1!^UB*k|R5WOlljdn3-xRErl>x-ea8Y~?mKgX8euH1&C%6eqH28B697I5z zWoDMoS2!^&Gq3{7bKWyIpw3AMQ{JhMnT8Y5Uu}9aYPc;V&jAK5z*A7}x#fA&b0C}U z@W6gfV4xU9kr0-;dOI^8Tt}6Y`>d|{@?EPQIDLA6U)LZ>4EeQ?BsObWK=F$~mI9Ou z4HUp{Cp~zoT93uzvFecT6b4V9#js#1ddnxr*4Xy_*7rlE2;Y9_`FV(*?@l>*H~ zw_AK_vZ`q9gl=!JGs*jD4}8YZk$BYf)yeh$k(264355KC=Aa@gYM>pjfk^j&NOwW1 z?yo$LBKw;aIS_2sG8e9+h{tLVfjd@v?!XEqe+g==p4crUm=Hm*d53ch?cKNVF=XKt zIG0VEFj>rTOcg@tE<3w0DPnD>u;%n{!9|V@K9%~&MqdmU;SD}z6ZRs@C#=JZx#25X z^E}VMJgw;xRnu!w0+j8{d{?SJ$jDK zygz`eP*rAO02>)&5PMyHyLUJGs;#S^ncPFayfujBE!2}AaI0gi+82vQ6C?Vtub1x6 zeK&|}yiV+%XFONj^V#(4?z*WO%=Vn^3o8>xM-u^YJPD|{eF)@B3+SSqDCv~@21N72sT5GFC^y;&fUYXl4{RI0rWe}5K delta 441 zcmZp8z}0YoYl5_(J_7@T77)XL$wVDvM*WQmOZb^Zxzo z{!|A3-Tcq_oA}r8Pv=kF*ciyqD$T}h%Q?N!no(kMlfI~^Fe|ezXG&ILUV46fVoGji zUVKh|`s6kGs_ddbOMrOu4gGue0>%o4CRU~fR;FfphNi}*M$O0aw;#)Av@>91k)4r&m$ig}KbP+j?^s;w*|^z` zu$F9W3}W4063W!e$i%>~ojIIoGYg}}^zG41mW+zqKSnbhWaMhnRbv;|)MRWCoqi;i zNs&>0`mi@AEk>Y&?=bM+0Xp~+|MWZkOd3FeM-2RrfC4x8 - Registro de vehículos y sus apuntes + Finanzas personales @@ -20,4 +20,4 @@ - \ No newline at end of file + diff --git a/Finanzas/finanzas/templates/apuntes/detalle_apunte.html b/Finanzas/finanzas/templates/apuntes/detalle_apunte.html index a6a190b..b88e37f 100644 --- a/Finanzas/finanzas/templates/apuntes/detalle_apunte.html +++ b/Finanzas/finanzas/templates/apuntes/detalle_apunte.html @@ -10,19 +10,11 @@

{{ apunte.fecha }}

diff --git a/Finanzas/finanzas/templates/apuntes/detalle_cuenta.html b/Finanzas/finanzas/templates/apuntes/detalle_cuenta.html index 15cb2b9..369d4bd 100644 --- a/Finanzas/finanzas/templates/apuntes/detalle_cuenta.html +++ b/Finanzas/finanzas/templates/apuntes/detalle_cuenta.html @@ -6,17 +6,10 @@
- {% if cuenta.foto %} -

{{ cuenta.matricula}}

- {% else %} -

No hay imágen disponible

- {% endif %} -
-
-

{{ cuenta.matricula }}

+

{{ cuenta.nombre }}

    -
  • {{ cuenta.matricula }}
  • +
  • {{ cuenta.nombre }}
@@ -28,26 +21,18 @@ Fecha - Kilómetros - Litros + Origen + Destino Importe - Descuento - Precio por litro - Kms recorridos - Consumo/100 kms {% for apunte in apuntes %} {{ apunte.fecha }} - {{ apunte.kms }} - {{ apunte.litros }} + {{ apunte.cta_origen }} + {{ apunte.cta_destino }} {{ apunte.importe }} - {{ apunte.descuento }} - {{ apunte.precioxlitro }} - {{ apunte.kmsrecorridos }} - {{ apunte.consumo }} {% endfor %} diff --git a/Finanzas/finanzas/templates/apuntes/form_cuenta.html b/Finanzas/finanzas/templates/apuntes/form_cuenta.html index f5905a2..ba23e93 100644 --- a/Finanzas/finanzas/templates/apuntes/form_cuenta.html +++ b/Finanzas/finanzas/templates/apuntes/form_cuenta.html @@ -3,7 +3,7 @@ {% block content %}
-

{% if form.instance.pk %}Editar vehículo{% else %}Nuevo vehículo{% endif %}

+

{% if form.instance.pk %}Editar cuenta{% else %}Nueva cuenta{% endif %}

{% csrf_token %} diff --git a/Finanzas/finanzas/templates/apuntes/lista_apuntes.html b/Finanzas/finanzas/templates/apuntes/lista_apuntes.html index 23a2c60..0152178 100644 --- a/Finanzas/finanzas/templates/apuntes/lista_apuntes.html +++ b/Finanzas/finanzas/templates/apuntes/lista_apuntes.html @@ -25,14 +25,9 @@ Fecha - Cuenta - Kilómetros - Litros + Origen + Destino Importe - Descuento - Precio por litro - Kms recorridos - Consumo/100 kms {% for apunte in apuntes %} @@ -40,14 +35,9 @@ {{ apunte.fecha }} - {{ apunte.cuenta.matricula }} - {{ apunte.kms }} - {{ apunte.litros }} + {{ apunte.cta_origen.nombre }} + {{ apunte.cta_destino.nombre }} {{ apunte.importe }} € - {{ apunte.descuento }} € - {{ apunte.precioxlitro }} € - {{ apunte.kmsrecorridos }} - {{ apunte.consumo }} {% endfor %} diff --git a/Finanzas/finanzas/templates/apuntes/lista_cuentas.html b/Finanzas/finanzas/templates/apuntes/lista_cuentas.html index d5ffb05..facd79f 100644 --- a/Finanzas/finanzas/templates/apuntes/lista_cuentas.html +++ b/Finanzas/finanzas/templates/apuntes/lista_cuentas.html @@ -23,7 +23,14 @@