Bug fixes + archive feature for Destinatäre
- Make Destinatär names clickable in list view (link to detail page) - Nachweis-Board: auto-create missing VierteljahresNachweis records for active Destinatäre when viewing a year (fixes missing Q1 2026) - Add archive/deactivate toggle for Destinatäre (button on detail page) with AuditLog entry and confirmation dialog - Default Destinatär list to show active only (filter preset to "Aktiv") Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,7 @@ from .destinataere import ( # noqa: F401
|
||||
destinataer_create,
|
||||
destinataer_update,
|
||||
destinataer_delete,
|
||||
destinataer_toggle_archiv,
|
||||
destinataer_notiz_create,
|
||||
destinataer_export,
|
||||
)
|
||||
|
||||
@@ -176,7 +176,7 @@ def destinataer_list(request):
|
||||
search_query = request.GET.get("search", "")
|
||||
familienzweig_filter = request.GET.get("familienzweig", "")
|
||||
berufsgruppe_filter = request.GET.get("berufsgruppe", "")
|
||||
aktiv_filter = request.GET.get("aktiv", "")
|
||||
aktiv_filter = request.GET.get("aktiv", "true")
|
||||
sort = request.GET.get("sort", "")
|
||||
direction = request.GET.get("dir", "asc")
|
||||
|
||||
@@ -421,6 +421,24 @@ def destinataer_delete(request, pk):
|
||||
return render(request, "stiftung/destinataer_confirm_delete.html", context)
|
||||
|
||||
|
||||
@login_required
|
||||
def destinataer_toggle_archiv(request, pk):
|
||||
"""Destinatär aktivieren/deaktivieren (archivieren)."""
|
||||
destinataer = get_object_or_404(Destinataer, pk=pk)
|
||||
if request.method == "POST":
|
||||
destinataer.aktiv = not destinataer.aktiv
|
||||
destinataer.save(update_fields=["aktiv"])
|
||||
status_text = "aktiviert" if destinataer.aktiv else "archiviert (inaktiv gesetzt)"
|
||||
AuditLog.objects.create(
|
||||
user=request.user,
|
||||
action=f"Destinatär {destinataer.get_full_name()} wurde {status_text}.",
|
||||
model_name="Destinataer",
|
||||
object_id=str(destinataer.pk),
|
||||
)
|
||||
messages.success(request, f'Destinatär "{destinataer.get_full_name()}" wurde {status_text}.')
|
||||
return redirect("stiftung:destinataer_detail", pk=destinataer.pk)
|
||||
|
||||
|
||||
# Paechter Views (Landpächter)
|
||||
@login_required
|
||||
def destinataer_notiz_create(request, pk):
|
||||
|
||||
@@ -1578,6 +1578,14 @@ def nachweis_board(request):
|
||||
|
||||
destinataere = Destinataer.objects.filter(aktiv=True).order_by("nachname", "vorname")
|
||||
|
||||
# Auto-create missing VierteljahresNachweis records for the filtered year
|
||||
for d in destinataere:
|
||||
for q in range(1, 5):
|
||||
VierteljahresNachweis.objects.get_or_create(
|
||||
destinataer=d, jahr=jahr_filter, quartal=q,
|
||||
defaults={"status": "offen"},
|
||||
)
|
||||
|
||||
board = []
|
||||
for d in destinataere:
|
||||
quartale = {}
|
||||
|
||||
Reference in New Issue
Block a user