Zähler → Lieferadresse-Pflichtfeld + Vertragsfilter

- Meter.addressId (FK → Address, ON DELETE SET NULL) + Migration
  20260530100000_meter_address mit IF NOT EXISTS
- Service erzwingt beim Create: Lieferadresse vorhanden + zum
  Kunden gehörig + Typ DELIVERY_RESIDENCE
- MeterModal: Pflicht-Dropdown "Lieferadresse"; Save disabled
  ohne Adresse; Hinweis-Banner. Bestandszähler ohne Adresse zeigen
  "nicht zugeordnet – bitte über Bearbeiten nachpflegen"
- ContractForm: Zähler-Dropdown filtert auf Vertrags-Lieferadresse;
  deaktivierte Zähler bleiben sichtbar mit "(deaktiviert)"; bei
  Auswahl Toast-Warnung wegen möglichem Altvertrag

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-30 13:18:24 +02:00
parent d92d0b1eaf
commit c099b41796
8 changed files with 231 additions and 17 deletions
+23
View File
@@ -97,6 +97,29 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **🆕 Zähler → Lieferadresse-Pflichtfeld + Vertragsfilter**
- **Backend**: Neues Feld `Meter.addressId` (optional FK auf
`Address`, `ON DELETE SET NULL`). Migration
`20260530100000_meter_address` mit `IF NOT EXISTS`. Service
erzwingt beim Create: Lieferadresse muss vorhanden, zum Kunden
gehören und Typ `DELIVERY_RESIDENCE` haben.
- **MeterModal** (Kundenakte → Zähler): Pflicht-Dropdown
"Lieferadresse" über allen Feldern. Button "Zähler hinzufügen"
ist disabled, wenn keine Lieferadresse existiert mit gelbem
Hinweis-Banner. Bestandszähler ohne Adresse zeigen im
MetersTab "Lieferadresse: nicht zugeordnet bitte über
Bearbeiten nachpflegen" in gelb.
- **ContractForm** (Strom/Gas): Zähler-Dropdown filtert jetzt
auf die im Vertrag gewählte Lieferadresse. Deaktivierte
Zähler bleiben sichtbar (Label-Suffix `(deaktiviert)`); wenn
sie ausgewählt werden, kommt ein Toast: *„Deaktivierter
Zähler ausgewählt. Ist das gewollt? Handelt es sich um einen
Altvertrag?"*. Platzhalter wechselt zwischen "Erst
Lieferadresse wählen…" / "Kein Zähler für diese Adresse
vorhanden" / "Zähler wählen…".
- Audit-Log loggt Adress-Änderung am Zähler als Feld
"Lieferadresse".
- [x] **🆕 Backup-Operations-Log + EBUSY-Fix beim Restore**
- Zwei neue Log-Panels auf der DB-Backup-Seite: links
"Backup-Erstellung", rechts "Backup-Wiederherstellung". Jeder