Vertragsansicht: Kunden-Schnellansicht-Modal + Cent/Euro-Input

Feature 1 – Kunden-Schnellansicht:
Info-Icon neben dem Kundenlink im Vertragsdetail oeffnet ein Modal
mit den wichtigsten Kundendaten (Firma, Name, Geburtsdatum/-ort,
Gruendungsdatum, Adresse, Telefon, Mobil, E-Mail, Portal-E-Mail,
Steuer-/Handelsregisternr). Jedes Feld hat einen Copy-Button.
Lazy-Fetch via customerApi.getById, staleTime 30s.

Feature 2 – Cent/Euro-Doppel-Input:
Neben dem €/kWh-Arbeitspreis-Feld jetzt ein zweites ct/kWh-Feld.
Bidirektional gekoppelt – Tippen in € aktualisiert ct (×100),
Tippen in ct aktualisiert € (÷100). Backend speichert weiterhin
nur den Euro-Wert; Cent ist reine UI-Hilfe. Float-Rausch-Schutz
verhindert "0.25 → 25.0000000000004". Greift fuer unitPrice und
unitPriceNt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-24 14:41:37 +02:00
parent 20d42c5270
commit 771f46d2ac
4 changed files with 245 additions and 9 deletions
+16
View File
@@ -120,6 +120,22 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
- **Live-verifiziert**: 4867 Datensätze + 1 Datei in 13.2s
wiederhergestellt, Log-Modal zeigt den vollständigen Verlauf.
- [x] **🆕 Vertragsansicht: Kunden-Schnellansicht-Modal + Cent/Euro-Doppel-Input**
- **Info-Icon neben Kundennamen** öffnet ein Modal mit den
wichtigsten Kundendaten (Firma, Name, Geburtsdatum/-ort,
Gründungsdatum, primäre Adresse, Telefon, Mobil, E-Mail,
Portal-E-Mail, Steuer-/Handelsregister-Nr.). Jedes Feld hat
einen Copy-Button (bestehende `CopyableValue`-Komponente).
Neue Komponente: `CustomerInfoModal.tsx`. Lazy-Fetch via
`customerApi.getById`, staleTime 30s.
- **Cent/Euro-Doppel-Input** für Arbeitspreise (Strom + Gas):
Neben dem €/kWh-Feld jetzt ein zweites Feld ct/kWh. Bidirektional
verkoppelt Tippen in € aktualisiert ct (×100), Tippen in ct
aktualisiert € (÷100). Im Backend wird unverändert nur der
Euro-Wert persistiert; Cent ist reine UI-Hilfe. Float-Rausch-
Schutz (Math.round × 1e6) verhindert "0.25 → 25.0000000000…".
Greift für `unitPrice` und (bei DUAL-Zählern) `unitPriceNt`.
- [x] **🆕 Bonus-Feld aufgeteilt: Sofort-Bonus + Neukunden-Bonus (Strom/Gas)**
- Bisher gab es ein einzelnes `bonus`-Feld auf `EnergyContractDetails`.
Jetzt zwei Felder `instantBonus` (Sofort) und `newCustomerBonus`