Feiertagsermittlung nach Bundesländern
Ich wollte ein Script für ein FX-Feld zur Verfügung stellen, welches die Feiertage der einzelnen Bundesländer ermittelt. Voraussetzung hierfür ist, dass eine Tabelle mit Mitarbeiterdaten zur Verfügung steht, in der ein Auswahlfeld mit dem Bundesland des Mitarbeiters enthalten ist. Ich habe mich für die Grundstruktur der Ermittlung eines Scriptes aus dem Forum bedient, das aber nun auf alle Bundesländer erweitert. Vielleicht ganz hilfreich für den ein oder anderen:
"Code Feiertage Deutschland";
function ostern(thisDate : date) do
let jahr := year(thisDate);
let a := jahr % 19;
let b := floor(jahr / 100);
let c := jahr % 100;
let d := floor(b / 4);
let e := b % 4;
let f := floor((b + 8) / 25);
let g := floor((b - f + 1) / 3);
let h := (19 * a + b - d - g + 15) % 30;
let i := floor(c / 4);
let k := c % 4;
let l := (32 + 2 * e + 2 * i - h - k) % 7;
let m := floor((a + 11 * h + 22 * l) / 451);
let n := floor((h + l - 7 * m + 114) / 31);
let p := (h + l - 7 * m + 114) % 31;
date(jahr, n, p + 1)
end;
let viewDat := date(year(Datum), month(Datum), day(Datum));
let osterSoDat := format(ostern(viewDat), "DD.MM.");
let osterMoDat := format(ostern(viewDat) + 1, "DD.MM.");
let karfreitagDat := format(ostern(viewDat) - 2, "DD.MM.");
let chrHimmelfDat := format(ostern(viewDat) + 39, "DD.MM.");
let pfingstSoDat := format(ostern(viewDat) + 49, "DD.MM.");
let pfingstMoDat := format(ostern(viewDat) + 50, "DD.MM.");
let fronleichnamDat := format(ostern(viewDat) + 60, "DD.MM.");
let reformationstagDat := "31.10.";
let allerheiligenDat := "01.11.";
"// Bundesweite Feiertage";
let feiertage := "03.10.,25.12.,26.12.,01.01.,01.05.," + osterSoDat + "," + osterMoDat + "," +
karfreitagDat +
"," +
chrHimmelfDat +
"," +
pfingstSoDat +
"," +
pfingstMoDat;
if mitarbeiter().number(Bundesland) = 1 then
"// Feiertagskalender für Hessen";
feiertage := feiertage + "," + fronleichnamDat
else
if mitarbeiter().number(Bundesland) = 3 then
"// Feiertagskalender für Nordrhein-Westfalen";
feiertage := feiertage + "," + fronleichnamDat + "," + allerheiligenDat
else
if mitarbeiter().number(Bundesland) = 2 then
"// Feiertagskalender für Hamburg";
feiertage := feiertage + "," + reformationstagDat
else
if mitarbeiter().number(Bundesland) = 4 then
"// Feiertagskalender für Bayern";
feiertage := feiertage + "," + fronleichnamDat + "," + allerheiligenDat + ",06.01.,15.08."
else
if mitarbeiter().number(Bundesland) = 7 then
"// Feiertagskalender für Baden-Württemberg";
feiertage := feiertage + "," + fronleichnamDat + "," + allerheiligenDat + ",06.01."
else
if mitarbeiter().number(Bundesland) = 6 then
"// Feiertagskalender für Berlin";
feiertage := feiertage + ",08.03."
else
if mitarbeiter().number(Bundesland) = 15 then
"// Feiertagskalender für Brandenburg";
feiertage := feiertage + "," + reformationstagDat
else
if mitarbeiter().number(Bundesland) = 5 then
"// Feiertagskalender für Bremen";
feiertage := feiertage + "," + reformationstagDat
else
if mitarbeiter().number(Bundesland) = 10 then
"// Feiertagskalender für Mecklenburg-Vorpommern";
feiertage := feiertage + "," + reformationstagDat
else
if mitarbeiter().number(Bundesland) = 9 then
"// Feiertagskalender für Niedersachsen";
feiertage := feiertage + "," + reformationstagDat
else
if mitarbeiter().number(Bundesland) = 16 then
"// Feiertagskalender für Rheinland-Pfalz";
feiertage := feiertage + "," + fronleichnamDat + "," + allerheiligenDat
else
if mitarbeiter().number(Bundesland) = 8 then
"// Feiertagskalender für Saarland";
feiertage := feiertage + "," + fronleichnamDat + "," + allerheiligenDat + ",15.08."
else
if mitarbeiter().number(Bundesland) = 11 then
"// Feiertagskalender für Sachsen";
feiertage := feiertage + "," + reformationstagDat + ",22.11."
else
if mitarbeiter().number(Bundesland) = 13 then
"// Feiertagskalender für Sachsen-Anhalt";
feiertage := feiertage + "," + reformationstagDat + ",06.01."
else
if mitarbeiter().number(Bundesland) = 14 then
"// Feiertagskalender für Schleswig-Holstein";
feiertage := feiertage + "," + reformationstagDat
else
if mitarbeiter().number(Bundesland) = 12 then
"// Feiertagskalender für Thüringen";
feiertage := feiertage + "," + reformationstagDat
else
"// Falls das Bundesland nicht definiert ist, keine Feiertage berechnen";
false
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end
end;
let istFeiertag := contains(feiertage, format(Datum, "DD.MM."));
if istFeiertag then
styled(text(istFeiertag), "#fcdad4", "")
else
styled(text(istFeiertag), "white", "")
end
Antwort
Content aside
-
1
„Gefällt mir“ Klicks
- vor 1 MonatTue, February 18, 2025 at 9:39 AM UTCZuletzt aktiv
- 22Ansichten
-
1
Folge bereits