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.

Calculating Whole Business Days for Leave Tracking Purposes

VerdaKosnett1
Tera Guru
 
3 ACCEPTED SOLUTIONS

VerdaKosnett1
Tera Guru

I wanted to add this piece of code to refer to it in the future. When calculating how much leave a person will use, one must remember you are deducting 24 hours for each day.

 

In the script include:

    try {
 var stdt = this.getParameter('sysparm_start_date') + ' 00:00:00';
  var enddt = this.getParameter('sysparm_end_date') + ' 24:00:00';
//add the  ' 00:00:00' and  ' 24:00:00' to the end of the string field start and end date.
 
var glidestart = new GlideDateTime(stdt);
var glideend = new GlideDateTime(enddt);
 var schedule = new GlideSchedule();
schedule.load('f905703a1b475e90400fc992604bcb21');
 var dur = schedule.duration(glidestart, glideend);
  var days =dur.getNumericValue() / 86400000;
 return JSON.stringify(Math.round(parseFloat(days).toFixed(2)));
   } catch (ex) {
            var message = ex.message + ' ' + ex.lineNumber;
            gs.error("Error in getUserLocDetails/ getLeaveCount" + message);
    }

View solution in original post

Client script:

 

        var ga1 = new GlideAjax('getUserLocDetails');
        ga1.addParam('sysparm_name', 'getLeaveCount');
        ga1.addParam('sysparm_start_date', startDate);
        ga1.addParam('sysparm_end_date', endDate);
 
function respParse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        answer = JSON.parse(answer); // parse answer

        g_form.setValue('u_number_of_leaves', answer);


    }

View solution in original post

Make sure your schedule for this is all day except weekends. Add a child schedule for holidays.

VerdaKosnett1_0-1736977932177.png

 

View solution in original post

4 REPLIES 4

VerdaKosnett1
Tera Guru

I wanted to add this piece of code to refer to it in the future. When calculating how much leave a person will use, one must remember you are deducting 24 hours for each day.

 

In the script include:

    try {
 var stdt = this.getParameter('sysparm_start_date') + ' 00:00:00';
  var enddt = this.getParameter('sysparm_end_date') + ' 24:00:00';
//add the  ' 00:00:00' and  ' 24:00:00' to the end of the string field start and end date.
 
var glidestart = new GlideDateTime(stdt);
var glideend = new GlideDateTime(enddt);
 var schedule = new GlideSchedule();
schedule.load('f905703a1b475e90400fc992604bcb21');
 var dur = schedule.duration(glidestart, glideend);
  var days =dur.getNumericValue() / 86400000;
 return JSON.stringify(Math.round(parseFloat(days).toFixed(2)));
   } catch (ex) {
            var message = ex.message + ' ' + ex.lineNumber;
            gs.error("Error in getUserLocDetails/ getLeaveCount" + message);
    }

Client script:

 

        var ga1 = new GlideAjax('getUserLocDetails');
        ga1.addParam('sysparm_name', 'getLeaveCount');
        ga1.addParam('sysparm_start_date', startDate);
        ga1.addParam('sysparm_end_date', endDate);
 
function respParse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        answer = JSON.parse(answer); // parse answer

        g_form.setValue('u_number_of_leaves', answer);


    }

Make sure your schedule for this is all day except weekends. Add a child schedule for holidays.

VerdaKosnett1_0-1736977932177.png

 

Juhi Poddar
Kilo Patron
Kilo Patron

Hello @VerdaKosnett1 

I don't know what you are trying to do here. 

This is not the way how you keep the code to refer for future.

 

Thank You

Juhi Poddar