date condition is not working

pavam
Tera Contributor

Hi ,

 

I have written a schedule job  based on the difference of the number of days.

1. condition, (difference number of days < 3 days), trigger an email notification

2. condition , (difference number of days >=4 && difference number of days <8), trigger another email notification.

 

Below is the code, some times and for few records both conditions 1 and 2  are executing ,for difference number of days < 3 days

 

 

 

// check the conditon if user end date is less than or equal to 3 days and send Email notification to User and to User's Manager
var gdt = new GlideDateTime();
var currentDate = gdt.getLocalDate();
gs.info('currentDate ' + currentDate);
//query to bring the list of users leaving in 7 days
var a = "u_end_date!=NULL^u_end_dateNOTON4712-12-31@javascript&colon;gs.dateGenerate('4712-12-31','start')@javascript&colon;gs.dateGenerate('4712-12-31','end')^ORu_end_date=NULL^active=true^u_end_dateRELATIVEGT@dayofweek@ahead@0^u_end_dateRELATIVELT@dayofweek@ahead@7";
var gr = new GlideRecord('sys_user');
gr.addEncodedQuery(a);
gr.query();
gs.log("total records for 1 weekblock Get row count" + gr.getRowCount());
gs.info("ENCODED QUERY" + gr.getEncodedQuery());
while (gr.next()) {
    var dateEntered = gr.getValue('u_end_date');
    gs.info('>>>dateEntered' + dateEntered);
    var dateDifferenceInMs = GlideDateTime(dateEntered).getNumericValue() - currentDate.getNumericValue();
    var dateDifferenceInDays = Math.floor(dateDifferenceInMs / (1000 * 60 * 60 * 24));
    gs.info('>>>dateDifferenceInDays ' + dateDifferenceInDays);
// comparing the associate Enddate and current date
    if (dateDifferenceInDays < 4) {
        // User Leaving in 3 days.
        var que = "u_end_date!=NULL^u_end_dateNOTON4712-12-31@javascript&colon;gs.dateGenerate('4712-12-31','start')@javascript&colon;gs.dateGenerate('4712-12-31','end')^ORu_end_date=NULL^u_end_date>javascript&colon;gs.endOfToday()^u_end_dateRELATIVELT@dayofweek@ahead@4";
        var grlUser = new GlideRecord('sys_user');
        grlUser.addEncodedQuery(que);
        grlUser.query();
        gs.log(">>>dateDifferenceInDays in 3 days block " + dateDifferenceInDays);
          while (grlUser.next()) {
            var username = grlUser.sys_id;
            var manager = grlUser.manager;
            var alltickets = 'numberSTARTSWITHINC^ORnumberSTARTSWITHCHG^ORnumberSTARTSWITHPRB^ORnumberSTARTSWITHTASK^ORnumberSTARTSWITHTUN^ORnumberSTARTSWITHAGL^ORnumberSTARTSWITHPTASK^ORnumberSTARTSWITHOPR^stateNOT IN3,4,7,8,9,5,101,107,157,-6,20,25,21,71,75,72,74,73,76^active=true';
            var grTask = new GlideRecord('task');
            grTask.addEncodedQuery(alltickets);
            grTask.addQuery('assigned_to', username);
            grTask.query();
          
            gs.log("in scheduled job all tickets script get row count+" + grTask.getRowCount());
            if (grTask.getRowCount() > 0) {
 
                gs.eventQueue('UsersLeavingin3days', grlUser, username, manager);
               
            }
 
        }
 
 
    }
 
    //  2nd condition days is between 4-7 days
    if (dateDifferenceInDays >= 4 && dateDifferenceInDays <=8) {  // this line is executing for < 3 days also, basically it should not execute.
        gs.log(">>>dateDifferenceInDays in days ins >4 and <8 " + dateDifferenceInDays);
       
        var grUser = new GlideRecord('sys_user');
        grUser.addEncodedQuery("u_end_date!=NULL^u_end_dateNOTON4712-12-31@javascript&colon;gs.dateGenerate('4712-12-31','start')@javascript&colon;gs.dateGenerate('4712-12-31','end')^ORu_end_date=NULL^active=true^u_end_dateRELATIVEGT@dayofweek@ahead@0^u_end_dateRELATIVELT@dayofweek@ahead@7");
        grUser.query();
   
        while (grUser.next()) {
            var usernames = grUser.sys_id;
              var alltickets1 = 'numberSTARTSWITHINC^ORnumberSTARTSWITHCHG^ORnumberSTARTSWITHPRB^ORnumberSTARTSWITHTASK^ORnumberSTARTSWITHTUN^ORnumberSTARTSWITHAGL^ORnumberSTARTSWITHPTASK^ORnumberSTARTSWITHOPR^stateNOT IN3,4,7,8,9,5,101,107,157,-6,20,25,21,71,75,72,74,73,76^active=true';
            var grTask1 = new GlideRecord('task');
            grTask1.addEncodedQuery(alltickets);
            grTask1.addQuery('assigned_to', usernames);
            grTask1.query();
              if (grTask1.getRowCount() > 0) {
                gs.eventQueue('UsersLeavingin7days', grUser, usernames);
            }
 
 
        }
 
    }
}

 

 

 

 

 

4 REPLIES 4

palanikumar
Mega Sage

Hi,

Can you please share the value returned for dateDifferenceInDays 

Thank you,

Palani

Thank you,
Palani

the value of the dateDifferenceInDays   is coming dynamically, like 1, 2, 3, 4, 5, 6, 7 .

 

 if the value is coming 1, 2, 3 then both the conditions(from my main query) are running

 

 

What is the outcome of this line?

    var dateDifferenceInDays = Math.floor(dateDifferenceInMs / (1000 * 60 * 60 * 24));
    gs.info('>>>dateDifferenceInDays ' + dateDifferenceInDays);
Thank you,
Palani

it is printing the no.of days in number.

 

number may be 1,2,3,4,5,6,7