diff --git a/expenses_manager/expenses/models.py b/expenses_manager/expenses/models.py
index 3449ffa..7316932 100644
--- a/expenses_manager/expenses/models.py
+++ b/expenses_manager/expenses/models.py
@@ -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}'
-
-
\ No newline at end of file
diff --git a/expenses_manager/expenses/templates/expenses/account_confirm_delete.html b/expenses_manager/expenses/templates/expenses/account_confirm_delete.html
new file mode 100644
index 0000000..9632630
--- /dev/null
+++ b/expenses_manager/expenses/templates/expenses/account_confirm_delete.html
@@ -0,0 +1,24 @@
+{% load static %}
+
+
+
+ Eliminar
+
+
+
+
+ Eliminar cuenta
+
+
+ ¿Seguro que quieres eliminar la cuenta
+ {{ account.name }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/expenses_manager/expenses/templates/expenses/account_form.html b/expenses_manager/expenses/templates/expenses/account_form.html
new file mode 100644
index 0000000..a602c4d
--- /dev/null
+++ b/expenses_manager/expenses/templates/expenses/account_form.html
@@ -0,0 +1,27 @@
+{% load static %}
+
+
+
+ Cuenta
+
+
+
+
+
+ {% if form.instance.pk %}
+ Editar cuenta
+ {% else %}
+ Nueva cuenta
+ {% endif %}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/expenses_manager/expenses/templates/expenses/account_list.html b/expenses_manager/expenses/templates/expenses/account_list.html
new file mode 100644
index 0000000..f90259a
--- /dev/null
+++ b/expenses_manager/expenses/templates/expenses/account_list.html
@@ -0,0 +1,44 @@
+{% load static %}
+
+
+
+ Cuentas
+
+
+
+
+ Mis cuentas
+
+ ➕ Nueva cuenta
+
+
+
+
+ | Nombre |
+ Saldo inicial |
+ Saldo actual |
+ Activa |
+ |
+
+
+
+ {% for account in accounts %}
+
+ | {{ account.name }} |
+ {{ account.initial_balance }} |
+ {{ account.current_balance|floatformat:2 }} |
+ {{ account.active }} |
+
+ Editar
+ Eliminar
+ |
+
+ {% empty %}
+
+ | No hay cuentas |
+
+ {% endfor %}
+
+
+
+
\ No newline at end of file
diff --git a/expenses_manager/expenses/urls.py b/expenses_manager/expenses/urls.py
index 72700b1..26ded12 100644
--- a/expenses_manager/expenses/urls.py
+++ b/expenses_manager/expenses/urls.py
@@ -12,4 +12,8 @@ urlpatterns = [
path('tags/new/', views.tag_create, name='tag_create'),
path('tags//edit/', views.tag_edit, name='tag_edit'),
path('tags//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//edit/', views.account_edit, name='account_edit'),
+ path('accounts//delete/', views.account_delete, name='account_delete'),
]
\ No newline at end of file
diff --git a/expenses_manager/expenses/views.py b/expenses_manager/expenses/views.py
index aef8d4a..fedb97d 100644
--- a/expenses_manager/expenses/views.py
+++ b/expenses_manager/expenses/views.py
@@ -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):