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:gs.dateGenerate('4712-12-31','start')@javascript: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:gs.dateGenerate('4712-12-31','start')@javascript:gs.dateGenerate('4712-12-31','end')^ORu_end_date=NULL^u_end_date>javascript: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:gs.dateGenerate('4712-12-31','start')@javascript: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);
}
}
}
}