Hallo Liebe Com,
ich habe keine Ahnung wie ich das realisieren soll, vielleicht kann mir jemand von euch helfen,
und zwar geht es um Stundenlohn und Zuschläge.
Angenommen ich habe von Samstag 19:00 Uhr bis Sonntag 03:00 Uhr gearbeitet und dabei 35 Minuten Pause gemacht. Das ist kein Problem und ist fertig.
Jetzt kommt aber das Problem, Sonntagszuschläge gibt es von 00:00 bis 23:59, und ich müsste jetzt eben die 3 Stunden die "extrahieren".
An sich ist das nicht schwer. So aus der Menschlichen Logik sagt man einfach 3 Stunden. Aber wie mache ich das am besten mit Javascript.
Das ist auch noch "einfach" aber diese Grenzen sind variabel. Zusätzlich gibt es einen Nachtzuschlag, der von 20:00 bis 06:00 Uhr gilt, demnach müsste ich 4 Stunden von Samstag und 3 Stunden von Sonntag bezuschlagen.
Ich entwickel eine Plattform, in der man eben Stundenlöhne und so eingeben kann, sodass man eine Übersicht hat, wie viel man gearbeitet hat und wie viel man verdient hat.
Spoiler anzeigen
var DayTime2Min_p = function (dayTime_s) {
//By BugFix https://autoit.de/index.php/User/66-BugFix/
var aTime = dayTime_s.substring(3).split(':'); //Local $aTime = StringSplit(StringTrimLeft($sDayTime, 3), ':')
return (("MoDiMiDoFrSaSo".indexOf(dayTime_s.substring(0, 2)) - 1) / 2) * 1440 + parseInt(aTime[0]) * 60 + parseInt(aTime[1]);
//Return ((StringInStr('MoDiMiDoFrSaSo', StringLeft($sDayTime, 2))-1)/2)*1440 + $aTime[1]*60 + $aTime[2]
},
var GetWorkTime_p = function (dayTimeStart_s, dayTimeEnd_s, extraChargeFirst_s, extraChagreLast_s) {
//By BugFix https://autoit.de/index.php/User/66-BugFix/
var nStart = this.DayTime2Min_p(dayTimeStart_s); //Local $iStart = _DayTime2Min($sDayTimeStart),
var nEnd = this.DayTime2Min_p(dayTimeEnd_s); //$iEnd = _DayTime2Min($sDayTimeEnd),
var nXStart = this.DayTime2Min_p(extraChargeFirst_s); // $iXStart = _DayTime2Min($sExtraChargeFirst)
var nXEnd = this.DayTime2Min_p(extraChagreLast_s); // Local $iXEnd = _DayTime2Min($sExtraChargeLast),
var nWorktime = nEnd - nStart; // $iWorktime = $iEnd - $iStart,
var nExtraCharge = 0; // $iExtraCharge = 0
//Select
if (dayTimeStart_s.substring(0, 2) === "So" && dayTimeEnd_s.substring(0, 2) === "Mo") {
// Case StringLeft($sDayTimeStart, 2) = 'So' And StringLeft($sDayTimeEnd, 2) = 'Mo' ; So auf Mo ?
nExtraCharge = nXEnd - nStart; // $iExtraCharge = $iXEnd - $iStart
nWorktime += 10080; //$iWorktime += 10080 ; die erste Berechnung hat negatives Ergebnis, da Ende < Anfang ist - Shift um eine Woche nötig
}
if (nStart >= nXStart) { // Case $iStart >= $iXStart
nExtraCharge = nEnd - nStart;// $iExtraCharge = $iEnd - $iStart
}
if (nStart < nXStart && nEnd > nXStart) { //Case $iStart < $iXStart And $iEnd > $iXStart
nExtraCharge = nEnd - nXStart; //$iExtraCharge = $iEnd - $iXStart
}
// EndSelect
return {text: 'AZ: '+parseInt(nWorktime)/60+':'+ (parseInt(nWorktime) % 60) +'; enthaltene ZZ: '+parseInt(nExtraCharge)/60+':'+ (parseInt(nExtraCharge) % 60) +''};
}
Alles anzeigen