- Beiträge: 11
Addition Stempelzeiten
- Michael
- Autor
- Offline
- Benutzer
Weniger
Mehr
4 Jahre 1 Monat her #4002
von Michael
Addition Stempelzeiten wurde erstellt von Michael
Hallo Herr Stark,
aus einer Zeiterfassung bekommen wir täglich eine Exportdatei (txt) mit den aktuellen Stempelzeiten. Diese werden mit dem Flowheater in eine Datenbank geschrieben (ERP). Wenn nun aber ein Mitarbeiter tagsüber ausstempelt oder längere Pause macht, dann haben wir in der Datei mehrere Kommen/gehen Stempelungen an einem Tag. Das wird im ERP schnell unübersichtlich. Ich habe nun mit einem Heater die Summen addiert. Das passt auch. Aber wie kann ich bei mehreren Einträgen nur die erste Kommen-Stempelung und die letzte Geht-Stempelung filtern. Die Kommen/Gehen Einträge dazwischen sollen ignioriert werden, die Summe der Stunden wird addiert. So wäre im ERP nur noch eine Zeile zu sehen, die Differenz zwischen der addierten Summe und der Summe zwischen Kommen und Gehen wäre dann Pause (oder eben unbezahlte Zeit).
Gruß Michael
aus einer Zeiterfassung bekommen wir täglich eine Exportdatei (txt) mit den aktuellen Stempelzeiten. Diese werden mit dem Flowheater in eine Datenbank geschrieben (ERP). Wenn nun aber ein Mitarbeiter tagsüber ausstempelt oder längere Pause macht, dann haben wir in der Datei mehrere Kommen/gehen Stempelungen an einem Tag. Das wird im ERP schnell unübersichtlich. Ich habe nun mit einem Heater die Summen addiert. Das passt auch. Aber wie kann ich bei mehreren Einträgen nur die erste Kommen-Stempelung und die letzte Geht-Stempelung filtern. Die Kommen/Gehen Einträge dazwischen sollen ignioriert werden, die Summe der Stunden wird addiert. So wäre im ERP nur noch eine Zeile zu sehen, die Differenz zwischen der addierten Summe und der Summe zwischen Kommen und Gehen wäre dann Pause (oder eben unbezahlte Zeit).
Gruß Michael
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
4 Jahre 1 Monat her #4004
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Addition Stempelzeiten
Hallo Michael,
das ist nicht ganz so einfach, geht aber. Das Problem ist, dass der FlowHeater Satzweise arbeitet und bei der Verarbeitung eines Satzes nicht weiß ob zu der Gruppierung noch was kommt.
Der Erste Datensatz einer Gruppierung kann über den AutoID Heater problemlos ermittelt werden, damit lässt sich was basteln. Das Vorgehen ist folgendes. Einlesen der Textdatei mit dem TextFile Adapter in eine ImMemory Adapter Tabelle. Hier wird die ursprüngliche Reihenfolge der Textdatei per AutoID Heater festgehalten. Diese ID (Reihenfolge) verwenden wir im zweiten Verarbeitungsschritt um die Datensätze zu aktualisieren. Per weiteren AutoID Heater mit aktivierter Option „Gleiche Eingangsparameter“ zu zählen wird ein Feld beschrieben das angibt ob es der Erste bzw. Letzte Datensatz einer Gruppe ist. Im ersten Verarbeitungsschritt markieren wir so die Erste Stempelzeit.
Im Zweiten Verarbeitungsschritt lesen wir nun die InMemory Tabelle und sortieren anhand der Reihenfolge „absteigend“. Hier markieren wir wieder den Ersten Datensatz, was in diesem Fall der Letzte der Gruppe ist. Den InMemory Adapter stellen wir hier auf nur Datensätze aktualisieren ein und filtern per Filter Heater zusätzlich alle anderen Datensätze heraus. So wird pro Gruppe nur der Letzte Datensatz aktualisiert.
Im Letzten Verarbeitungsschritt stellen wir die Sortierung wieder auf „aufsteigend“ um die Ursprüngliche Reihenfolge zu erhalten und filtern alle nicht markierten Datensätze (außer Erster bzw. Letzter) heraus, das war´s.
Im Anhang habe ich Ihnen ein kleines Beispiel erstellt.
das ist nicht ganz so einfach, geht aber. Das Problem ist, dass der FlowHeater Satzweise arbeitet und bei der Verarbeitung eines Satzes nicht weiß ob zu der Gruppierung noch was kommt.
Der Erste Datensatz einer Gruppierung kann über den AutoID Heater problemlos ermittelt werden, damit lässt sich was basteln. Das Vorgehen ist folgendes. Einlesen der Textdatei mit dem TextFile Adapter in eine ImMemory Adapter Tabelle. Hier wird die ursprüngliche Reihenfolge der Textdatei per AutoID Heater festgehalten. Diese ID (Reihenfolge) verwenden wir im zweiten Verarbeitungsschritt um die Datensätze zu aktualisieren. Per weiteren AutoID Heater mit aktivierter Option „Gleiche Eingangsparameter“ zu zählen wird ein Feld beschrieben das angibt ob es der Erste bzw. Letzte Datensatz einer Gruppe ist. Im ersten Verarbeitungsschritt markieren wir so die Erste Stempelzeit.
Im Zweiten Verarbeitungsschritt lesen wir nun die InMemory Tabelle und sortieren anhand der Reihenfolge „absteigend“. Hier markieren wir wieder den Ersten Datensatz, was in diesem Fall der Letzte der Gruppe ist. Den InMemory Adapter stellen wir hier auf nur Datensätze aktualisieren ein und filtern per Filter Heater zusätzlich alle anderen Datensätze heraus. So wird pro Gruppe nur der Letzte Datensatz aktualisiert.
Im Letzten Verarbeitungsschritt stellen wir die Sortierung wieder auf „aufsteigend“ um die Ursprüngliche Reihenfolge zu erhalten und filtern alle nicht markierten Datensätze (außer Erster bzw. Letzter) heraus, das war´s.
Im Anhang habe ich Ihnen ein kleines Beispiel erstellt.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Michael
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 11
4 Jahre 1 Monat her #4008
von Michael
Michael antwortete auf Addition Stempelzeiten
Hallo Herr Stark,
vielen Dank für die Info. Ich hänge noch an der Umsetzung. Wie kann ich daraus wieder ein Textfile generieren?
Im Anhang finden Sie noch eine Demo-Datei (Quell-Datei). Hier sind die K/G-Zeiten in verschiedenen Spalten abgelegt. Geht das so auch?
Vielen Dank für die Unterstützung.
Gruß Michael S.
vielen Dank für die Info. Ich hänge noch an der Umsetzung. Wie kann ich daraus wieder ein Textfile generieren?
Im Anhang finden Sie noch eine Demo-Datei (Quell-Datei). Hier sind die K/G-Zeiten in verschiedenen Spalten abgelegt. Geht das so auch?
Vielen Dank für die Unterstützung.
Gruß Michael S.
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Michael
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 11
4 Jahre 1 Monat her #4009
von Michael
Michael antwortete auf Addition Stempelzeiten
Hallo,
das Output-File habe ich gefunden - hatte ich übersehen.
Ich hänge noch am Punkt dass Kommen/gehen zwei Spalten sind.
Gruß Michael
das Output-File habe ich gefunden - hatte ich übersehen.
Ich hänge noch am Punkt dass Kommen/gehen zwei Spalten sind.
Gruß Michael
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
4 Jahre 1 Monat her #4010
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Addition Stempelzeiten
Hallo Michael,
Das mit “kommen” und “gehen” in einem Datensatz geht natürlich auch wird aber etwas komplexer Ich habe mal im Angang ein Beispiel dazu erstellt. Hier werden folgende Verarbeitungsschritte ausgeführt.
Das mit “kommen” und “gehen” in einem Datensatz geht natürlich auch wird aber etwas komplexer Ich habe mal im Angang ein Beispiel dazu erstellt. Hier werden folgende Verarbeitungsschritte ausgeführt.
- Einlesen der Textdatei in die InMemory Adapter Tabelle „Stempelzeiten“ und markieren des ersten Datensatzes der Gruppierung über die Felder Mandant, Mitarbeiter und Datum.
- Die Arbeitsstunden über die Gruppierung berechnen, die Stunden werden zur Gruppierung nach den Feldern Mandant, Mitarbeiter und Datum in einer weiteren InMemory Adapter Tabelle „Summen“ abgelegt.
- Hier wird die letzte Stempelzeit markiert.
- Ausgabe in die Textdatei. Die Daten werden anhand der Felder Mandant, Mitarbeiter und Datum über den GroupBy Heater gruppiert, sowie werden nur markierte (Erster/Letzter Datensatz) bei der Verarbeitung im InMemory Adapter berücksichtigt (= WHERE Klausel [FirstLast] = 'ja'). Über die weitere Bedingung wird gesteuert, dass das Feld „KOMMEN“ nur beim ersten Datensatz der Gruppierung gesetzt wird. Die Summen der Arbeitsstunden wird hier über den String Replace Heater per Datenlookup aus der InMemory Adapter Tabelle „Summen“ realisiert.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Michael
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 11
2 Jahre 10 Monate her #4430
von Michael
Michael antwortete auf Addition Stempelzeiten
Hallo Herr Stark,
ich habe versucht, die Zeiten in der Ausgabe noch auf viertel Stunden zu runden. Das ist mir nicht gelungen. Können Sie mich dabei unterstützen?
Vielen Dank
Gruß, Michael
ich habe versucht, die Zeiten in der Ausgabe noch auf viertel Stunden zu runden. Das ist mir nicht gelungen. Können Sie mich dabei unterstützen?
Vielen Dank
Gruß, Michael
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
2 Jahre 10 Monate her #4431
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Addition Stempelzeiten
Hallo Michael,
Ich habe das Beispiel mal angepasst, es wird hier mit Industrieminuten (= eine Stunde hat 100 Minuten) gerechnet wird. Aktuell wird immer abgerundet so dass wenn eine Viertelstunde noch nicht erreicht wird abgerundet wird. Andere Rundungen können gerne angepasst werden.
Um das zu erreichen wurde ein .NET Script Heater hinzugefügt der untenstehendes C# Skript für das Runden der Industrieminuten verwendet.
C# Skript um Industrieminuten zu Runden
Ich habe das Beispiel mal angepasst, es wird hier mit Industrieminuten (= eine Stunde hat 100 Minuten) gerechnet wird. Aktuell wird immer abgerundet so dass wenn eine Viertelstunde noch nicht erreicht wird abgerundet wird. Andere Rundungen können gerne angepasst werden.
Um das zu erreichen wurde ein .NET Script Heater hinzugefügt der untenstehendes C# Skript für das Runden der Industrieminuten verwendet.
C# Skript um Industrieminuten zu Runden
Code:
public object DoWork()
{
if (InValues.Length != 1)
throw new Exception("1 Eingangsparameter erwartet!");
object o = InValues[0].GetDecimal();
if (o == null)
throw new Exception("Eingangsparameter konnte nicht in eine Zahl umgewandelt werden!");
decimal d = Convert.ToDecimal(o);
// Vorkommastellen
decimal v = Math.Truncate(d);
// Nachkommastellen
decimal n = (d % 1) * 100;
// Industrieminuten runden
if (n < 25)
n = 0;
else if (n < 50)
n = 25;
else if (n < 75)
n = 50;
else
n = 75;
// Gerundeten Wert zurückgeben
return v + (n / 100);
}
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Michael
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 11
2 Jahre 9 Monate her #4495
von Michael
Michael antwortete auf Addition Stempelzeiten
Hallo Herr Stark,
wir haben das Skript getestet. Die Zeiten werden hier immer nach unten abgerundet. Kann man das theoretisch auch anpassen, so dass die Zeiten gerechter gerundet werden? Also die 15 Minuten dann bis 7,5 nach unten, ab 7,5 nach oben.
Gruß
Michael
wir haben das Skript getestet. Die Zeiten werden hier immer nach unten abgerundet. Kann man das theoretisch auch anpassen, so dass die Zeiten gerechter gerundet werden? Also die 15 Minuten dann bis 7,5 nach unten, ab 7,5 nach oben.
Gruß
Michael
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
2 Jahre 9 Monate her #4496
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Addition Stempelzeiten
Hallo Michael,
natürlich geht das, hier das angepasst Skript. Sie können die Werte im Skript einfach anpassen, siehe Kommentare im Skript.
C# Skript um Industrieminuten zu Runden
natürlich geht das, hier das angepasst Skript. Sie können die Werte im Skript einfach anpassen, siehe Kommentare im Skript.
C# Skript um Industrieminuten zu Runden
Code:
public object DoWork()
{
if (InValues.Length != 1)
throw new Exception("1 Eingangsparameter erwartet!");
object o = InValues[0].GetDecimal();
if (o == null)
throw new Exception("Eingangsparameter konnte nicht in eine Zahl umgewandelt werden!");
decimal d = Convert.ToDecimal(o);
// Vorkommastellen
decimal v = Math.Truncate(d);
// Nachkommastellen
decimal n = (d % 1) * 100;
// Industrieminuten runden
if (n <= 12) // Hier anpassen
{
// Abrunden auf volle Stunde
n = 0;
}
else if (n <= 37) // Hier anpassen
{
n = 25;
}
else if (n <= 62) // Hier anpassen
{
n = 50;
}
else if (n <= 87) // Hier anpassen
{
n = 75;
}
else
{
// auf volle Stunde aufrunden
v++;
n = 0;
}
// Gerundeten Wert zurückgeben
return v + (n / 100);
}
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.320 Sekunden