[GastForen Programme Web/Internet PDF Grundlagen / Web / eForms PDF Formular Berechnung erster Arbeitstag

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Web/Internet - Webdesign, eForms
Themen
Beiträge
Moderatoren
Letzter Beitrag

PDF Formular Berechnung erster Arbeitstag

Bosbi
Beiträge gesamt: 1

28. Feb 2020, 09:11
Beitrag # 1 von 2
Bewertung:
(6616 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

ich habe dank der Hilfe dieses Forums folgendes Formular im PDF erstellt und erfolgreich angewandt.


var dStart = util.scand("d.m.yyyy", this.getField("Start").value);
var dEnde = util.scand("d.m.yyyy", this.getField("Ende").value);
/* Textfelder werden apriori als String eingelesen. Damit ein Date
* Objekt entsteht, kann die Methode «scand()» aus dem util» Objekt
* benutzt werden. Das Format des Datums kann durch die Feld-
* Formatierung sichergestellt werden (siehe Annahmen)
*/

var nDifferenzKalendertage = Math.round((dEnde - dStart)/(24*60*60*1000));
/* Wenn mit dem Date Objekt gerechnet wird, wird es dynamisch in
* einen andern Datentyp umgewandelt, hier zum Typ Number.
* In JavaScript wird das Datum in Millisekunden aufgelösst.
* 24 h pro Tag, 60 min. pro Stunde, 60 s pro Minute, 1000 ms pro
* Sekunde
* «Math.round()» ist nötig, um die Effekte der Fliess-Komma-
* Operation zu kompensieren.
*/

var nArbeitstage = 0; // Tageszähler

for (var j = 0; j <= nDifferenzKalendertage + 1; j++) {
var dTag = new Date(dStart*1 + j*24*60*60*1000);
if (dTag.getDay() > 0 && dTag.getDay() < 6) nArbeitstage++;
} //for

/* «nDifferenzKalendertage + 1» ist nötig, um Anfangs- und End-
* Tag mit zu zählen.
* Damit mit den aus dem Date Objekt dStart ein numerischer Wert wird,
* wird es mit 1 multipliziert
*/

this.getField("Arbeitstage").value = nArbeitstage;



Es handelt sich um einen Urlaubsantrag wo die Mitarbeiter Startdatum und Enddatum eintragen können. Automatisch wird die Anzahl der Tage ermittelt.
Nun würde ich gerne noch folgende Ergänzung machen:
Es gibt eine Checkbox Zeitausgleich und eine Urlaub.
Je nachdem was der Mitarbeiter anwählt soll dann entweder im Feld Arbeitstage die Menge der Urlaubstage oder die Menge der Stunden für den Zeitausgleich mit eine Arbeitszeit von 8 Stunden am Tag.
Dafür gibt es dann zwei Felder:
genommene Arbeitstage
genommene Überstunden

Ist es vielleicht möglich auch automatisch den ersten Arbeitstag nach den genommenen Überstunden oder Urlaub mit ein zusätzliches Feld "erster Arbeitstag am" ausrechnen zu lassen?

Woher weiß der Script, wieviel Feiertage und vor allem wann die Feiertage sind?

Danke
bosbi
X

PDF Formular Berechnung erster Arbeitstag

Thomas Richard
Beiträge gesamt: 19324

28. Feb 2020, 15:50
Beitrag # 2 von 2
Beitrag ID: #574360
Bewertung:
(6558 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Woher weiß der Script, wieviel Feiertage und vor allem wann die Feiertage sind?

Garnicht!

Die Auswertung ob ein Tag ein Arbeitstag ist oder nicht, geschieht über diese Zeile:
Code
if (dTag.getDay() > 0 && dTag.getDay() < 6) nArbeitstage++; 


getDay extrahiert den Wochentag aus der Variable dTag.
Liegt der zwischen 1 für Montag (Vorsicht bei sowas, von wegen erster Wochentag = Sonntag im angloamerikanischen Raum) und 5 für Freitag, wird er gezählt, liegt er außerhalb nicht.

Eine Abfrage auf Feiertage müsstest du mit einem konkrete hinterlegten Kalender bewerkstelligen, der für die beweglichen Feiertage wie Ostern und Pfingsten dann noch zu pflegen wäre.


Ich habs noch nie gemacht aber ich stelle mir das so vor:

Abfrage if

dTag = Wochentag 1-5
UND
dTag ungleich einem Mitglied eines Arrays bestehend aus allen Feiertagen.

then
dTag mitzählen

ansonsten nächster Tag der eingegebenen Zeitspanne prüfen.


als Antwort auf: [#574346]