Vertrag kopieren: Portal-Zugangsdaten mitkopieren
Auf Wunsch: Portal-Benutzername + Stressfrei-Verknuepfung/'nicht benoetigt'-Flag werden im Kopier-Modus behalten (bei gleichem Anbieter oft identisch). Nur das Passwort bleibt leer, weil es verschluesselt gespeichert und - wie beim Bearbeiten - nicht im Klartext ins Feld geladen wird. Banner-Hinweis ergaenzt. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+7
-4
@@ -106,10 +106,13 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
Preis, Laufzeit, Kunden-/Vertragsnummer, Anbieter/Tarif ändern sich.
|
||||
- Geleert im Kopier-Modus (Integrität / Eindeutigkeit): Status→DRAFT,
|
||||
Vorgänger-Link, alle Datumsfelder (Start/Ende/Installation/Kündigungs-
|
||||
bestätigung), Kunden-/Vertragsnummer beim Anbieter + Plattform-Nummern,
|
||||
Portal-Benutzer/Passwort. **Nicht** übernommen: SIM-Karten & Rufnummern
|
||||
(hardware-/vertragsspezifisch, eindeutige Nummern). Rest (Anbieter/Tarif,
|
||||
Preise, alle Detailfelder, Notizen) bleibt als Vorlage.
|
||||
bestätigung), Kunden-/Vertragsnummer beim Anbieter + Plattform-Nummern.
|
||||
**Nicht** übernommen: SIM-Karten & Rufnummern (hardware-/vertrags-
|
||||
spezifisch, eindeutige Nummern). **Behalten** wird der Portal-Zugang
|
||||
(Benutzername + Stressfrei-Verknüpfung/„nicht benötigt") – bei gleichem
|
||||
Anbieter oft identisch; nur das verschlüsselte Passwort wird nicht ins
|
||||
Feld geladen (wie beim Bearbeiten). Rest (Anbieter/Tarif, Preise, alle
|
||||
Detailfelder, Notizen) bleibt als Vorlage.
|
||||
- Rein Frontend (`ContractForm` copy-Mode + Button in `ContractDetail`);
|
||||
kein neuer Endpoint – nutzt bestehendes Create. Blauer Hinweis-Banner
|
||||
„Kopie … neuer eigenständiger Vertrag" im Formular.
|
||||
|
||||
@@ -423,8 +423,10 @@ export default function ContractForm() {
|
||||
orderNumberAtSalesPlatform: '',
|
||||
customerNumberAtSalesPlatform: '',
|
||||
contractNumberAtSalesPlatform: '',
|
||||
// Portal-Zugang gehört zum konkreten Vertrag → frisch
|
||||
portalUsername: '',
|
||||
// Portal-Zugangsdaten (Benutzername/Stressfrei-Verknüpfung) bewusst
|
||||
// BEHALTEN – bei gleichem Anbieter oft identisch. Das Passwort liegt
|
||||
// verschlüsselt vor und wird (wie beim Bearbeiten) nicht ins Feld
|
||||
// geladen; es bleibt leer und kann bei Bedarf neu gesetzt werden.
|
||||
});
|
||||
}
|
||||
|
||||
@@ -495,11 +497,9 @@ export default function ContractForm() {
|
||||
// Portal-Benutzername-Typ initialisieren.
|
||||
// Opt-out („nicht benötigt") gewinnt vor Stressfrei/Manual, damit ein
|
||||
// versehentlich noch alter portalUsername den Radio-Zustand nicht
|
||||
// überstimmt. Im Kopier-Modus immer frisch (manuell, leer).
|
||||
if (isCopy) {
|
||||
setUsernameType('manual');
|
||||
setSelectedStressfreiEmailId('');
|
||||
} else if (c.portalCredentialsNotRequired) {
|
||||
// überstimmt. Gilt auch im Kopier-Modus: Portal-Zugangsdaten werden
|
||||
// mitkopiert (nur das Passwort bleibt leer, s.o.).
|
||||
if (c.portalCredentialsNotRequired) {
|
||||
setUsernameType('not_required');
|
||||
setSelectedStressfreiEmailId('');
|
||||
} else if (c.stressfreiEmailId) {
|
||||
@@ -863,7 +863,8 @@ export default function ContractForm() {
|
||||
<p className="ml-12 mt-1 text-sm text-blue-700 bg-blue-50 border border-blue-200 rounded px-2 py-1 inline-flex items-center gap-1">
|
||||
<Copy className="w-4 h-4" />
|
||||
Kopie eines bestehenden Vertrags – wird als <strong>neuer eigenständiger Vertrag</strong> gespeichert.
|
||||
Anbieter/Tarif, Preise, Kunden-/Vertragsnummern und Daten bitte prüfen.
|
||||
Anbieter/Tarif, Preise, Kunden-/Vertragsnummern und Daten bitte prüfen. Portal-Benutzername
|
||||
übernommen, Passwort ggf. neu setzen.
|
||||
</p>
|
||||
)}
|
||||
{customer && (
|
||||
|
||||
Reference in New Issue
Block a user