diff --git a/gaehsnitz/static/gaehsnitz/style.css b/gaehsnitz/static/gaehsnitz/style.css index 8cb7baa..45d061d 100644 --- a/gaehsnitz/static/gaehsnitz/style.css +++ b/gaehsnitz/static/gaehsnitz/style.css @@ -105,6 +105,8 @@ table { margin-top: 12px; margin-bottom: 12px; border-spacing: 0; + border-right: 1px solid #664422; + border-bottom: 1px solid #664422; } td { @@ -112,8 +114,8 @@ td { text-align: right; font-size: 0.9rem; border-top: 1px solid #664422; - border-left: 1px solid #664422;; - padding: 2px 4px; + border-left: 1px solid #664422; + padding: 3px 6px; } .bandbox { diff --git a/gaehsnitz/templates/gaehsnitz/finance.html b/gaehsnitz/templates/gaehsnitz/finance.html index 14af602..1d38bcb 100644 --- a/gaehsnitz/templates/gaehsnitz/finance.html +++ b/gaehsnitz/templates/gaehsnitz/finance.html @@ -16,41 +16,39 @@
Summe: 10€
+Summe: {{ overall_sum }}€
-Summe: 95€
+Gesamt: +85€
+ {% for topic, payments in detailed_payments.items %} +{{ topic }}:
+| {{ payment.date|date:"d.m." }} | +{{ payment.amount }}€ | +{{ payment.other_party }} | +{{ payment.note }} | +
Summe: 920 - 1.770€
- -Summe: 1.080 - 1.800€
Wir haben hier mal mit der Erfahrung des letzten Jahres grob überschlagen:
diff --git a/gaehsnitz/views.py b/gaehsnitz/views.py index 369a160..e1004c4 100644 --- a/gaehsnitz/views.py +++ b/gaehsnitz/views.py @@ -1,7 +1,11 @@ -from datetime import date +from collections import defaultdict +from datetime import date, timezone +from django.utils import timezone from django.views.generic import TemplateView +from gaehsnitz.models import Payment + festival_start_date, festival_end_date = date(2022, 8, 25), date(2022, 8, 28) @@ -31,6 +35,28 @@ class ProgramView(GaehsnitzTemplateView): class FinanceView(GaehsnitzTemplateView): template_name = "gaehsnitz/finance.html" + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + balance_dict = defaultdict(int) + detailed_payments = defaultdict(list) + overall_sum = 0 + for payment in Payment.objects.filter(date__year=timezone.now().year).order_by("topic", "date"): + topic_name = Payment.Topic(payment.topic).label + sign = 1 if payment.is_incoming() else -1 + balance_dict[topic_name] += sign * payment.amount + overall_sum += sign * payment.amount + if payment.is_outgoing() and payment.topic != Payment.Topic.bands: + detailed_payments[topic_name].append(payment) + + context.update({ + # apparently defaultdicts do not work + "balance_dict": dict(balance_dict), + "overall_sum": overall_sum, + "detailed_payments": dict(detailed_payments), + }) + return context + class ForBandsView(GaehsnitzTemplateView): template_name = "gaehsnitz/for-bands.html"