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

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