There are many calculations that can be used in form templates.
General concept is the object name in square brackets [ XXXX ] method of operation then object name, again, in square brackets.
Time Calculations;
Start Time = [startTime]
Finish Time = [finishTime]
Breaks = [minusBreaks]
In the time calculation Input options Advanced Calculation must be ticked, times must be mandatory.
Use the below code in the calculation box
- var timediff = myNS.helper.time_diff( "01/01/1999 [startTime]", ([startTime] > [finishTime] ? "01/02/1999 [finishTime]" : "01/01/1999 [finishTime]") ); value = (timediff.hours + ((timediff.minutes / 60))) - [minusBreaks];
If no breaks in the form,
- var timediff = myNS.helper.time_diff( "01/01/1999 [startTime]", ([startTime] > [finishTime] ? "01/02/1999 [finishTime]" : "01/01/1999 [finishTime]") ); value = (timediff.hours + ((timediff.minutes / 60)));
For Rounded times to nearest 15 minutes. For half hour change (value * 4) / 4) to (value * 2) / 2.var timediff = myNS.helper.time_diff( "01/01/1999 [startTime]", ([startTime] > [finishTime] ? "01/02/1999 [finishTime]" : "01/01/1999 [finishTime]") ); value = (timediff.hours + ((timediff.minutes / 60))); value = (Math.round(value * 4) / 4).toFixed(2)
For Rounded times upto next 15 minutes. For half hour change (value * 4) / 4) to (value * 2) / 2.var timediff = myNS.helper.time_diff( "01/01/1999 [startTime]", ([startTime] > [finishTime] ? "01/02/1999 [finishTime]" : "01/01/1999 [finishTime]") ); value = (timediff.hours + ((timediff.minutes / 60))); value = (Math.ceil(value * 4) / 4).toFixed(2);
For Time Calculations over Multiple days,
"[XXXXstartDate]"; "[XXXXfinishDate]";
"[XXXXstartTime]"; "[XXXXfinishTime]";
var startdate = (
strtotime(
`${formObject.returnObjectSP("XXXXstartDate", this.repeatedCount)[0].getValue()} ${formObject.returnObjectSP("XXXXstartTime", this.repeatedCount)[0].getValue()}`
));
var enddate = (
strtotime(
`${formObject.returnObjectSP("XXXXfinishDate", this.repeatedCount)[0].getValue()} ${formObject.returnObjectSP("XXXXfinishTime", this.repeatedCount)[0].getValue()}`
));
var timediff = myNS.helper.time_diff( date('Y/m/d H:i', startdate), date('Y/m/d H:i', enddate) );
value = (timediff.days * 24) + (timediff.hours + ((timediff.minutes / 60)));
XX indicates where time field object names from the form need to be added to the calculation
For Calculations over Multiple days (without time),
Variables are startDate and finishDate
"[startDate]"; "[finishDate]";
var startdate = (strtotime(formObject.returnObjectSP("startDate", this.repeatedCount)[0].getValue())-0);
var enddate = (strtotime(formObject.returnObjectSP("finishDate", this.repeatedCount)[0].getValue())-0);
var timediff = myNS.helper.time_diff( date('Y/m/d H:i', startdate), date('Y/m/d H:i', enddate) );
value = (timediff.days);
Overtime Calcs
Hours Calc: var timediff = myNS.helper.time_diff( "01/01/1999 [startTime]", ([startTime] > [finishTime] ? "01/02/1999 [finishTime]" : "01/01/1999 [finishTime]") ); value = (timediff.hours + ((timediff.minutes / 60)));
Total Hours Field Name= totalHours
Normal Hours Field Name = normalHours
Normal Hours Calc: if([totalHours] > 8) value = 8; else value = [totalHours];
Time Half Calc: if([totalHours] - [normalHours] > 2) value = 2; else value = [totalHours] - [normalHours];
Double Time Calc: if([totalHours] > 10) value = [totalHours] - 10;
Time calculations cannot calculate a date with X number of days to equal a new date.