adding multiple durations together in a while loop to get total duration

Jake Sadler
Kilo Sage

I'm trying to add multiple durations together with the below script. It loops through each record but only seesm to add teh final duration. Or it could be overwriting the previous value. Any help would be much appreciated.

 

(function executeRule(current, previous /*null when async*/ ) {

var gdt = new GlideDateTime();
gdt.setValue(current.u_date);
gdt.getDate();
var gd = new GlideDate();
gd.setValue(gdt);
var x = gd.toString();

var gr = new GlideRecord('task');
gr.addQuery('assigned_to', current.u_user);
gr.addEncodedQuery("start_dateON" + gd + " @javascript:gs.dateGenerate('" + x + "','start')@javascript:gs.dateGenerate('" + x + "','end')");
gr.query();

var dur = new GlideDuration();
dur.setValue('0 00:00:00');

while (gr.next()) {

var gd2 = new GlideDuration(gr.duration);
gd2.setValue(gr.duration);
var gd3 = dur.add(gd2);

 

}

gs.log(gd3, 'kwq');

1 ACCEPTED SOLUTION

vkachineni
Kilo Sage
Kilo Sage

Here is code snippet from PDI to add durations into a variable

 

var grInc = new GlideRecord("incident");
grInc.addEncodedQuery("calendar_duration!=NULL^sys_class_name!=wm_task^ORsys_class_name=NULL^sys_class_name=incident^priority=1^assigned_to=5137153cc611227c000bbd1bd8cd2007"); 
grInc.query()

var dur = new GlideDuration();
dur.setValue('0 00:00:00');
while(grInc.next()){	
	dur.add(grInc.calendar_duration.dateNumericValue());	
}

gs.print(dur);
gs.print(dur.getDisplayValue());

 

*** Script: 1970-09-22 13:43:10
*** Script: 264 Days 13 Hours 43 Minutes
Please mark Correct and click the Thumb up if my answer helps you resolve your issue. Thanks!
Vinod Kumar Kachineni
Community Rising Star 2022

View solution in original post

2 REPLIES 2

vkachineni
Kilo Sage
Kilo Sage

Here is code snippet from PDI to add durations into a variable

 

var grInc = new GlideRecord("incident");
grInc.addEncodedQuery("calendar_duration!=NULL^sys_class_name!=wm_task^ORsys_class_name=NULL^sys_class_name=incident^priority=1^assigned_to=5137153cc611227c000bbd1bd8cd2007"); 
grInc.query()

var dur = new GlideDuration();
dur.setValue('0 00:00:00');
while(grInc.next()){	
	dur.add(grInc.calendar_duration.dateNumericValue());	
}

gs.print(dur);
gs.print(dur.getDisplayValue());

 

*** Script: 1970-09-22 13:43:10
*** Script: 264 Days 13 Hours 43 Minutes
Please mark Correct and click the Thumb up if my answer helps you resolve your issue. Thanks!
Vinod Kumar Kachineni
Community Rising Star 2022

How would you add this back to a duration field?

 

I tried cs.u_estimated_effort.setDateNumericValue(dur); as well as cs.u_estimated_effort = dur but it's not updating the field correctly.