Need help to exclude weekends from the calculation

MR1
Tera Contributor

Hi All,

 

The below script is working as expected but I need help to modify and remove the weekend from the calculation.
The below advance script is on the calculated tab of field "Aging". The integer type field 'aging' is on scoped application. 

 

(function calculatedFieldValue(current) {

	if(current.state == 7){ //7 is closed value of state field on a scoped application
		var aging= GlideDateTime.subtract(new GlideDateTime(current.sys_created_on),new GlideDateTime(current.closed_at));
	} else {
		aging= GlideDateTime.subtract(new GlideDateTime(current.sys_created_on),new GlideDateTime());
	}

	return aging.getDayPart();

})(current);

 

1 ACCEPTED SOLUTION

@MR1 

I'm not sure  how you added my code to you instance , I tried and it  works well. 

See my pics below.

 

 

 

start end and  agingstart end and agingCalculation scripts on field  "Aging"Calculation scripts on field "Aging"test1test1test2test2

Please mark my answer as correct and helpful based on Impact.

View solution in original post

10 REPLIES 10

newhand
Mega Sage

HI  @MR1 

 

Try this. 

I have done some tests..but i think needs more tests....

 

 

function getdays(dur,startDateTime,endDateTime){
  if(startDateTime >= endDateTime){
    return dur;
  }

 
  if( startDateTime.getDayOfWeekUTC() == 6 || startDateTime.getDayOfWeekUTC() == 7){
     var startOfStartDateTime= new GlideDateTime(startDateTime.getDate() + " 00:00:00")
      startOfStartDateTime.addDaysUTC(1) 
    return  getdays( dur, startOfStartDateTime  ,endDateTime)
  }

  if(endDateTime.getDayOfWeekUTC() == 6 || endDateTime.getDayOfWeekUTC() == 7){
     var nextday = new GlideDateTime(startDateTime.getDate() + " 24:00:00")
     nextday.addDaysUTC(-1)
    return  getdays(dur,startDateTime  , nextday)
  }

 

  if(startDateTime.getDate() == endDateTime.getDate()){
      
     return dur.add( GlideDateTime.subtract(startDateTime,endDateTime))
  }else{

  
      var nextday = new GlideDateTime(startDateTime.getDate() + " 00:00:00")
      nextday.addDaysUTC(1) 
      var endofStartday = new GlideDateTime(startDateTime.getDate() + " 24:00:00")
       
      return  getdays(dur.add( GlideDateTime.subtract(startDateTime,endofStartday )),nextday , endDateTime)
  }
}

 

 
 // test !!
var restultdru = getdays(new GlideDuration(0),new GlideDateTime('2022-12-12 24:00:00')   , new GlideDateTime('2022-12-13 12:00:01') )
gs.info(restultdru .getDurationValue());
 

 

 

 

Please mark my answer as correct and helpful based on Impact.

MR1
Tera Contributor

Thanks for your help!

Unfortunately, I tried with that script but it didn't help me out yet.

 

Thanks

@MR1 

What's your result ?

Please mark my answer as correct and helpful based on Impact.

MR1
Tera Contributor

I was trying to populate a custom integer type field "aging" based on "opened at" and "closed at" fields.

I added your script on the field level advanced script and the result was empty. the field was empty. Do you think any BR could help us as alternative solution.

 

Thanks