From a4895374b9d438f4781dafdee0e758b3e7fb4cfe Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 21 Jun 2026 16:10:20 +0200 Subject: [PATCH] Kundendaten-Modal: nur Anbieter-Nummern, keine internen CRM-Nummern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modal ist für Mails AN den Anbieter gedacht – interne CRM-Nummern interessieren dort niemanden. - formatCustomerBlock: customer.customerNumber (intern) raus, stattdessen contract.customerNumberAtProvider rein. - formatContractBlock: interne contractNumber raus, restliche Anbieter-/Vertriebsplattform-Nummern bleiben. - Previews ziehen ebenfalls auf customerNumberAtProvider / contractNumberAtProvider um, mit Hinweis-Text wenn keine Anbieter-Nummer hinterlegt ist. Co-Authored-By: Claude Opus 4.7 --- .../email/InsertCustomerDataModal.tsx | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/email/InsertCustomerDataModal.tsx b/frontend/src/components/email/InsertCustomerDataModal.tsx index 8dece209..d2330ffb 100644 --- a/frontend/src/components/email/InsertCustomerDataModal.tsx +++ b/frontend/src/components/email/InsertCustomerDataModal.tsx @@ -492,6 +492,11 @@ function fullName( return parts.filter(Boolean).join(' '); } +// User-Wunsch 2026-06-21: das Modal ist für Mails AN den Anbieter gedacht. +// Die interne CRM-Kundennummer / -Vertragsnummer interessiert dort +// niemanden – relevant ist nur, was der Anbieter selbst vergeben hat +// (`customerNumberAtProvider`, `contractNumberAtProvider`). Wir blenden +// die internen Nummern komplett aus. function formatCustomerBlock( customer: NonNullable, contract: Contract, @@ -499,7 +504,9 @@ function formatCustomerBlock( ): string { const lines: string[] = ['Kundendaten:']; lines.push(fullName(customer, contract.type)); - if (customer.customerNumber) lines.push(`Kundennummer: ${customer.customerNumber}`); + if (contract.customerNumberAtProvider) { + lines.push(`Kundennummer beim Anbieter: ${contract.customerNumberAtProvider}`); + } if (customer.birthDate) lines.push(`Geburtsdatum: ${formatDate(customer.birthDate)}`); if (email) lines.push(`E-Mail: ${email}`); if (customer.phone) lines.push(`Telefon: ${customer.phone}`); @@ -510,7 +517,9 @@ function formatCustomerBlock( function previewCustomer(customer: NonNullable, contract: Contract): string { return [ fullName(customer, contract.type), - customer.customerNumber ? `Kundennummer: ${customer.customerNumber}` : '', + contract.customerNumberAtProvider + ? `Anbieter-Kdnr.: ${contract.customerNumberAtProvider}` + : '', ] .filter(Boolean) .join(' · '); @@ -530,9 +539,12 @@ function previewAddress(addr: Address): string { return `${addr.street} ${addr.houseNumber}, ${addr.postalCode} ${addr.city}`; } +// Interne `contractNumber` raus (User-Wunsch 2026-06-21): für eine Mail +// an den Provider zählt nur die Vertragsnummer, die der Provider selbst +// vergeben hat. Vertriebsplattform-Nummern bleiben drin – die nutzt der +// CRM-Mitarbeiter teilweise auch für die Plattform-Korrespondenz. function formatContractBlock(c: Contract): string { const lines: string[] = ['Vertragsdaten:']; - lines.push(`Vertragsnummer: ${c.contractNumber}`); if (c.provider?.name) lines.push(`Anbieter: ${c.provider.name}`); if (c.tariff?.name) lines.push(`Tarif: ${c.tariff.name}`); if (c.customerNumberAtProvider) lines.push(`Kundennummer beim Anbieter: ${c.customerNumberAtProvider}`); @@ -546,7 +558,12 @@ function formatContractBlock(c: Contract): string { } function previewContract(c: Contract): string { - const parts: string[] = [c.contractNumber]; + const parts: string[] = []; + if (c.contractNumberAtProvider) { + parts.push(`Anbieter-Vtr.: ${c.contractNumberAtProvider}`); + } else if (c.provider?.name) { + parts.push('(keine Anbieter-Vertragsnummer hinterlegt)'); + } if (c.provider?.name) parts.push(c.provider.name); if (c.tariff?.name) parts.push(c.tariff.name); return parts.join(' · ');