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
+14
View File
@@ -97,6 +97,20 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **🆕 Vertrag: Kunden-/Vertragsnummer bei Vertriebsplattform**
- Zwei neue optionale Felder
`Contract.customerNumberAtSalesPlatform` +
`contractNumberAtSalesPlatform`, Migration
`20260603150000_contract_sales_platform_numbers` mit
`IF NOT EXISTS`.
- Im ContractForm direkt unter „Kundennummer/Vertragsnummer beim
Anbieter" angeordnet. ContractDetail zeigt sie als eigene Zeilen
mit Copy-Button. Audit-Log-Mapping + Renewal-Copy + XSS-Strip
(CONTRACT_DISPLAY_STRING_FIELDS) mitgezogen.
- Bonus: das fehlende `contractNumberAtProvider` im Renewal-Copy
und Audit-Label-Mapping ist gleich mit drin wurde bisher
nicht in VVL-Folgeverträge kopiert.
- [x] **🆕 Email-Links öffnen im neuen Tab**
- In `EmailDetail` nach der DOMPurify-Sanitize jedes `<a>`-Element
auf `target="_blank"` + `rel="noopener noreferrer"` gesetzt. Letzteres