- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-01-2020 01:28 AM
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.
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-07-2020 09:37 PM
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);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-05-2020 12:06 AM
The first substract should be passing GlideDateTime.
The second substract should be passing GlideDuration. Will the error not occur when the following statements are commented out.
var finalTime = diffTime.subtract(pauseDuration);
current.u_supplychain_calc = finalTime;
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-05-2020 12:56 AM
Can you help me to fix this code in another way. The lines cannot be commented out since the original requirement will not be working.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-05-2020 02:39 AM
My bad. I haven't set pauseDuration before calling calTime().
(function executeRule(current, previous /*null when async*/ ) {
var responseSLA;
var resolutionSLA;
var resCheck;
var resoCheck;
var durCheck;
var pauseDuration;
var slaCheck = new GlideRecord('task_sla');
slaCheck.addQuery('task', current.sys_id);
slaCheck.query();
while (slaCheck.next()) {
pauseDuration = slaCheck.pause_duration;
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 diffTime = new GlideDuration(durCheck);
var finalTime = diffTime.subtract(pauseDuration);
current.u_supplychain_calc = finalTime;
}
//current.update();
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-05-2020 02:53 AM
Now there is no error, but values are not populating in the duration field (u_supplychain_calc)

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-05-2020 03:16 AM
Move the setting to the executeRule.
(function executeRule(current, previous /*null when async*/ ) {
var responseSLA;
var resolutionSLA;
var resCheck;
var resoCheck;
var durCheck;
var pauseDuration;
var slaCheck = new GlideRecord('task_sla');
slaCheck.addQuery('task', current.sys_id);
slaCheck.query();
while (slaCheck.next()) {
pauseDuration = slaCheck.pause_duration;
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();
}
current.u_supplychain_calc = 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();
}
current.u_supplychain_calc = calcTime();
}
}
function calcTime() {
resCheck = GlideDateTime(responseSLA);
resoCheck = GlideDateTime(resolutionSLA);
durCheck = GlideDateTime.subtract(resCheck, resoCheck);
var diffTime = new GlideDuration(durCheck);
return diffTime.subtract(pauseDuration);
}
//current.update();
})(current, previous);