@@ -96,17 +102,16 @@
{% endif %}
-
+
Diferencia:
- {% if kpi_difference > 0 %}
- ▲
- {% elif kpi_difference < 0 %}
- ▼
+ {% if kpi_trend == "up" %}
+ ▲ {{ kpi_difference|floatformat:2 }}€
+ {% elif kpi_trend == "down" %}
+ ▼ {{ kpi_difference|floatformat:2 }}€
{% else %}
- =
- {% endif %}
- {{ kpi_difference|floatformat:2 }}
-
+ 0€
+ {% endif %}
+
Variación:
{% if kpi_percentage is not None %}
@@ -123,26 +128,30 @@
Gastos por categoría
-
-
-
- | Categoría |
- Total |
-
-
-
- {% for row in by_category %}
+ {% if not by_category %}
+ No hay gastos para este periodo.
+ {% else %}
+
+
- | {{ row.category__name }} |
- {{ row.total }} |
+ Categoría |
+ Total |
- {% empty %}
-
- | Sin datos |
-
- {% endfor %}
-
-
+
+
+ {% for row in by_category %}
+
+ | {{ row.category__name }} |
+ {{ row.total }} |
+
+ {% empty %}
+
+ | Sin datos |
+
+ {% endfor %}
+
+
+ {% endif %}
{% if compare_enabled %}
Comparativa por categoría
@@ -164,9 +173,9 @@
{{ row.previous }} |
{% if row.difference > 0 %}
- ▲ {{ row.difference }}
+ ▲ {{ row.difference }}
{% elif row.difference < 0 %}
- ▼ {{ row.difference }}
+ ▼ {{ row.difference }}
{% else %}
=
{% endif %}
diff --git a/expenses_manager/expenses/views.py b/expenses_manager/expenses/views.py
index 14f315d..bab9886 100644
--- a/expenses_manager/expenses/views.py
+++ b/expenses_manager/expenses/views.py
@@ -115,6 +115,7 @@ def dashboard(request):
# ------------------
year = _get_int(request.GET.get('year'))
month = _get_int(request.GET.get('month'))
+ period = request.GET.get('period')
current_year = date.today().year
@@ -128,6 +129,24 @@ def dashboard(request):
# -----------------
expenses = Expense.objects.filter(owner=request.user)
+ today = date.today()
+
+ if period == 'this_month':
+ selected_year = today.year
+ selected_month = today.month
+
+ elif period == 'last_month':
+ if today.month == 1:
+ selected_year = today.year - 1
+ selected_month = 12
+ else:
+ selected_year = today.year
+ selected_month = today.month
+
+ elif period == 'this_year':
+ selected_year = today.year
+ selected_month = None
+
expenses_filtered = expenses.filter(date__year=selected_year)
if selected_month:
@@ -211,7 +230,7 @@ def dashboard(request):
if compare_enabled:
previous_expenses = Expense.objects.filter(owner=request.user)
-
+
if selected_month:
# Monthly compare
if selected_month == 1:
@@ -239,7 +258,16 @@ def dashboard(request):
difference = total_amount - previous_total
if previous_total:
- percentage = (difference / previous_total) * 100
+ percentage = (difference / previous_total) * 100
+
+ kpi_trend = None
+ if difference is not None:
+ if difference > 0:
+ kpi_trend = 'up'
+ elif difference < 0:
+ kpi_trend = 'down'
+ else:
+ kpi_trend = 'equal'
# ------------------
# Previous expenses by category
@@ -295,4 +323,5 @@ def dashboard(request):
'kpi_difference': difference,
'kpi_percentage': percentage,
'category_comparison': category_comparison,
+ 'kpi_trend': kpi_trend,
})
\ No newline at end of file
|