Die Buchungen eines Tages werden in Scheiben zerschnitten (also Anfang & Ende zusammen gesucht)
Die Scheiben werden mit den Regeln für einen Tag abgeglichen (z.B. Samstag Ü50, vor 06:00 Ü50, Fahrten zw. 07:00 und 15:12 Fahrzeitlohnart, …)
Die Buchungen werden dann entsprechend in den jeweiligen Topf eingekippt, wobei jeder Topf für mehrere verschiedene Lohnarten fassen kann; so z.B.: der Normalarbeitszeittopf auch mit Urlaubsbuchungen und Fahrten befüllt wird.
Topf
Hat einen Zeitraum, so gibt es Tagestöpfe, Wochentöpfe, Monatstöpfe und Jahrestöpfe
Eine oder mehrere Lohnarten die er aufnimmt
Faktor: im Verhältnis z.B.: zur Normalarbeitszeit um etwaige Zuschläge/Abschläge errechnen zu können; Ü50-Topf = 150; ZA15-Topf = 115
Optional: max. Füllmenge, z.B. Normalarbeitszeittopf-Tag = 7.7h, NAZ-Woche = 38.5h, MAZ-Tag = 1.3h, MAZ-Woche = 1.5h max.
Optional: min. Füllmenge, z.B. Normalarbeitszeittopf-Woche = 38.5h
Wenn ein Topf seine Max.Grenze erreicht läuft er nach rechts über.
Jeder Topf „X“ der am Ende seiner Periode die Mindestfüllmenge nicht erreicht hat wird wie folgt gefüllt:
Der Algorithmus geht nach rechts (vom Topf „X“ aus) bis der Faktor steigt; bsp. von NAZ aus gehen wir über MAZ zu ZA0, dahinter wäre der Faktor > 100%
Dann wird aus dem Topf so viel wie möglich/erforderlich entnommen – in diesem Bsp. aus ZA0
Fehlt nach Schritt (a+b) noch etwas, wird auf den nächsten Topf mit dem gleichen Faktor entnommen – in diesem Bsp. aus MAZ
Fehlt nach Schritt ( c) noch etwas wird wieder bei Schritt (a) begonnen mit dem nächst höheren Faktor
Bsp. Töpfe in Reihenfolge:
FZ außerhalb NAZ (1) NAZ (2) MAZ (3) ZA0 (4) ZA15 (5) ZA20 (6) Ü50 (7) Ü100
Mögliche Parameter für die “fillingPatterns”
Boolean skip
auf dieser Ebene (z.B. Woche) wird dieser Topf nicht benötigt; alle Stunden gehen direkt weiter in den darunterliegenden Topf
String balance: Mit dieser Funktion kann
daily
oderweekly
ein Abgleich gemacht werden, ob der Topf im Minus ist und ggf. in den anderen Töpfen schauen ob er sich Stunden holen kann, damit ein Minus ausgeglichen werden kann.Boolean blockWithdraw
wenn einem anderen Topf Stunden fehlen (durch
minValue
oder weil der Topf im Minus ist undbalance
für den Topf aktiviert wurde), dann werden Stunden aus den benachbarten Töpfen gesammelt; ein Topf mitblockWithdraw = true
wird dabei aber ignoriert;
Ausnahme: wenn bei dem Topf, dem Stunden fehlen einewithdrawOrder
angegeben wurde, dann werden (soweit vorhanden) auch Stunden aus einem Topf mitblockWithdraw
gezogen.
Boolean blockSpillover
Boolean leftWithdraw: Wenn ein Topf aufgefüllt werden muss, dann bedient er sich als ersten von dem Topf links daneben und erst dann, falls noch was fehlt, in der gewohnten Reihenfolge.
Lohnarten-Liste:
withdrawOrder
,gibt die Reihenfolge der Töpfe zurück aus denen etwaige Fehlbeträge genommen werden können; sollte der Fehlbetrag aus den angegebenen Töpfen nicht bedient werden können, dann wird in standard-Reihenfolge weiter eingezogen. Bsp.: <withdrawOrder
>120,130,400</withdrawOrder
>wird bei der
withdrawOrder
ein Topf referenziert bei demblockWithdraw = true
hinterlegt ist, so wird dasblockWithdraw
zugunsten derwithdrawOrder
ignoriert
Lohnarten-Liste:
withdrawOrderLimited
,gibt die Reihenfolge der Töpfe zurück aus denen etwaige Fehlbeträge genommen werden können; sollte der Fehlbetrag aus den angegebenen Töpfen nicht bedient werden können, dann wird abgebrochen. Bsp.: <withdrawOrderLimited
>120,130,400</withdrawOrderLimited
>Boolean forcePrimaryWagetype
BigDecimal minValueOffset
BigDecimal maxValueOffset
BigDecimal minValueAzmFactor
BigDecimal maxValueAzmFactor
BigDecimal maxValuePPeriodOffset
BigDecimal maxValuePPeriodAzmFactor
Mögliche Parameter auf “potMatrix” Ebene
Folgende Parameter können über dem <model> -Tag angegeben werden. Die Reihenfolge spielt keine Rolle.
enable75Rule
ab der 3. täglichen Überstunde (auch Mehrstunde) werden 75% (vor 19 Uhr) / 100% (nach 19 Uhr) Zulagen ausgelöst
dabei werden die Stunden, die an diesem Tag angesammelt wurden und einen Faktor <=150 haben aufsummiert; davon wir die Sollarbeitszeit abgezogen; die ersten beiden Stunden die übrig bleiben werden nicht verändert;
alles >2h wird auf 75% bzw. 100% umgebucht
die alten Buchungen bleiben bestehen um den Vorgang nachvollziehen zu können
Erforderlich:
zumindest ein Topf mit Ü75 (wird anhand des Faktors = 175 identifiziert) sowie
ein Topf mit Ü100 (Faktor = 200).
Beispiel:
adjustEndTimes
Wird dieser Parameter angegeben:
<adjustEndTimes>true</adjustEndTimes>
dann werden die BIS -Zeiten der einzelnen Lohnbuchungen dem Buchungswert angepasst;
Bsp.:
es wurde eine Arbeit von 13 bis 17 Uhr gebucht
ab 16 Uhr ist der Normalarbeitszeittopf (NAZ) gefüllt und läuft in den Mehrarbeitszeittopf (MAZ) über
Ohne
adjustEndTimes
wird einen Lohnbuchung mit13 bis 17 Uhr im Wert von 3h auf NAZ und eine
16 bis 17 Uhr im Wert von 1h auf MAZ geschrieben; es wird also immer für die NAZ die gesamte Zeitspanne angedruckt; das kann für einzelne Anwendungen und Auswertungen erforderlich sein.
Mit
adjustEndTimes
werden die Zeiten ohne Überlappungen erzeugt13 bis 16 NAZ
16 bis 17 MAZ
Wichtig: um auch die Aktiv-Zeiten entsprechend anzupassen ist zusätzlich die Mandanteneinstellung
WAGEBOOKINGS_SPLIT_ADJUST_ACTIVE_TIMES
auftrue
zu setzten
manualBookingsSentToPotMatrix
Standard = false (=NEIN)
Der Parameter bestimmt, ob manuelle Lohnbuchungen (bspw. vom Monteur am Mobile-App oder im Büro über die Korrektur-Maske eingetragen) für Überstunden (Topf-Logik) und Zulagenberechnung herangezogen werden sollen.
Ist dieser Parameter auf “true” gestellt:
erlaubt es z.B. manuelle Zusatzstunden für Entfzl. und die ZA Berechnung zu berücksichtigen
muss vorweg für alle potentiell manuell gebuchten Stunden geprüft werden ob sich auch tatsächlich für Zulagen und Überstunden herangezogen werden sollen!