CX_HOLIDAY
Klassenhierarchie
- CX_CLASS
- CX_HOLIDAY
Beschreibung:
Objekte dieser Klasse dienen als Einträge in Objekten der Klasse CX_HOLIDAYS (die wiederum als Hilfsobjekt für Objekte der Klassen CX_LOCALE dient) und bilden Regeln ab, um Feiertage, Ferien, Betriebsferien, usw. abbzubilden.
Feiertage können für jedes Locale definiert werden. Auch hier gilt, dass die Definitionen kaskadiert angewendet werden: Ein Locale erbt die Definition des übergeordneten Locales.
Eigene CX_HOLIDAY-Objekt können diese Definition erweitern oder auch einschränken: Z.B: weitere Feiertage hinzufügen, eine übergeordnete Feiertags-Definition aufheben, einen Feiertag als Arbeitstag deklarieren.
Beispiel:
Die definierten Feiertage einer übergeordneten Region (Land) werden zuerst erweitert durch Definitionen einer untergeordneten (Bundesland).
Z.B. sind bei der Einstellung "Baden-Württemberg" sowohl nationale ("Tag der deutschen Einheit") wie auch regionale ("Fronleichnam") Feiertage gültig.
Aber es ist auch möglich, für eine untergeordnete Region einen Feiertag wieder aufzuheben. Außerdem kann ein Feiertag als Arbeitstag deklariert werden.
In der Beispiel-Region ist jetzt Fronleichnam kein Feiertag mehr, und am Tag der Deutschen Einheit (bleibt ein Feiertag) wird gearbeitet.
Die Feiertagsdefinition erfolgt in der Locales-Datei locales.xml.
Code-Beispiel:
Funktion | MA* | Parameter | Rückgabe | Kurzbeschreibung |
---|---|---|---|---|
FormulaMA | * | |||
GetDate | OBJECT | |||
TermEnumMA | * |
* MA = Member-Access-Funktion,
grau unterlegt = geerbte Funktion
Datenfeld | Typ | Referenz-Klasse | I* | Kurzbeschreibung | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
termEnum | ENUMSHORT |
Der Typ des Feiertags kann eine oder mehrere der folgenden Bezeichner annehmen, wobei die Einträge durch ein "+" verkettet werden.
Vergleiche die Bezeichner mit den Datumstyp-Konstanten. Mit jeder dieser Definitionen hier werden also auch indirekt alle Funktionen beeinflusst, die auf Basis der Arbeitstage arbeiten, z.B. IsWorkingday. |
||||||||||||||
name | MULTIPLE_STRING | In dem Feld Text wird die Bezeichnung des Feiertages als multipler String angegeben | ||||||||||||||
formula | STRING |
Mit der Formel wird der Tag selbst definiert, d.h. sie beschreibt, wann dieser Feiertag stattfindet. Sie wird auf einem Objekt vom Typ CX_DATE ausgewertet, das dem 1. Januar des Jahres entspricht, auf das sich der Feiertag beziehen soll. Soll bspw. der Feiertag im Jahr 2017 berechnet werden, wird die Formel auf CX_DATE(1, 1, 2017) ausgewertet. Bei der Berechnung ist es zunächst notwendig einen Ausgangstag festzulegen. Hierfür stehen folgende Funktionen zur Verfügung:
Der Aufbau und weitere Erklärungen zu einer Formel sind der Dokumentation der Formel-Klasse zu entnehmen. Das so angegebene Ausgangsdatum kann nun mit jeder Funktion, die auf ein Datum anwendbar ist und als Ergebnis ein neues Datum liefert, manipuliert werden. Vorzugsweise werden dieses die Funktionen Next und Previous, sowie die Operatoren + und - zum Addieren bzw. Subtrahieren einer bestimmten Anzahl von Tagen, sein. Achtung! Im folgenden soll eine Beispiel-Formel aufgeführt werden, die den "1. Advent" spezifiziert. Dieser Tag ist definiert als der vierte Sonntag vor dem ersten Weihnachtstag. D.h. ausgehend vom ersten Weihnachtstag wird zunächst der vorhergehende Sonntag gesucht und dann werden drei Wochen von diesem Tag abgezogen. Die zugehörige Formel sieht dann wie folgt aus:
Da es sich hierbei um vollständige Formeln handelt, können auch komplexere Ausdrücke angegeben werden:
|
||||||||||||||
evaluatable | CHAR |
Mit dem Bereich wird die Gültigkeit eines Feiertags für Funktionen wie NameOfDay bestimmt. Dabei existieren die Fälle "LIMITED" und "ALL". "LIMITED" wird immer dann angegeben, wenn der beschriebene Feiertag nicht in jedem Jahr an demselben Datum stattfindet. Dieses gilt z.B. für die Osterfeiertage. Dementsprechend werden Tage, die jedes Jahr an dem gleichen Tag stattfinden, wie z.B. Weihnachten, mit "ALL" gekennzeichnet. Diese Kennzeichnung hat nur Auswirkung bei Verwendung von unvollständigen Daten, wie z.B. "25. Dezember", beim Aufruf von Funktionen, die sich auf Feiertage beziehen. Diese Funktionen untersuchen dann nur die Feiertagsdefinitionen, die mit "ALL" gekennzeichnet sind. |
||||||||||||||
owner | REL_1M | CX_LOCALE |
* I = Indizierbares Datenfeld,
grau unterlegt = geerbtes Datenfeld
Modul | Kurzbeschreibung |
---|---|