Zeitraumermittlung - aufeinanderfolgende Tage gleichen Status zählen
Hallo zusammen, ich könnte mal wieder Hilfe gebrauchen und erstmal einen Denkanstoß wie man das überhaupt lösen könnte
Ich hab eine Tabelle mit Personen, die wiederum in einer Untertabelle Anwesenheiten haben => anwesend, Urlaub/frei, krank
wir haben ein Bonusprogramm, bei 100 Arbeitstagen Anwesenheit in Folge gibts 16h als Überstunden gut geschrieben
Ich hätt am Ende gern ein Diagramm, in dem ich die Mitarbeiter eines Teams alle aufgeführt bekomme und zu jedem individuell wann er seine 100 Tage voll hat. Wenn er nach den 100 Tagen weiterhin anwesend ist, beginnt nach Tag 100 die Ganze Rechnung von neuem. Wochenenden müssen ausgeschlossen werden.
Sobald ein Krank Tag dazwischen fällt, beginnt die Rechnung ab dem ersten wieder anwesend Tag wieder neu.
Optisch hätt ich mir für das Diagramm gestapelte Balken vorgestellt, 100 als Oberstes und dann von unten wachsend die Anwesend-Tage, wenn der Balken fast voll ist zur 100 weiß man ja das innerhalb der nächsten Tage der Mitarbeiter die Prämie wieder erhält.
Geht sowas?
2 Antworten
-
Das sagen meine schlauen Quellen dazu:
Nehmen wir an, du hast eine Untertabelle namens Anwesenheiten, die folgende Felder enthält:
• Datum: Datum der Anwesenheit
• Status: Text (Anwesend, Urlaub/frei, Krank)2. Berechnung der Anwesenheitstage (ohne Wochenenden und Krank)
Zunächst benötigen wir eine Berechnung der fortlaufenden Anwesenheitstage. Wir gehen davon aus, dass Krank- oder Urlaubstage den Zähler auf 0 zurücksetzen.
Hier ist der Code, der das erledigt:
Berechnung der Anwesenheitstage
In der Tabelle Personen fügen wir eine Formel hinzu, die die aufeinanderfolgenden Anwesenheitstage für jede Person zählt.
let anwesenheiten := this.(Anwesenheiten);
let anwesenheitStage := 0;
let aktuelleSerie := 0;
let maximumTage := 100;// Anwesenheiten sortieren und durchgehen
anwesenheiten := anwesenheiten[Status = "Anwesend" and weekday(Datum) > 0 and weekday(Datum) < 6 order by Datum asc];// Schleife über Anwesenheiten
for a in anwesenheiten do
if a.Status = "Krank" then
aktuelleSerie := 0; // Bei Krankheit Zähler zurücksetzen
else
aktuelleSerie := aktuelleSerie + 1;
if aktuelleSerie = maximumTage then
anwesenheitStage := anwesenheitStage + 1;
aktuelleSerie := 0; // Serie erneut beginnen
end
end
end;return aktuelleSerie; // Anzahl der aktuellen fortlaufenden Anwesenheitstage
Diagramm für Anwesenheitserfassung
Um den Fortschritt in Form eines gestapelten Balkendiagramms zu visualisieren, kannst du in Ninox ein Diagramm hinzufügen. Zuerst definieren wir eine Formel zur Berechnung der 100-Tages-Intervalle.
let bonusFortschritt := (aktuelleSerie / maximumTage) * 100; // Prozentwert für das Diagramm
return bonusFortschritt;
3. Erstellen des Diagramms
Du kannst dann ein gestapeltes Balkendiagramm für jede Person erstellen, das den Fortschritt bis zur nächsten Prämie zeigt.
1. Erstelle ein Diagramm-Widget in Ninox.
2. Verwende die Berechnung des bonusFortschritt als Grundlage für den Fortschritt bis zu den 100 Tagen.Im Diagramm stellst du die gestapelten Balken als Teil des Fortschritts dar. Der erste Balken zeigt den Fortschritt bis zur 100-Tage-Marke. Wenn er voll ist, wird der Zähler zurückgesetzt und ein neuer Balken beginnt zu wachsen.
Gruß
Content aside
- Status Answered
- vor 2 MonatenZuletzt aktiv
- 2Antworten
- 31Ansichten
-
2
Folge bereits