Bankkarte-/Ausweis-Details in Vertrag + neues Feld Kartennummer

Schema: BankCard.cardNumber (String?, optional) + Migration
20260813100000_bank_card_number (ADD COLUMN IF NOT EXISTS), auf Dev
angewandt + prisma generate; Prod via migrate deploy. Eingabefeld
"Kartennummer" im Bankkarten-Modal (Kundenakte).

Vertragsansicht (ContractDetail) und Vertrag bearbeiten (ContractForm)
zeigen jetzt bei Bankkarte zusaetzlich BIC/Bank/Kartennummer/Ablaufdatum
und bei Ausweis Behoerde/Ausstellung/Ablaufdatum sowie Geburtsort +
Geburtsdatum des Kunden - jeweils mit Copy-Button und nur wenn gesetzt.
Im Form je Select in eigenem div gewrappt (Grid-Alignment).

Verifiziert: tsc + vite build gruen, cardNumber Round-Trip (update->read),
Contract-Include liefert alle Felder inkl. customer.birthDate/birthPlace.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-13 15:00:29 +02:00
co-authored by Claude Opus 4.8
parent f3668b8a5a
commit 0d42bd89e8
9 changed files with 124 additions and 3 deletions
@@ -2697,6 +2697,7 @@ function BankCardModal({
const getInitialFormData = () => ({
accountHolder: bankCard?.accountHolder || '',
iban: bankCard?.iban || '',
cardNumber: bankCard?.cardNumber || '',
bic: bankCard?.bic || '',
bankName: bankCard?.bankName || '',
expiryDate: bankCard?.expiryDate ? new Date(bankCard.expiryDate).toISOString().split('T')[0] : '',
@@ -2753,7 +2754,7 @@ function BankCardModal({
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['customer', customerId] });
onClose();
setFormData({ accountHolder: '', iban: '', bic: '', bankName: '', expiryDate: '', description: '', isActive: true });
setFormData({ accountHolder: '', iban: '', cardNumber: '', bic: '', bankName: '', expiryDate: '', description: '', isActive: true });
},
});
@@ -2830,6 +2831,12 @@ function BankCardModal({
</div>
</div>
<Input
label="Kartennummer"
value={formData.cardNumber}
onChange={(e) => setFormData({ ...formData, cardNumber: e.target.value })}
/>
<Input
label="BIC"
value={formData.bic}