Get a first look at what's coming. The Developer Passport Australia Release Preview kicks off March 12. Dive in! 

How to fetch the items from Order guide

GBS
Tera Contributor

I'm using the below script to get the catalog items based on the conditions, but it is getting errors when I run the script in the background script. Can anyone help me in script correction

 

var orderGuideSysId = ' '; //sys_id of the order guide
var itemSysIds = [];

var grItems = new GlideRecord('sc_cat_item_guide_items');
grItems.addQuery('sc_cat_item_guide', orderGuideSysId);
grItems.query();

while (grItems.next()) {
    if (grItems.sc_cat_item.sys_id) {
        itemSysIds.push(grItems.sc_cat_item.sys_id.toString());
    }
}

if (itemSysIds.length > 0) {
    var grScReqItem = new GlideRecord('sc_req_item');
    var itemQuery = "cat_itemIN" + itemSysIds.join(',');
    grScReqItem.addEncodedQuery(itemQuery + "^stateNOT IN3,4,7");
    grScReqItem.orderByDesc('assignment_group');
    grScReqItem.query();

    if (grScReqItem.next()) {
        answer = true;
    } else {
        answer = false;
    }
} else {
    answer = false;
}

 

1 ACCEPTED SOLUTION

Brad Bowman
Mega Patron

This is a good start, but on the sc_cat_item_guide_items table the field name for the order guide is 'guide' not 'sc_cat_item_guide' and the catalog item is 'item' not 'sc_cat_item', so this script will work in background:

var answer = false;
var orderGuideSysId = 'b8920108db301010a918196c29961914'; //sys_id of the order guide
var itemSysIds = [];

var grItems = new GlideRecord('sc_cat_item_guide_items');
grItems.addQuery('guide', orderGuideSysId);
grItems.query();

while (grItems.next()) {
    if (grItems.item) {
        itemSysIds.push(grItems.item.toString());
    }
}

if (itemSysIds.length > 0) {
    var grScReqItem = new GlideRecord('sc_req_item');
    var itemQuery = "cat_itemIN" + itemSysIds.join(',');
    grScReqItem.addEncodedQuery(itemQuery + "^stateNOT IN3,4,7");
    grScReqItem.orderByDesc('assignment_group');
    grScReqItem.query();

    if (grScReqItem.next()) {
        answer = true;
    } else {
        answer = false;
    }
} else {
    answer = false;
}
gs.print(answer);

View solution in original post

1 REPLY 1

Brad Bowman
Mega Patron

This is a good start, but on the sc_cat_item_guide_items table the field name for the order guide is 'guide' not 'sc_cat_item_guide' and the catalog item is 'item' not 'sc_cat_item', so this script will work in background:

var answer = false;
var orderGuideSysId = 'b8920108db301010a918196c29961914'; //sys_id of the order guide
var itemSysIds = [];

var grItems = new GlideRecord('sc_cat_item_guide_items');
grItems.addQuery('guide', orderGuideSysId);
grItems.query();

while (grItems.next()) {
    if (grItems.item) {
        itemSysIds.push(grItems.item.toString());
    }
}

if (itemSysIds.length > 0) {
    var grScReqItem = new GlideRecord('sc_req_item');
    var itemQuery = "cat_itemIN" + itemSysIds.join(',');
    grScReqItem.addEncodedQuery(itemQuery + "^stateNOT IN3,4,7");
    grScReqItem.orderByDesc('assignment_group');
    grScReqItem.query();

    if (grScReqItem.next()) {
        answer = true;
    } else {
        answer = false;
    }
} else {
    answer = false;
}
gs.print(answer);