Vertrag: Kunden-/Vertragsnummer bei Vertriebsplattform

Viele Vertriebsplattformen vergeben eigene Nummern, die nicht mit
denen des Endanbieters identisch sind. Zwei neue optionale Felder
unter "Anbieter & Tarif".

- Schema: Contract.customerNumberAtSalesPlatform +
  contractNumberAtSalesPlatform, Migration mit IF NOT EXISTS.
- ContractForm: zwei neue Inputs direkt unter den entsprechenden
  Provider-Feldern.
- ContractDetail: eigene Zeilen mit CopyButton.
- Audit-Log-Mapping + Renewal-Copy + XSS-Strip-Whitelist mitgezogen.
- Bonus: contractNumberAtProvider war im Renewal-Copy und Audit-
  Label-Mapping fehlend – mitkorrigiert.
This commit is contained in:
2026-06-03 18:13:17 +02:00
parent 101369c205
commit fcc3b04725
9 changed files with 59 additions and 0 deletions
@@ -203,6 +203,9 @@ export async function updateContract(req: AuthRequest, res: Response): Promise<v
const fieldLabels: Record<string, string> = {
status: 'Status', startDate: 'Vertragsbeginn', endDate: 'Vertragsende',
portalUsername: 'Portal-Benutzername', customerNumberAtProvider: 'Kundennummer beim Anbieter',
contractNumberAtProvider: 'Vertragsnummer beim Anbieter',
customerNumberAtSalesPlatform: 'Kundennummer bei Vertriebsplattform',
contractNumberAtSalesPlatform: 'Vertragsnummer bei Vertriebsplattform',
providerId: 'Anbieter', tariffId: 'Tarif', cancellationPeriodId: 'Kündigungsfrist',
contractDurationId: 'Vertragslaufzeit', platformId: 'Vertriebsplattform',
cancellationDate: 'Kündigungsdatum', cancellationSentDate: 'Kündigung gesendet am',
+5
View File
@@ -203,6 +203,8 @@ interface ContractCreateData {
providerName?: string;
tariffName?: string;
customerNumberAtProvider?: string;
customerNumberAtSalesPlatform?: string;
contractNumberAtSalesPlatform?: string;
priceFirst12Months?: string;
priceFrom13Months?: string;
priceAfter24Months?: string;
@@ -896,6 +898,9 @@ export async function createRenewalContract(previousContractId: number) {
providerName: previousContract.providerName,
tariffName: previousContract.tariffName,
customerNumberAtProvider: previousContract.customerNumberAtProvider,
contractNumberAtProvider: previousContract.contractNumberAtProvider,
customerNumberAtSalesPlatform: previousContract.customerNumberAtSalesPlatform,
contractNumberAtSalesPlatform: previousContract.contractNumberAtSalesPlatform,
portalUsername: previousContract.portalUsername,
portalPasswordEncrypted: previousContract.portalPasswordEncrypted,
commission: previousContract.commission,
+2
View File
@@ -75,6 +75,8 @@ const CONTRACT_DISPLAY_STRING_FIELDS = [
'tariffName',
'customerNumberAtProvider',
'contractNumberAtProvider',
'customerNumberAtSalesPlatform',
'contractNumberAtSalesPlatform',
'portalUsername',
'previousProviderName',
'previousCustomerNumber',