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

Not working 😞

What happens if u_suppychain_calc is set to a static value?

current.u_supplychain_calc = 123;

The field is a duration type.

Then try setting to "new GlideDuration('00:00:00');"

No it's not working.