Prozessdiagramm Lehrerabrechnung und SEPA
Voraussetzungen
- Das Diagramm beschreibt ausschließlich die in Backend und Frontend vorhandenen Status, Aktionen und Sperren.
- Es ist eine fachliche Übersicht, kein Ersatz für Berechtigungsprüfung oder Bankprüfung in der Anwendung.
- Für den SEPA-Zweig muss eine finalisierte, noch nicht bezahlte Abrechnung als Kandidat verfügbar sein.
Schritte
- Lesen Sie das Diagramm von oben nach unten: zunächst Abrechnungsentwurf, Prüfung und Finalisierung.
- Folgen Sie nach der Finalisierung entweder dem SEPA-Zweig oder bei Bedarf dem Berichtigungszweig.
- Beachten Sie im SEPA-Zweig die Trennung zwischen Export und Bestätigung.
stateDiagram-v2
direction LR
[*] --> DRAFT: Abrechnungsentwurf erstellen
DRAFT --> REVIEW_PENDING: zur Prüfung senden
REVIEW_PENDING --> CHANGES_REQUESTED: Änderungswunsch mit Grund
CHANGES_REQUESTED --> REVIEW_PENDING: erneut zur Prüfung senden
REVIEW_PENDING --> APPROVED: freigeben
DIFFERENCE_FOUND --> APPROVED: freigeben
APPROVED --> FINALIZED: finalisieren
DRAFT --> DIFFERENCE_FOUND: externe Rechnung mit Differenz erfassen
DRAFT --> REVIEW_PENDING: externe Rechnung ohne Differenz erfassen
FINALIZED --> EXPORTED: als SEPA-Kandidat auswählen und XML exportieren
EXPORTED --> PAID: Bankausführung bestätigen
EXPORTED --> FINALIZED: offenen Lauf stornieren
FINALIZED --> CORRECTION_PENDING: Berichtigung beginnen
CORRECTION_PENDING --> FINALIZED: Berichtigungsentwurf löschen
CORRECTION_PENDING --> CANCELLED: Berichtigung finalisieren
PAID --> DRAFT: Berichtigung erstellen; Original bleibt PAID
APPROVED --> ADJUSTMENT_PENDING: Berichtigung zu bezahltem Original finalisieren
ADJUSTMENT_PENDING --> ADJUSTED: Differenzausgleich abschließen
Zentrale Aussage: Der Status EXPORTED steht für einen offenen Zahlungslauf, nicht für eine Zahlung. Nur der Übergang EXPORTED → PAID nach der Bestätigung setzt die Abrechnung auf bezahlt. Eine Stornierung des offenen Laufs führt nicht zu PAID und gibt die Abrechnung wieder frei.
Warnungen
- Das Diagramm verkürzt Details: Eine externe Lehrerrechnung kann nur nach Erfassung von Nummer und Originaldatei finalisiert werden.
- Eine Gutschrift wird nur nach den im Abrechnungsprofil geprüften Voraussetzungen freigegeben und finalisiert.
- Eine Berichtigung ist nur für eine finalisierte oder bezahlte Gutschrift vorgesehen; ein Original in einem offenen SEPA-Lauf kann nicht berichtigt werden.
- Bei einer Berichtigung eines bezahlten Originals bleibt das Original bezahlt. Das Diagramm zeigt deshalb keinen Übergang von
PAIDzurück in einen unbezahlten Status.
Screenshot-Checkliste
- Gerenderte Diagrammseite in der Kundendokumentation.
- Verlinkte oder unmittelbar benachbarte Detailansicht mit Status Entwurf, Prüfung ausstehend, Freigegeben und Finalisiert.
- Zahlungslauf Ausführung offen als Beleg für den vom Diagramm dargestellten Exportzustand.
- Bestätigter Zahlungslauf und Abrechnung mit Status Bezahlt.
- Berichtigungsfall eines finalisierten und eines bereits bezahlten Originals mit anonymisierten Daten.
Offene Input-Fragen
- Soll die veröffentlichte Version zusätzlich eine für Lehrkräfte vereinfachte Darstellung ohne interne SEPA-Aktionen enthalten?
- Welche Rollen- und Berechtigungsinformationen sollen direkt am Diagramm stehen, ohne die Prozessdarstellung zu überladen?
- Soll für Bankablehnungen und Teilrückmeldungen ein gesondertes, nach Produktentscheidung ergänztes Diagramm entstehen?
Quellenbasis im Code
- Statuswerte:
yasa-backend/src/main/java/com/school_system/enums/school/TeacherSettlementStatus.java. - Entwurf, Prüfung, Änderungswunsch, Freigabe, Finalisierung und Berichtigung:
yasa-backend/src/main/java/com/school_system/service/impl/TeacherSettlementServiceImpl.java. - SEPA-Export, Bestätigung und Stornierung:
yasa-backend/src/main/java/com/school_system/controller/InvoiceController.java. - Sichtbare Oberfläche für Lehrerabrechnung und SEPA-Zahlungsläufe:
yasa-frontend/src/app/components/invoices/teacher-invoice-page/teacher-invoice-page.component.htmlsowieyasa-frontend/src/app/components/invoices/teacher-payment-batch/teacher-payment-batch.component.html.