Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

GlideDateTime.subtract

Vikram3
Tera Guru

Hello,

(function executeRule(current, previous /*null when async*/ ) {
    var responseSLA;
    var resolutionSLA;
    var resCheck;
    var resoCheck;
    var durCheck;
    var slaCheck = new GlideRecord('task_sla');
    slaCheck.addQuery('task', current.sys_id);
    slaCheck.query();
    while (slaCheck.next()) {
        if (slaCheck.task.assignment_group.name.includes('Supply')) {
            if (slaCheck.sla == 'c791bb61dbd658508a7cd0b2ca961906') {
                responseSLA = slaCheck.start_time.getDisplayValue();
            }
            if (slaCheck.sla == '7ea3bba1dbd658508a7cd0b2ca9619ac' && slaCheck.stage == 'completed') {
                resolutionSLA = slaCheck.end_time.getDisplayValue();                
            }
			calcTime();
        }
        if (slaCheck.task.assignment_group.name.includes('AOG')) {
            if (slaCheck.sla == '4858c35fdb9b50508a7cd0b2ca9619df') {
                responseSLA = slaCheck.start_time.getDisplayValue();
            }
            if (slaCheck.sla == '6d48835fdb9b50508a7cd0b2ca961950' && slaCheck.stage == 'completed') {
                resolutionSLA = slaCheck.end_time.getDisplayValue();
            }
			calcTime();
        }
    }

    function calcTime() {
        resCheck = GlideDateTime(responseSLA);
        resoCheck = GlideDateTime(resolutionSLA);
        durCheck = GlideDateTime.subtract(resCheck, resoCheck);
        var finalTime = new GlideDuration(durCheck);
        current.u_supplychain_calc = finalTime;
    }
	//current.update();
})(current, previous);

Above code will do subtraction of start and end date of two sla when it is completed. I want to subtract pause duration value from "finalTime" value. FYI, pause value is a duration field from task_sla. Can anyone assist on this.

1 ACCEPTED SOLUTION

Vikram3
Tera Guru

This got resolved by getting pause time as below

pauseDuration = slaCheck.pause_duration.dateNumericValue();

and after that,

durCheck = GlideDateTime.subtract(resCheck, resoCheck).getNumericValue();
var subTime = durCheck - pauseDuration;
var finalTime = current.u_supplychain_calc.setDateNumericValue(subTime);

View solution in original post

27 REPLIES 27

end_time is nothing but "Stop Time". No it's not custom field.

My bad.

So the current problem is getting the value of end_time in update business rule.

May be make this into a different question. I think there's somebody else who may be much better be able to solve this.

I tried infomessages for pause duration and it works. Only issue is subtraction.