Entität für ausgehende SEPA-Mandate einführen #183

Open
opened 2026-05-15 15:33:13 +00:00 by flfeders · 4 comments
Owner

KI-AGENT: Dieses Issue ist als fachliche Grundlage für #182 gedacht.

Ziel:
Es soll eine neue Entität "Ausgehende SEPA-Mandate" eingeführt werden. Ein SEPA-Mandat soll nicht mehr nur implizit über Kundenfelder wie infoData.hasSEPA, infoData.sepaSignedAt und Bankkonto-Zuordnung abgebildet werden, sondern als eigener Datensatz mit klarer Referenz, Status und Bankverbindung.

Motivation:
Für den SEPA-Lastschrift-Export aus #182 braucht der Export eine belastbare Quelle für Mandatsreferenz, Unterschriftsdatum, Mandatstyp und Konto. Eine eigene Entität trennt Kundendaten, Bankkonten, Verträge und Rechnungen sauber voneinander und erlaubt mehrere Mandate pro Kunde.

Vorgeschlagene Entität:

  • Mandant
  • Kunde
  • Kunden-Bankkonto (entitybankaccounts)
  • Mandatsreferenz
  • Mandatsdatum / unterschrieben am
  • Status, z. B. Entwurf, Aktiv, Widerrufen, Abgelaufen
  • Mandatstyp, z. B. CORE oder B2B
  • Nutzungsart / Sequenz, z. B. wiederkehrend oder einmalig
  • optional gültig ab / gültig bis
  • optional Notiz
  • optional Datei/Nachweis später ergänzbar
  • archiviert

Integration:

  • Kunden erhalten einen Tab oder Unterbereich "Ausgehende SEPA-Mandate".
  • Rechnungen erhalten ein optionales Feld für das verwendete ausgehende SEPA-Mandat.
  • Verträge erhalten ebenfalls ein optionales Feld für das SEPA-Mandat, damit Serien- oder Vertragsrechnungen das Mandat übernehmen können.
  • Bei Rechnungserstellung kann ein aktives Mandat des Kunden vorausgewählt werden.
  • Der SEPA-Export aus #182 verwendet später nur Rechnungen mit gültigem, aktivem Mandat.

Akzeptanzkriterien:

  • Neue Entität ist im Backend-Schema, Resource-Konfig und Frontend als Standard-Entität nutzbar.
  • Mandate können für einen Kunden angelegt, bearbeitet, archiviert und angezeigt werden.
  • Ein Mandat referenziert genau ein Kunden-Bankkonto.
  • Rechnungen und Verträge können ein Mandat referenzieren.
  • Bestehende Kundenfelder für SEPA bleiben zunächst kompatibel, werden aber nicht mehr als primäre Exportquelle verwendet.

Offene Punkte:

  • Soll die Mandatsreferenz automatisch generiert werden, z. B. aus Kundennummer und laufender Nummer?
  • Soll pro Kunde genau ein aktives Standardmandat markiert werden können?
  • Soll es eine Migrationshilfe von bestehenden infoData.hasSEPA-Kunden in neue Mandate geben?
KI-AGENT: Dieses Issue ist als fachliche Grundlage für #182 gedacht. Ziel: Es soll eine neue Entität "Ausgehende SEPA-Mandate" eingeführt werden. Ein SEPA-Mandat soll nicht mehr nur implizit über Kundenfelder wie `infoData.hasSEPA`, `infoData.sepaSignedAt` und Bankkonto-Zuordnung abgebildet werden, sondern als eigener Datensatz mit klarer Referenz, Status und Bankverbindung. Motivation: Für den SEPA-Lastschrift-Export aus #182 braucht der Export eine belastbare Quelle für Mandatsreferenz, Unterschriftsdatum, Mandatstyp und Konto. Eine eigene Entität trennt Kundendaten, Bankkonten, Verträge und Rechnungen sauber voneinander und erlaubt mehrere Mandate pro Kunde. Vorgeschlagene Entität: - Mandant - Kunde - Kunden-Bankkonto (`entitybankaccounts`) - Mandatsreferenz - Mandatsdatum / unterschrieben am - Status, z. B. Entwurf, Aktiv, Widerrufen, Abgelaufen - Mandatstyp, z. B. CORE oder B2B - Nutzungsart / Sequenz, z. B. wiederkehrend oder einmalig - optional gültig ab / gültig bis - optional Notiz - optional Datei/Nachweis später ergänzbar - archiviert Integration: - Kunden erhalten einen Tab oder Unterbereich "Ausgehende SEPA-Mandate". - Rechnungen erhalten ein optionales Feld für das verwendete ausgehende SEPA-Mandat. - Verträge erhalten ebenfalls ein optionales Feld für das SEPA-Mandat, damit Serien- oder Vertragsrechnungen das Mandat übernehmen können. - Bei Rechnungserstellung kann ein aktives Mandat des Kunden vorausgewählt werden. - Der SEPA-Export aus #182 verwendet später nur Rechnungen mit gültigem, aktivem Mandat. Akzeptanzkriterien: - Neue Entität ist im Backend-Schema, Resource-Konfig und Frontend als Standard-Entität nutzbar. - Mandate können für einen Kunden angelegt, bearbeitet, archiviert und angezeigt werden. - Ein Mandat referenziert genau ein Kunden-Bankkonto. - Rechnungen und Verträge können ein Mandat referenzieren. - Bestehende Kundenfelder für SEPA bleiben zunächst kompatibel, werden aber nicht mehr als primäre Exportquelle verwendet. Offene Punkte: - Soll die Mandatsreferenz automatisch generiert werden, z. B. aus Kundennummer und laufender Nummer? - Soll pro Kunde genau ein aktives Standardmandat markiert werden können? - Soll es eine Migrationshilfe von bestehenden `infoData.hasSEPA`-Kunden in neue Mandate geben?
Author
Owner

KI-AGENT: Umsetzung ist erfolgt und committed: 44017a7 (Ausgehende SEPA-Mandate einführen #183).

Umgesetzt wurde:

  • Neue Backend-Entität outgoingsepamandates mit Mandatsreferenz, Kunde, Bankverbindung, Status, Mandatstyp, Sequenz, Unterschriftsdatum, Gültigkeit, Standardmandat und Archivierung.
  • Migration 0037_outgoing_sepa_mandates.sql inklusive Nummernkreis outgoingsepamandates mit Standard SEPA-1000.
  • Resource-Konfiguration und Historien-Anbindung für die neue Entität.
  • Validierung, dass die ausgewählte Bankverbindung zum ausgewählten Kunden gehört.
  • Pro Kunde kann ein Standardmandat markiert werden; beim Speichern wird ein anderes Standardmandat desselben Kunden automatisch zurückgesetzt.
  • Kunden erhalten den Tab "Ausgehende SEPA-Mandate".
  • Verträge können ein ausgehendes SEPA-Mandat referenzieren.
  • Ausgangsbelege/Rechnungen können ein ausgehendes SEPA-Mandat referenzieren; bei SEPA-Lastschrift wird ein aktives Standardmandat bzw. das Mandat aus dem Vertrag vorbelegt.
  • Navigation und Mandanten-Feature-Konfiguration wurden um SEPA-Mandate ergänzt.

Geprüft:

  • npm run build im Backend erfolgreich.
  • npm run build im Frontend erfolgreich. Es gab nur bestehende Build-Warnungen zu @vue-pdf-viewer/Chunk-Größen, keine Fehler.
KI-AGENT: Umsetzung ist erfolgt und committed: 44017a7 (`Ausgehende SEPA-Mandate einführen #183`). Umgesetzt wurde: - Neue Backend-Entität `outgoingsepamandates` mit Mandatsreferenz, Kunde, Bankverbindung, Status, Mandatstyp, Sequenz, Unterschriftsdatum, Gültigkeit, Standardmandat und Archivierung. - Migration `0037_outgoing_sepa_mandates.sql` inklusive Nummernkreis `outgoingsepamandates` mit Standard `SEPA-1000`. - Resource-Konfiguration und Historien-Anbindung für die neue Entität. - Validierung, dass die ausgewählte Bankverbindung zum ausgewählten Kunden gehört. - Pro Kunde kann ein Standardmandat markiert werden; beim Speichern wird ein anderes Standardmandat desselben Kunden automatisch zurückgesetzt. - Kunden erhalten den Tab "Ausgehende SEPA-Mandate". - Verträge können ein ausgehendes SEPA-Mandat referenzieren. - Ausgangsbelege/Rechnungen können ein ausgehendes SEPA-Mandat referenzieren; bei SEPA-Lastschrift wird ein aktives Standardmandat bzw. das Mandat aus dem Vertrag vorbelegt. - Navigation und Mandanten-Feature-Konfiguration wurden um SEPA-Mandate ergänzt. Geprüft: - `npm run build` im Backend erfolgreich. - `npm run build` im Frontend erfolgreich. Es gab nur bestehende Build-Warnungen zu `@vue-pdf-viewer`/Chunk-Größen, keine Fehler.
Author
Owner

KI-AGENT: Ergänzung umgesetzt und committed: 8d7bc2e (SEPA-Mandatsauswahlen als Wörterbücher pflegen #183).

Änderungen:

  • Mandatstypen sind jetzt als Wörterbuch outgoingSepaMandateTypeOptions gepflegt: CORE = Basislastschrift, B2B = Firmenlastschrift.
  • Sequenzen sind jetzt als Wörterbuch outgoingSepaSequenceTypeOptions gepflegt: RCUR, OOFF, FRST, FNAL mit deutsch lesbarer Bezeichnung.
  • Die Formulare speichern weiterhin die SEPA-Codes (CORE, B2B, RCUR, OOFF, FRST, FNAL) und zeigen die verständlichen Labels an.
  • Backend-Validierung ergänzt, sodass nur diese definierten Werte für Status, Mandatstyp und Sequenz akzeptiert werden.

Geprüft:

  • Backend npm run build erfolgreich.
  • Frontend npm run build erfolgreich, nur bestehende Warnungen zu @vue-pdf-viewer/Chunk-Größen.
KI-AGENT: Ergänzung umgesetzt und committed: 8d7bc2e (`SEPA-Mandatsauswahlen als Wörterbücher pflegen #183`). Änderungen: - Mandatstypen sind jetzt als Wörterbuch `outgoingSepaMandateTypeOptions` gepflegt: CORE = Basislastschrift, B2B = Firmenlastschrift. - Sequenzen sind jetzt als Wörterbuch `outgoingSepaSequenceTypeOptions` gepflegt: RCUR, OOFF, FRST, FNAL mit deutsch lesbarer Bezeichnung. - Die Formulare speichern weiterhin die SEPA-Codes (`CORE`, `B2B`, `RCUR`, `OOFF`, `FRST`, `FNAL`) und zeigen die verständlichen Labels an. - Backend-Validierung ergänzt, sodass nur diese definierten Werte für Status, Mandatstyp und Sequenz akzeptiert werden. Geprüft: - Backend `npm run build` erfolgreich. - Frontend `npm run build` erfolgreich, nur bestehende Warnungen zu `@vue-pdf-viewer`/Chunk-Größen.
Author
Owner

KI-AGENT: Die Bankverbindung im SEPA-Mandat hat jetzt die gleichen Modal-Buttons wie vergleichbare Kunden-Felder: Öffnen/Bearbeiten/Neu-Anlegen läuft über EntityModalButtons, die Auswahl wird nach Rückgabe direkt ins Mandat übernommen. Zusätzlich akzeptiert EntityModalButtons nun auch numerische IDs. Frontend-Build wurde erfolgreich ausgeführt.

KI-AGENT: Die Bankverbindung im SEPA-Mandat hat jetzt die gleichen Modal-Buttons wie vergleichbare Kunden-Felder: Öffnen/Bearbeiten/Neu-Anlegen läuft über `EntityModalButtons`, die Auswahl wird nach Rückgabe direkt ins Mandat übernommen. Zusätzlich akzeptiert `EntityModalButtons` nun auch numerische IDs. Frontend-Build wurde erfolgreich ausgeführt.
Author
Owner

KI-AGENT: SEPA-Mandate sind jetzt zusätzlich in Verträgen und Ausgangsrechnungen eingebunden. Im Vertrag kann das aktive Mandat passend zum Kunden ausgewählt und über die Modal-Buttons geöffnet, bearbeitet oder neu angelegt werden. In Ausgangsrechnungen gibt es im Infoblock eine eigene Zeile für Zahlungsart und SEPA-Mandat; das Mandatsfeld erscheint nur bei SEPA-Lastschrift. Beim Auswählen eines Vertrags werden Zahlungsart und hinterlegtes Mandat in die Rechnung übernommen. Frontend-Build wurde erfolgreich ausgeführt.

KI-AGENT: SEPA-Mandate sind jetzt zusätzlich in Verträgen und Ausgangsrechnungen eingebunden. Im Vertrag kann das aktive Mandat passend zum Kunden ausgewählt und über die Modal-Buttons geöffnet, bearbeitet oder neu angelegt werden. In Ausgangsrechnungen gibt es im Infoblock eine eigene Zeile für Zahlungsart und SEPA-Mandat; das Mandatsfeld erscheint nur bei SEPA-Lastschrift. Beim Auswählen eines Vertrags werden Zahlungsart und hinterlegtes Mandat in die Rechnung übernommen. Frontend-Build wurde erfolgreich ausgeführt.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: flfeders/FEDEO#183