Files
Holzleitner---Backend--aktu…/migrations/0034_address_addition.sql
Dennis Nemec c9d0ccfdef fix(sync): Lieferadresse nicht mehr feldweise mischen, Adresszusatz statt Land
- Sync nimmt die Lieferadresse als Ganzes: mit eigener LieferAdressId
  alle Felder aus ihr, sonst alle aus der Belegadresse. Das bisherige
  COALESCE je Feld hat leere Felder mit Werten des Bestellers gefüllt
  (z. B. dessen Ortsteil an eine fremde Anschrift gehängt).
- ERP-Freitext `Adressen.Land` (praktisch Ortsteil/Etage/Hinweis) wird
  zum Adresszusatz `Address.addition`; `country` kommt jetzt aus dem
  Länderstamm (`LandID` → `Laender.Land`). Deutschland-Kürzel und reine
  Landnamen sind kein Zusatz.
- Migration 0034: `customers.address_addition`, `deliveries.snap_addition`;
  Bestandstext aus `country` wandert in den Zusatz.
- Lieferbericht und Beleg-Ansicht: Land nur außerhalb Deutschlands,
  Zusatz als eigene Zeile „Zusatz: …".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:13:13 +02:00

33 lines
1.3 KiB
SQL

-- Adresszusatz getrennt vom Land.
--
-- Das ERP-Textfeld `Adressen.Land` wird von der Sachbearbeitung praktisch
-- nie für das Land genutzt, sondern für Ortsteil, Etage oder Hinweise
-- („Holzheim", „3 Etage", „Parterre"). Bisher landete es in `country` und
-- erschien im Lieferbericht als vermeintliches Land. Ab jetzt:
-- * `*_addition` = dieser freie Zusatz,
-- * `country` = echtes Land aus dem ERP-Länderstamm (`LandID`).
--
-- Bestandsdaten: der bisherige `country`-Text war immer dieses Freitextfeld
-- → in den Zusatz verschieben. Reine Deutschland-Kürzel („D", „DEU", …)
-- sind kein Zusatz und werden verworfen. Der nächste Sync setzt `country`
-- wieder korrekt aus dem Länderstamm.
ALTER TABLE customers ADD COLUMN address_addition TEXT;
ALTER TABLE deliveries ADD COLUMN snap_addition TEXT;
UPDATE customers
SET address_addition = CASE
WHEN lower(btrim(country)) IN ('', 'd', 'de', 'deu', 'deutschland', 'germany', 'brd')
THEN NULL
ELSE btrim(country)
END,
country = '';
UPDATE deliveries
SET snap_addition = CASE
WHEN lower(btrim(snap_country)) IN ('', 'd', 'de', 'deu', 'deutschland', 'germany', 'brd')
THEN NULL
ELSE btrim(snap_country)
END,
snap_country = '';