Zum Inhalt springen

Zeiterfassung / Pausenzeit


Holger Sprenz
Gehe zur Lösung Gelöst von Moritz Münzenmaier,

Empfohlene Beiträge

Hallo zusammen,

für eine Zeiterfassung möchte ich eine Pausendauer definieren.

Der Nutzen gibt also Pausenbeginn und Pausenende per Bausteine "Datums- und Zeitauswahl", dann wird die Pausendauer mit dem Baustein "Zeitraumergebnis" berechnet:

SUB_DATE({DateTime_13},{DateTime_12})

Danach erfolgt noch eine Ausgabe im "Baustein Zahlenergebnis"

TOTALHOURS({ResultPeriod})

um Einträge per REST-API in Excel abzurufen und berechnen zu können.

Nun suche ich nach einer Möglichkeit, sobald der Nutzer eine Pausenzeit unter 30 Minuten eingibt, eine Korrektur der Pausenzeiten für den Nutzer in der smap zu erzwingen.

Bisher lasse ich einfach nur ein Texfeld mit einem entsprechenden Hinweis einblenden, was aber natürlich dann eine freiwillgige Korrektur der Pausenzeiten durch den Nutzer voraussetzt.

Kommt allo gut ins neue Jahr!!!!

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Holger Sprenz ich sehe hier zwei Varianten, eine "harte" und eine "sanfte":

  • Die sanfte hast du bereits skizziert und sieht vor, dass man einfach formelbasiert die Differenz abfragt und bei Unterschreiten des Zielwerts (hier 30 Minuten) wird regelbasiert ein Hinweis eingeblendet, der darauf hinweist, dass dies ungültig sei. Richtig von dir auch schon bemerkt: Dies sieht eine freiwillige Korrektur der Pausenzeiten des Nutzers voraus.
    LESSTHAN({Differenz}, 30)
  • Der harte Weg wäre, das Absenden des Datensatzes zu verhindern, indem man ein Feld mit einem ungültigen Wert versieht, sobald die 30 Minuten unterschritten wurden. Dieser Weg ist hier beschrieben.

    In deinem Fall wäre die Formel dann so etwas wie...

    IF(LESSTHAN(TOTALMINUTES({ResultPeriod}), 30), 0, MUL({hohe_zahl}, {hohe_zahl})

    ... wobei {hohe_zahl} hier entsprechend vorbereitet wurde wie in dem Artikel beschrieben.

  • Like 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Holger Sprenz: Ich ergänze einfach mal die direkte Umsetzung im Ergebnisfeld als dritte Variante zu den beiden von @Moritz 🙂

IF(LESSTHAN(TOTALHOURS({ResultPeriod}),0.5),0.5,TOTALHOURS({ResultPeriod}))

Damit sagst du dem Ergebnisfeld, dass mindestens 0,5 Stunden errechnet werden sollen, wenn die dokumentierte Pausenzeit weniger als 0,5 ist. Wenn es mehr ist, dann nimmt er direkt die dokumentierte Pausenzeit. 

Gerne wird hier auch noch die 6-Stunden-Regel dazu untergebracht, also mit einer zusätzlichen Bedingung ermittelt, dass diese Pausenzeitregelung nur angewendet werden soll, wenn die dokumentierte Arbeitszeit 6 Stunden überschreitet (da eben dann eine halbe Stunde minimale Pause vorausgesetzt ist). 

Falls daran Bedarf ist, dann gerne einfach nochmal eine kurze Info geben. 

Bearbeitet von Moritz Münzenmaier
  • Like 1
  • Danke 2
Link zu diesem Kommentar
Auf anderen Seiten teilen

Sehr coole Lösungen!
@Moritz Münzenmaier Bei deiner Variante wird als der Wert des Ergebnisfelds durch die Berechnung direkt auf den gewünschten Minimal-Wert korrigiert. Sehr clever!

@Holger Sprenz: Kannst du mit dem Vorschlag deine smap so erweitern, dass dein Problem gelöst ist? Sonst frag hier gerne nochmal nach.

  • Like 2
  • Danke 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Zusammen,

vielen Dank für die Lösungen @Moritz und @Moritz Münzenmaier 😁.

Derzeitig habe ich die 6-Stunden-Regel etwas umständlich gelöst.

Die Arbeitszeitgerechnung ist in einer Wiederholungsgruppe (für mehrere Mitarbeiter - Datensatzauswahl).

In der Wiederholungsgruppe habe ich nun eine weitere Gruppe erstellt, nur für die Pausenzeitberechnung. Diese Gruppe hat einen Aktivierungsregel und wird nur angezeigt, wenn die Arbeitszeit größer als 6 Stunden ist

Das funktioniert zwar, nur.... beim Aufschpalten der Daten (REST-API und Excel) wird diese Gruppe für die Pausenzeitberechnung nicht angezeigt. Kann das daran liegen, dass sich diese Gruppe in einer Wiederholungsgruppe befindet?

Ich ahne schon, da gibt es wohl elegantere Lösungen @Moritz Münzenmaier , also her damit 😇

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Lösung

@Holger Sprenz

Da verstecken sich ja sozusagen zwei Fragen 🙂

1. Die angepasste Formel: Nehmen wir an die Startzeit der Arbeit ist {DateTime_10} und der Endzeitpunkt ist {DateTime_11} 

Dann ist die Erweiterung der oben stehenden Formel:

ROUND(IF(AND(GREATERTHANOREQUAL(TOTALHOURS(SUB_DATE({DateTime_11},{DateTime_10})),6),LESSTHAN(TOTALHOURS({ResultPeriod}),0.5)),0.5,TOTALHOURS({ResultPeriod})),2)

Damit findet die Rundung erst statt, wenn die Differenz der Arbeitszeiterfassung in Stunden >= 6 ist UND weniger als 0,5 Stunden Pause erfasst wurden. Wenn eine der beiden Bedingungen nicht erfüllt wurde, entfällt das Aufrunden. Damit sparst du dir die Extra-Felder und hast in der Powerquery immer ein Feld, dass den richtigen Pausenwert ausgibt. Im Prinzip hast du das eigentlich schon mit dem Einblenden der Gruppe gemacht. Habe nur beides verbunden 🙂

2. Die Gruppe wird in der Query vermutlich nicht angezeigt, da sie später hinzugefügt wurde (Schuss ins Blaue). Falls dem so ist, dann ist die Vorgehensweise folgende: Datenbindung in Excel erneut öffnen (per Doppelklick) im Query auf der rechten Seite in die "angewendeten Schritte" zurück auf den Schritt "Erweitere Column1.data" (Doppelklick) -> In diesem Schritt sollte irgendwo ein "mehr laden" stehen. Da drauf klicken, kurz warten, und dann sollte die Repeatgroup in der Liste sein. Anklicken und "OK". 

Dann wieder bei den "angewendeten Schritten" in den letzten Schritt springen, die Repeatgroup in der Tabelle suchen und auf den kleinen Doppelpfeil neben dem Spaltennamen klicken. Dort dann "auf neue Zeilen erweitern", dadurch wird eine Zeile pro Wiederholungsgruppeneintrag generiert. Dann erneut auf den Doppelpfeil klicken und dann solltest du die Felder der Wiederholungsgruppe auch auswählen können. 

 

  • Danke 3
Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte melde Dich an, um einen Kommentar zu hinterlassen

Du kannst nach der Anmeldung einen Kommentar hinterlassen



Jetzt anmelden
×
×
  • Neu erstellen...