Remove 'Abgeschlossen' from payment pipeline, make 'Überwiesen' the final step
The 'Abgeschlossen' column was redundant after 'Überwiesen' since no further action occurs after a payment is transferred. The pipeline is now 4 stages: Offen → Nachweis eingereicht → Freigegeben → Überwiesen. Existing 'abgeschlossen' records are merged into the 'Überwiesen' column. Financial reports and queries are unaffected as they already include both statuses. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -362,7 +362,6 @@ class DestinataerUnterstuetzung(models.Model):
|
|||||||
("nachweis_eingereicht", "Nachweis eingereicht"),
|
("nachweis_eingereicht", "Nachweis eingereicht"),
|
||||||
("freigegeben", "Freigegeben"),
|
("freigegeben", "Freigegeben"),
|
||||||
("ausgezahlt", "Überwiesen"),
|
("ausgezahlt", "Überwiesen"),
|
||||||
("abgeschlossen", "Abgeschlossen"),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||||
@@ -485,7 +484,7 @@ class DestinataerUnterstuetzung(models.Model):
|
|||||||
"in_bearbeitung": 3,
|
"in_bearbeitung": 3,
|
||||||
"freigegeben": 3,
|
"freigegeben": 3,
|
||||||
"ausgezahlt": 4,
|
"ausgezahlt": 4,
|
||||||
"abgeschlossen": 5,
|
"abgeschlossen": 4,
|
||||||
"storniert": 0,
|
"storniert": 0,
|
||||||
}
|
}
|
||||||
return stage_map.get(self.status, 1)
|
return stage_map.get(self.status, 1)
|
||||||
|
|||||||
@@ -1813,7 +1813,7 @@ def batch_nachweis_aufforderung_senden(request):
|
|||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def zahlungs_pipeline(request):
|
def zahlungs_pipeline(request):
|
||||||
"""2c: Zahlungs-Pipeline – 5-Stufen-Kanban-Ansicht."""
|
"""2c: Zahlungs-Pipeline – 4-Stufen-Kanban-Ansicht."""
|
||||||
heute = date.today()
|
heute = date.today()
|
||||||
destinataer_id = request.GET.get("destinataer", "")
|
destinataer_id = request.GET.get("destinataer", "")
|
||||||
konto_id = request.GET.get("konto", "")
|
konto_id = request.GET.get("konto", "")
|
||||||
@@ -1831,8 +1831,7 @@ def zahlungs_pipeline(request):
|
|||||||
"offen": qs.filter(status__in=["geplant", "faellig"]).order_by("faellig_am"),
|
"offen": qs.filter(status__in=["geplant", "faellig"]).order_by("faellig_am"),
|
||||||
"nachweis_eingereicht": qs.filter(status="nachweis_eingereicht").order_by("faellig_am"),
|
"nachweis_eingereicht": qs.filter(status="nachweis_eingereicht").order_by("faellig_am"),
|
||||||
"freigegeben": qs.filter(status__in=["freigegeben", "in_bearbeitung"]).order_by("faellig_am"),
|
"freigegeben": qs.filter(status__in=["freigegeben", "in_bearbeitung"]).order_by("faellig_am"),
|
||||||
"ueberwiesen": qs.filter(status="ausgezahlt").order_by("-ausgezahlt_am"),
|
"ueberwiesen": qs.filter(status__in=["ausgezahlt", "abgeschlossen"]).order_by("-ausgezahlt_am"),
|
||||||
"abgeschlossen": qs.filter(status="abgeschlossen").order_by("-ausgezahlt_am"),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stage_meta = {
|
stage_meta = {
|
||||||
@@ -1840,7 +1839,6 @@ def zahlungs_pipeline(request):
|
|||||||
"nachweis_eingereicht": ("Nachweis eingereicht", "info", "fa-file-alt"),
|
"nachweis_eingereicht": ("Nachweis eingereicht", "info", "fa-file-alt"),
|
||||||
"freigegeben": ("Freigegeben (4-Augen)", "warning", "fa-shield-alt"),
|
"freigegeben": ("Freigegeben (4-Augen)", "warning", "fa-shield-alt"),
|
||||||
"ueberwiesen": ("Überwiesen", "success", "fa-university"),
|
"ueberwiesen": ("Überwiesen", "success", "fa-university"),
|
||||||
"abgeschlossen": ("Abgeschlossen", "dark", "fa-check-double"),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pipeline_stages = [
|
pipeline_stages = [
|
||||||
@@ -1852,7 +1850,7 @@ def zahlungs_pipeline(request):
|
|||||||
"zahlungen": list(pipeline[key]),
|
"zahlungen": list(pipeline[key]),
|
||||||
"gesamt": pipeline[key].aggregate(s=Sum("betrag"))["s"] or Decimal("0"),
|
"gesamt": pipeline[key].aggregate(s=Sum("betrag"))["s"] or Decimal("0"),
|
||||||
}
|
}
|
||||||
for key in ["offen", "nachweis_eingereicht", "freigegeben", "ueberwiesen", "abgeschlossen"]
|
for key in ["offen", "nachweis_eingereicht", "freigegeben", "ueberwiesen"]
|
||||||
]
|
]
|
||||||
|
|
||||||
destinataere = Destinataer.objects.filter(aktiv=True).order_by("nachname", "vorname")
|
destinataere = Destinataer.objects.filter(aktiv=True).order_by("nachname", "vorname")
|
||||||
|
|||||||
@@ -130,14 +130,6 @@
|
|||||||
<a href="{% url 'stiftung:unterstuetzung_mark_paid' pk=z.pk %}" class="btn btn-xs btn-outline-success" style="font-size:0.7rem;padding:2px 6px;" title="Als überwiesen markieren">
|
<a href="{% url 'stiftung:unterstuetzung_mark_paid' pk=z.pk %}" class="btn btn-xs btn-outline-success" style="font-size:0.7rem;padding:2px 6px;" title="Als überwiesen markieren">
|
||||||
<i class="fas fa-university"></i>
|
<i class="fas fa-university"></i>
|
||||||
</a>
|
</a>
|
||||||
{% elif stage.key == 'ueberwiesen' %}
|
|
||||||
<form method="post" action="{% url 'stiftung:unterstuetzung_abschliessen' pk=z.pk %}">
|
|
||||||
{% csrf_token %}
|
|
||||||
<input type="hidden" name="next" value="{% url 'stiftung:zahlungs_pipeline' %}">
|
|
||||||
<button type="submit" class="btn btn-xs btn-outline-dark" style="font-size:0.7rem;padding:2px 6px;" title="Abschließen">
|
|
||||||
<i class="fas fa-check-double"></i>
|
|
||||||
</button>
|
|
||||||
</form>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url 'stiftung:unterstuetzung_detail' pk=z.pk %}" class="btn btn-xs btn-outline-secondary" style="font-size:0.7rem;padding:2px 6px;" title="Details">
|
<a href="{% url 'stiftung:unterstuetzung_detail' pk=z.pk %}" class="btn btn-xs btn-outline-secondary" style="font-size:0.7rem;padding:2px 6px;" title="Details">
|
||||||
<i class="fas fa-eye"></i>
|
<i class="fas fa-eye"></i>
|
||||||
|
|||||||
Reference in New Issue
Block a user