Add Verwaltungskosten detail view with linked documents and emails

- New detail view at /geschaeftsfuehrung/verwaltungskosten/<pk>/
  showing invoice data, status, linked DMS documents, and emails
- Status change form in sidebar for quick workflow updates
- Link Verwaltungskosten list items to detail page
- Update email detail to link to VK detail instead of edit

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
SysAdmin Agent
2026-03-12 11:21:04 +00:00
parent 5c9db56158
commit d84421ea38
6 changed files with 294 additions and 2 deletions

View File

@@ -32,6 +32,7 @@ from .finanzen import ( # noqa: F401
geschaeftsfuehrung,
konto_list,
verwaltungskosten_list,
verwaltungskosten_detail,
rentmeister_list,
rentmeister_detail,
rentmeister_ausgaben,

View File

@@ -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"""