Anpassung der Versandart für Rechnungen auf ZUGFeRD

SQL Script für die Migration von bestehenden Kontakt.Mailadressen in die E-Rechnung-Versandadresse wenn diese nicht gefüllt ist. Zusätzlich Umstellung auf das Sendeformat ZUGFeRD.

— Deklarieren der Variablen für die Rechnungsversandart
–Rechnungsversandarten:
–10: Druckausgabe auf Papier
–20: als PDF/A per E-Mail
–21: ZUGFeRD per E-Mail
–22: xRechnung per E-Mail
–23: Peppol BIS Billing per E-Mail
–24: Peppol Österreich per E-Mail
–25: Peppol Luxemburg per E-Mail

DECLARE @RechnungsVersandart INT;
SET @RechnungsVersandart = 21;

— Erstellen einer CTE (Common Table Expression) namens RankedEmails
WITH RankedEmails AS (
— Auswahl der Adressnummer (AdrNrGes) und des Kontakts
SELECT
AdrNrGes,
Kontakt,
— Zuweisung einer fortlaufenden Nummer (ROW_NUMBER) für jede E-Mail innerhalb jeder Adressnummer
ROW_NUMBER() OVER (PARTITION BY AdrNrGes ORDER BY Kontakt) AS rn
FROM
adrKontakte
— Filtern der Kontakte, um nur solche mit KontaktArt = 2 (E-Mail) und nicht null zu berücksichtigen
WHERE KontaktArt = 2 AND Kontakt IS NOT NULL
)
— Aktualisieren der Tabelle adrAdressen
UPDATE adrAdressen
— Setzen der RechnungsVersandart auf den Wert der Variablen und der RechnungsMail auf den Kontakt aus RankedEmails
SET RechnungsVersandart = @RechnungsVersandart,
RechnungsMail = RankedEmails.Kontakt
— Verbinden der CTE RankedEmails mit der Tabelle adrAdressen basierend auf der Adressnummer
FROM
RankedEmails
JOIN adrAdressen ON RankedEmails.AdrNrGes = adrAdressen.AdrNrGes
— Filtern der Ergebnisse, um nur die erste E-Mail-Adresse (rn = 1) für jede Adresse zu berücksichtigen
— und nur Adressen mit AdressArt = 0 (Kunde) und RechnungsVersandart = 0 (noch nicht festgelegt) zu aktualisieren
WHERE
rn = 1
AND AdressArt = 0
AND RechnungsVersandart = 0;