diff --git a/app/stiftung/urls.py b/app/stiftung/urls.py index 467bb23..1017844 100644 --- a/app/stiftung/urls.py +++ b/app/stiftung/urls.py @@ -180,6 +180,11 @@ urlpatterns = [ views.verwaltungskosten_create, name="verwaltungskosten_create", ), + path( + "geschaeftsfuehrung/verwaltungskosten//", + views.verwaltungskosten_detail, + name="verwaltungskosten_detail", + ), path( "geschaeftsfuehrung/verwaltungskosten//bearbeiten/", views.verwaltungskosten_edit, diff --git a/app/stiftung/views/__init__.py b/app/stiftung/views/__init__.py index bda8193..60c3935 100644 --- a/app/stiftung/views/__init__.py +++ b/app/stiftung/views/__init__.py @@ -32,6 +32,7 @@ from .finanzen import ( # noqa: F401 geschaeftsfuehrung, konto_list, verwaltungskosten_list, + verwaltungskosten_detail, rentmeister_list, rentmeister_detail, rentmeister_ausgaben, diff --git a/app/stiftung/views/finanzen.py b/app/stiftung/views/finanzen.py index 57b6481..b19fbb0 100644 --- a/app/stiftung/views/finanzen.py +++ b/app/stiftung/views/finanzen.py @@ -312,6 +312,38 @@ def verwaltungskosten_list(request): return render(request, "stiftung/verwaltungskosten_list.html", context) +@login_required +def verwaltungskosten_detail(request, pk): + """Detailansicht einer Verwaltungskosten-Position mit verknüpften Dokumenten und E-Mails.""" + from stiftung.models import DokumentDatei, EmailEingang, Verwaltungskosten + + vk = get_object_or_404(Verwaltungskosten, pk=pk) + + if request.method == "POST": + action = request.POST.get("action") + if action == "set_status": + new_status = request.POST.get("status", "") + if new_status in dict(Verwaltungskosten.STATUS_CHOICES): + vk.status = new_status + vk.save() + messages.success(request, f"Status auf '{vk.get_status_display()}' gesetzt.") + return redirect("stiftung:verwaltungskosten_detail", pk=pk) + + # Verknüpfte DMS-Dokumente + dms_dokumente = DokumentDatei.objects.filter(verwaltungskosten=vk).order_by("erstellt_am") + + # Verknüpfte E-Mails + email_eingaenge = EmailEingang.objects.filter(verwaltungskosten=vk).order_by("-eingangsdatum") + + context = { + "vk": vk, + "dms_dokumente": dms_dokumente, + "email_eingaenge": email_eingaenge, + "status_choices": Verwaltungskosten.STATUS_CHOICES, + } + return render(request, "stiftung/verwaltungskosten_detail.html", context) + + @login_required def rentmeister_list(request): """Liste aller Rentmeister""" diff --git a/app/templates/stiftung/email_eingang/detail.html b/app/templates/stiftung/email_eingang/detail.html index d96b5b5..87ff290 100644 --- a/app/templates/stiftung/email_eingang/detail.html +++ b/app/templates/stiftung/email_eingang/detail.html @@ -70,7 +70,7 @@ {% if eingang.verwaltungskosten %}
Rechnung
- + {{ eingang.verwaltungskosten.bezeichnung }} ({{ eingang.verwaltungskosten.betrag }} EUR) {{ eingang.verwaltungskosten.get_status_display }} diff --git a/app/templates/stiftung/verwaltungskosten_detail.html b/app/templates/stiftung/verwaltungskosten_detail.html new file mode 100644 index 0000000..c8b64e4 --- /dev/null +++ b/app/templates/stiftung/verwaltungskosten_detail.html @@ -0,0 +1,254 @@ +{% extends 'base.html' %} +{% load humanize %} + +{% block title %}{{ vk.bezeichnung }} – Verwaltungskosten{% endblock %} + +{% block content %} +
+
+
+

+ + {{ vk.bezeichnung }} +

+ +
+ + +
+ {{ vk.get_status_display }} + {{ vk.get_kategorie_display }} +
+ + +
+
+ Rechnungsdaten +
+
+
+
Bezeichnung
+
{{ vk.bezeichnung }}
+ +
Betrag
+
€{{ vk.betrag|floatformat:2 }}
+ +
Datum
+
{{ vk.datum|date:"d.m.Y" }}
+ + {% if vk.lieferant_firma %} +
Lieferant / Firma
+
{{ vk.lieferant_firma }}
+ {% endif %} + + {% if vk.rechnungsnummer %} +
Rechnungsnummer
+
{{ vk.rechnungsnummer }}
+ {% endif %} + + {% if vk.rentmeister %} +
Rentmeister
+
+ + {{ vk.rentmeister.get_full_name }} + +
+ {% endif %} + + {% if vk.get_effective_zahlungskonto %} +
Zahlungskonto
+
{{ vk.get_effective_zahlungskonto.bank_name }} – {{ vk.get_effective_zahlungskonto.kontoname }}
+ {% endif %} + + {% if vk.quellkonto %} +
Quellkonto
+
{{ vk.quellkonto.bank_name }} – {{ vk.quellkonto.kontoname }}
+ {% endif %} +
+
+
+ + {% if vk.is_fahrtkosten %} + +
+
+ Fahrtkosten +
+
+
+ {% if vk.km_anzahl %} +
Kilometer
+
{{ vk.km_anzahl }} km
+ {% endif %} + {% if vk.km_satz %} +
km-Satz
+
€{{ vk.km_satz|floatformat:2 }}/km
+ {% endif %} + {% if vk.von_ort %} +
Von
+
{{ vk.von_ort }}
+ {% endif %} + {% if vk.nach_ort %} +
Nach
+
{{ vk.nach_ort }}
+ {% endif %} + {% if vk.zweck %} +
Zweck
+
{{ vk.zweck }}
+ {% endif %} +
+
+
+ {% endif %} + + {% if vk.beschreibung %} + +
+
+ Beschreibung +
+
+

{{ vk.beschreibung }}

+
+
+ {% endif %} + + {% if vk.notizen %} +
+
+ Notizen +
+
+

{{ vk.notizen }}

+
+
+ {% endif %} + + +
+
+ Verknüpfte Dokumente ({{ dms_dokumente.count }}) + + Hochladen + +
+
+ {% if dms_dokumente %} + + {% else %} +

Keine Dokumente verknüpft.

+ {% endif %} +
+
+ + + {% if email_eingaenge %} +
+
+ Verknüpfte E-Mails ({{ email_eingaenge.count }}) +
+ +
+ {% endif %} +
+ + +
+ +
+
+ Status ändern +
+
+
+ {% csrf_token %} + +
+ + +
+
+
+
+ + +
+
+ Zeitstempel +
+
+
+
Erstellt
+
{{ vk.erstellt_am|date:"d.m.Y H:i" }}
+
Aktualisiert
+
{{ vk.aktualisiert_am|date:"d.m.Y H:i" }}
+
+
+
+ + + +
+
+{% endblock %} diff --git a/app/templates/stiftung/verwaltungskosten_list.html b/app/templates/stiftung/verwaltungskosten_list.html index 2dd8831..06e121a 100644 --- a/app/templates/stiftung/verwaltungskosten_list.html +++ b/app/templates/stiftung/verwaltungskosten_list.html @@ -101,7 +101,7 @@ {{ kosten.datum|date:"d.m.Y" }} - {{ kosten.bezeichnung }} + {{ kosten.bezeichnung }} {% if kosten.rechnungsnummer %}
RG: {{ kosten.rechnungsnummer }} {% endif %}