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:
@@ -33,6 +33,7 @@ async function loadData(creditNoteId: number) {
|
||||
address: true,
|
||||
},
|
||||
},
|
||||
payoutBankCard: { select: { iban: true, accountHolder: true, bankName: true } },
|
||||
},
|
||||
});
|
||||
if (!cn) throw new ApiError(404, 'Gutschrift nicht gefunden');
|
||||
@@ -121,8 +122,19 @@ export async function generateCreditNotePdf(creditNoteId: number): Promise<{ buf
|
||||
doc.fontSize(10);
|
||||
if (cn.type === 'SACHWERT') {
|
||||
doc.text(`Ware erhalten: ${cn.goodsReceived ? 'Ja' : 'Nein'}`);
|
||||
} else if (company.iban) {
|
||||
doc.text(`Auszahlung per Überweisung. Bankverbindung: ${company.bankName} · IBAN ${company.iban} · BIC ${company.bic}`.trim());
|
||||
} else {
|
||||
doc.text('Auszahlung per Überweisung.');
|
||||
if (company.iban) {
|
||||
doc.fontSize(9).fillColor('#333')
|
||||
.text(`Unsere Bankverbindung: ${[company.bankName, `IBAN ${company.iban}`, company.bic ? `BIC ${company.bic}` : ''].filter(Boolean).join(' · ')}`);
|
||||
}
|
||||
// Auszahlungskonto des Kunden (kann vom Abbuchkonto abweichen).
|
||||
if (cn.payoutBankCard) {
|
||||
const holder = cn.payoutBankCard.accountHolder ? ` (${cn.payoutBankCard.accountHolder})` : '';
|
||||
doc.fontSize(9).fillColor('#333')
|
||||
.text(`an Bankkonto: ${cn.payoutBankCard.iban}${holder}${cn.payoutBankCard.bankName ? ` · ${cn.payoutBankCard.bankName}` : ''}`);
|
||||
}
|
||||
doc.fillColor('#000');
|
||||
}
|
||||
|
||||
// ---- Unterschriftsblock ----
|
||||
|
||||
Reference in New Issue
Block a user