Rechnungsadressen der Bestandskunden aus dem Legacy-Archiv uebernehmen

Befund 06.07.: Der MAN-Rechnungslauf ueberspringt Vereinbarungen ohne
Rechnungsadresse — der Bestandsschutz laeuft dann am Periodenende faktisch
aus. Der Grandfather-Import nahm die Adressen bisher nicht mit, weil die
Altportale sie nur als Freitext-Blob fuehren.

- legacy:import-billing-addresses: uebernimmt Adressen der grandfathered
  Kunden aus der Quell-Rechnung im Archiv (pdf_payload.billing_address),
  nie ueberschreibend, mit Dry-Run und Report der manuell nachzupflegenden
  Faelle (leere/unparsebare Blobs, unbekannte Laender)
- LegacyAddressParser: Best-Effort-Strukturierung der Blobs (mehrzeilig,
  kommasepariert, CH-PLZ-Praefix, Firmen-/Zusatzzeilen); raet nie
- Laenderaufloesung ueber die country-Tabellen der Legacy-Verbindungen
- config/countries.php: CY ergaenzt (reale Bestandskunden aus Zypern)
- WS-7- und QA-Checkliste: Import-Schritt nach dem Grandfathering

Lokal: 11 von 21 Bestandskunden importiert, 9 im Report (7 leere Blobs);
MAN-Lauf rechnet zuvor blockierte Vereinbarungen jetzt ab.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-06 12:19:50 +00:00
parent 52006862a3
commit 5d199f0130
7 changed files with 538 additions and 0 deletions

View file

@ -123,6 +123,13 @@ php artisan billing:sync-stripe-plans
php artisan legacy:grandfather-subscriptions --dry-run
php artisan legacy:grandfather-subscriptions
# Rechnungsadressen der Bestandskunden aus dem Archiv übernehmen (Befund
# 06.07.: ohne Adresse überspringt der MAN-Rechnungslauf die Vereinbarung und
# der Bestandsschutz läuft am Periodenende aus). Läuft NACH dem Grandfathering.
# Der Report listet manuell nachzupflegende Kunden (leere/unparsebare Alt-Adressen).
php artisan legacy:import-billing-addresses --dry-run
php artisan legacy:import-billing-addresses
# Favicons für alle Domains generieren
php artisan domains:generate-favicons