Reassignments of WOs on pending review state

ankitkathuria
Tera Contributor

Requirement: When WOs are being reassigned every morning, kindly include those that were put in pending review past 5pm the previous day.

 

Can anyone help update the scheduled job for above requirement?

 

var wota = [];

var owot = new GlideRecord('wm_task');
owot.addEncodedQuery('stateNOT IN4,7');
//owot.addQuery('sys_id','4495f554ebd99210984cf6f4cad0cdcb');
owot.query();
while (owot.next()) {
    wota.push(owot.u_dispatcher.toString());
}
//gs.info('WOT:' + new global.ArrayUtil().unique(wota));
var awsa = [];
//var user = tech;
var str1 = '^from_date>=' + _getBeginningDateTime('Africa/Nairobi') + '^' + 'from_date<=' + _getEndingDateTime('Africa/Nairobi');
var str2 = '^to_date>=' + _getBeginningDateTime('Africa/Nairobi') + '^' + 'to_date<=' + _getEndingDateTime('Africa/Nairobi');
var ws = new GlideRecord('agent_work_schedule');
//ws.addEncodedQuery('from_dateONToday@javascript&colon;gs.beginningOfToday()@javascript&colon;gs.endOfToday()^to_dateONToday@javascript&colon;gs.beginningOfToday()@javascript&colon;gs.endOfToday()^work_schedule.nameINWorkday 8:00 - 5:00,WeekDays 10:00 - 4:00');
ws.addEncodedQuery(str1 + str2);
ws.query();
while (ws.next()) {
    awsa.push(ws.user.toString());
    //gs.info(awsa);
}
//gs.info('Work Schedule:' + awsa);
var aol = new global.ArrayUtil().diff(wota, awsa);
//gs.info('On Leave:' + aol);
//gs.info((new global.ArrayUtil().diff(awsa, wota)));
var wot = [];
for (var i = 0; i <= aol.length; i++) {
    var lwot = new GlideRecord('wm_task');
    lwot.addQuery('u_dispatcher', aol[i]);
    lwot.query();
    while (lwot.next()) {
        wot.push(lwot.sys_id.toString());
        //var user = dispatcher(lwot.sys_id);
        //lwot.u_dispatcher = user;
        lwot.work_notes = 'Re-assigned to dispatcher';
        lwot.u_follow_up_reason = 'Re-assigned';
        lwot.update();
    }
}

function _getBeginningDateTime(timezone) {
    var today = gs.beginningOfToday();
    var gdt = new GlideDateTime(today);
    var tz = Packages.java.util.TimeZone.getTimeZone(timezone);
    gdt.setTZ(tz);
    var tzDiff = gdt.getTZOffset() / 1000 / 60 / 60;
    //var bot = gdt.getDisplayValue();
    var bot = gdt.getLocalDate();
    return bot;
}

function _getEndingDateTime(timezone) {
    var today = gs.endOfToday();
    var gdt = new GlideDateTime(today);
    var tz = Packages.java.util.TimeZone.getTimeZone(timezone);
    gdt.setTZ(tz);
    var tzDiff = gdt.getTZOffset() / 1000 / 60 / 60;
    //var bot = gdt.getDisplayValue();
    var bot = gdt.getLocalDate();
    return bot;
}
3 REPLIES 3

ankitkathuria
Tera Contributor

For this, I was planning to introduce this and wanted to check with if this will work:

 

// Get yesterday's date in Nairobi timevar yesterdayNairobi = _getBeginningDateTime('Africa/Nairobi');     yesterdayNairobi.addDaysUTC(-1); // Subtract one day from yesterday in Nairobi time// Get WOs put in pending review after 5 PM yesterday in Nairobi timevar owot = new GlideRecord('wm_task');     owot.addEncodedQuery("state=pending_review^created_on>=@javascript&colon;gs.dateGenerate('Africa/Nairobi','" + yesterdayNairobi.getDisplayValue() + " 17:00:00');@javascript&colon;gs.dateGenerate('Africa/Nairobi','" + yesterdayNairobi.getDisplayValue() + " 17:00:00');"); owot.query();

SalmatO
ServiceNow Employee
ServiceNow Employee

Hello, you need to update the scheduled job to include Work Orders (WOs) that were put in Pending Review past 5 PM the previous day

SalmatO
ServiceNow Employee
ServiceNow Employee

Add a new query to fetch Pending Review WOs updated past 5 PM yesterday.
Convert the sys_updated_on field to Africa/Nairobi timezone to check the hour.
If a WO was moved to Pending Review after 5 PM, it gets re-assigned in the morning.

Keep existing logic for reassigning WOs from dispatchers on leave.