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>
This commit is contained in:
32
migrations/0034_address_addition.sql
Normal file
32
migrations/0034_address_addition.sql
Normal file
@ -0,0 +1,32 @@
|
||||
-- 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 = '';
|
||||
Reference in New Issue
Block a user