Fixed some typos and created the pages html for account

This commit is contained in:
JKuijperM 2026-02-01 21:58:00 +01:00
parent 907323db7c
commit 5f5dd87859
6 changed files with 140 additions and 7 deletions

View File

@ -53,7 +53,7 @@ class Account(models.Model):
or Decimal('0')
)
income_total = (
self.incomes.aggregate(total=Sum('income'))['total']
self.incomes.aggregate(total=Sum('amount'))['total']
or Decimal('0')
)
return self.initial_balance + income_total - expenses_total
@ -136,5 +136,3 @@ class Income(models.Model):
def __str__(self):
return f'{self.name} - {self.amount}'

View File

@ -0,0 +1,24 @@
{% load static %}
<!DOCTYPE>
<html>
<head>
<title>Eliminar</title>
<link rel="stylesheet" href="{% static 'expenses/css/base.css' %}">
</head>
<body>
<h1>Eliminar cuenta</h1>
<p>
¿Seguro que quieres eliminar la cuenta
<strong>{{ account.name }}</strong>
</p>
<form method="post">
{% csrf_token %}
<button type="submit">Sí, eliminar</button>
<a href="{% url 'account_list' %}">Cancelar</a>
</form>
</body>
</html>

View File

@ -0,0 +1,27 @@
{% load static %}
<!DOCTYPE>
<html>
<head>
<title>Cuenta</title>
<link rel="stylesheet" href="{% static 'expenses/css/base.css' %}">
</head>
<body>
<h1>
{% if form.instance.pk %}
Editar cuenta
{% else %}
Nueva cuenta
{% endif %}
</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Guardar</button>
<a href="{% url 'account_list' %}">Cancelar</a>
</form>
</body>
</html>

View File

@ -0,0 +1,44 @@
{% load static %}
<!DOCTYPE>
<html>
<head>
<title>Cuentas</title>
<link rel="stylesheet" href="{% static 'expenses/css/base.css' %}">
</head>
<body>
<h1>Mis cuentas</h1>
<a href="{% url 'account_create' %}"> Nueva cuenta</a>
<table>
<thead>
<tr>
<th>Nombre</th>
<th>Saldo inicial</th>
<th>Saldo actual</th>
<th>Activa</th>
<th></th>
</tr>
</thead>
<tbody>
{% for account in accounts %}
<tr>
<td>{{ account.name }}</td>
<td>{{ account.initial_balance }}</td>
<td>{{ account.current_balance|floatformat:2 }}</td>
<td>{{ account.active }}</td>
<td>
<a href="{% url 'account_edit' account.id %}">Editar</a>
<a href="{% url 'account_delete' account.id %}">Eliminar</a>
</td>
</tr>
{% empty %}
<tr>
<td colspan="5">No hay cuentas</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>

View File

@ -12,4 +12,8 @@ urlpatterns = [
path('tags/new/', views.tag_create, name='tag_create'),
path('tags/<int:pk>/edit/', views.tag_edit, name='tag_edit'),
path('tags/<int:pk>/delete/', views.tag_delete, name='tag_delete'),
path('accounts/', views.account_list, name='account_list'),
path('accounts/new/', views.account_create, name='account_create'),
path('accounts/<int:pk>/edit/', views.account_edit, name='account_edit'),
path('accounts/<int:pk>/delete/', views.account_delete, name='account_delete'),
]

View File

@ -1,7 +1,7 @@
from datetime import date
from operator import truediv
from .forms import ExpenseForm, IncomeForm, TagForm
from .models import Account, Category, Expense, Tag
from .forms import ExpenseForm, IncomeForm, TagForm, AccountForm
# from dateutli.relativedelta import relativedelta
from django.db.models import Sum
@ -296,7 +296,7 @@ def dashboard(request):
kpi_balance = selected_account_obj.current_balance()
else:
kpi_balance = (
Accounts.objects.filter(owner.request.user, active=True)
Account.objects.filter(owner=request.user, active=True)
.aggregate(total=Sum('initial_balance'))['total'] or 0
) - (
expenses.aggregate(total=Sum('amount'))['total'] or 0
@ -587,7 +587,7 @@ def account_list(request):
return render(
request,
'expenses/account_list.html',
{'account': accounts}
{'accounts': accounts}
)
@ -608,7 +608,43 @@ def account_create(request):
'expenses/account_form.html',
{'form': form}
)
@login_required
def account_edit(request, pk):
account = get_object_or_404(
Account,
pk=pk,
owner=request.user
)
if request.method == 'POST':
form = AccountForm(request.POST, instance=account)
if form.is_valid():
form.save()
return redirect('account_list')
else:
form = AccountForm(instance=account)
return render(
request,
'expenses/account_form.html',
{'form': form}
)
@login_required
def account_delete(request, pk):
account = get_object_or_404(Account, pk=pk, owner=request.user)
if request.method == 'POST':
account.active = False
account.save()
return redirect('account_list')
return render(
request,
'expenses/account_confirm_delete.html',
{'account':account}
)
@login_required
def income_create(request):