Zum Hauptinhalt springen

Bankkonten und Zuweisungen

Zweck

SpeamCore trennt Bankkonto und Bankzuweisung in zwei Datenobjekte:

  • BankAccount — die reine Kontoinformation: Bankname, IBAN, BIC, Inhaber, Kontonummer.
  • BankAssignment — verknuepft ein Konto polymorph mit einer Geschaeftsentitaet (Kunde, Standort, Lieferant, Hersteller, Mitarbeiter).

Damit kann ein Kunde, der gleichzeitig auch Lieferant ist, dasselbe Bankkonto unter beiden Funktionen nutzen, ohne es doppelt zu pflegen.

Es gibt keine eigene Routen-Seite /bank-accounts. Die Verwaltung passiert immer im Kontext einer Geschaeftsentitaet — z. B. über den Tab Bankkonten auf einer Lieferanten- oder Kunden-Detailseite.

Datenmodell

BankAccount BankAssignment
───────── ──────────────
id id
bankName bankAccountId ────► BankAccount.id
iban parentId ┐
bic parentType │ polymorph:
accountHolderName │ Customer | Location |
accountNumber │ Supplier | Manufacturer |
overdraftFacility │ Employee

└──► z. B. Customer.id

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewBankAccountKonto-Daten lesenAPP_SPEAMCORE_VIEW_BANK_ACCOUNT
create/update/deleteBankAccountKonto pflegenAPP_SPEAMCORE_CREATE/UPDATE/DELETE_BANK_ACCOUNT
viewBankAssignmentZuordnung sehen (Tab „Bankkonten")APP_SPEAMCORE_VIEW_BANK_ASSIGNMENT
create/update/deleteBankAssignmentZuordnung pflegenAPP_SPEAMCORE_CREATE/UPDATE/DELETE_BANK_ASSIGNMENT

Im Mandantenkontext wirkt zusaetzlich clientScope-Filterung — Bankkonten anderer Mandanten sind nicht sichtbar.

Wo der Konzept-Pattern angewandt wird

GeschaeftsentitaetTab in der Detailseite
Kunde/customers/:id/bank-assignments
Standort(eigene Bankverbindungen pro Standort möglich)
Lieferant/suppliers/:id/banks
Hersteller(intern; über BankAssignment.parentType = 'Manufacturer')
Mitarbeiter(intern; für Lohnzahlung etc.)

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/bank-accountsKonten-Listeview BankAccount
POST/api/bank-accountsKonto anlegencreate BankAccount
PATCH/api/bank-accounts/:idKonto ändernupdate BankAccount
GET/api/bank-assignments?parentId=:id&parentType=:typeZuweisungen einer Entitaetview BankAssignment
POST/api/bank-assignmentsZuweisung anlegencreate BankAssignment
DELETE/api/bank-assignments/:idZuweisung löschendelete BankAssignment

Code-Lookup bestätigt: Aktuell keine serverseitige IBAN-Validierung — IBANs werden ohne Pruefsumme akzeptiert. Eine Library wie ibantools koennte ergaenzt werden.

Drift-Risiken

  1. IBAN-Validierung fehlt serverseitig. Frontend prueft Format, Backend speichert ungeprueft.
  2. Loesch-Kaskade unklar. Wenn ein BankAccount gelöscht wird, was passiert mit BankAssignment-Einträgen? Prüfen.
  3. Mandanten-Sichtbarkeit. clientScope greift bei BankAccount — bei BankAssignment parallel? Vermutlich ja, sollte aber dokumentiert werden.

Verknuepfungen

Versionshinweise

  • 2026-04-29: Initiale Veroeffentlichung.