Gutschriften: Auszahlungskonto (Bankkonto des Kunden) fuer Ueberweisungen

Bei Geld-Gutschriften kann die Auszahlung auf ein anderes Konto gehen
als das Vertrags-Abbuchkonto:

- CreditNote.payoutBankCardId + Migration (FK ON DELETE SET NULL, damit
  Loeschen einer Bankkarte die Gutschrift nicht mitreisst).
- Formular: Dropdown mit allen Bankkonten des Kunden (Default =
  Vertrags-Abbuchkonto). getCreditNoteDefaults liefert bankCards +
  contractBankCardId.
- Server prueft, dass die gewaehlte Bankkarte dem Kunden des Vertrags
  gehoert (kein Fremdkonto unterschieben).
- PDF: bei Ueberweisung 'Unsere Bankverbindung' (Absender) + darunter
  'an Bankkonto: <Kunden-IBAN> (<Inhaber>)'. Section-Zeile zeigt das
  Auszahlungskonto.

Lokal verifiziert (Anlage + PDF).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-06 13:49:35 +02:00
co-authored by Claude Opus 4.8
parent 642fb05c76
commit f24c4308aa
7 changed files with 151 additions and 10 deletions
+8
View File
@@ -360,6 +360,7 @@ model BankCard {
description String? @db.Text // Freitext-Notiz (z.B. "Geschäftskonto", "gemeinsames Konto mit Partner")
isActive Boolean @default(true)
contracts Contract[]
creditNotePayouts CreditNote[] @relation("CreditNotePayoutBankCard")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
@@ -1008,6 +1009,13 @@ model CreditNote {
// Sachwert: Bestätigung "Ware erhalten".
goodsReceived Boolean @default(false)
// Auszahlungskonto (nur GELD): Bankkarte des Kunden, auf die überwiesen
// wird. Kann ein anderes Konto sein als das Abbuchkonto des Vertrags.
// ON DELETE SET NULL, damit das Löschen einer Bankkarte die Gutschrift
// (historischer Beleg) nicht mitreißt.
payoutBankCardId Int?
payoutBankCard BankCard? @relation("CreditNotePayoutBankCard", fields: [payoutBankCardId], references: [id], onDelete: SetNull)
// Überweisungsbeleg (nur GELD) hochgeladene Datei.
receiptPath String?
// Generiertes Gutschrift-Dokument (PDF bzw. ZUGFeRD-Hybrid) Phase 3.