Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
**Details**
1. This code will add multiple items in an order guide in single click
2. Order guide rule base creation will be automatic
3. This code will also add variable set to selected catalog items automatically.

**How to use**
1. Go to "sc_cat_item" table and select the items to be added in list view.
2. Look for "Add to order guide" in list actions.
3. The list action will give you an option to select order guide and variable set to be added to catalog items

**Components**
1. UI Action
2. UI Page
3. Script Include

<img width="3442" height="1502" alt="image" src="https://github.com/user-attachments/assets/823efffa-1285-488e-a4a6-ae0e6377001f" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@

var AddtoOG = Class.create();
AddtoOG.prototype = Object.extendsObject(AbstractAjaxProcessor, {
addToOrderGuide: function() {
var msgArrNotAdded = []; // array to store not added catalog items.
var msgArrAdded = []; // array to store added catalog items.
var msg = '';
var item = this.getParameter('sysparm_itemList').toString().split(',');
var order_guide = this.getParameter('sysparm_og');
var var_set = this.getParameter('sysparm_set');
for (var i = 0; i < item.length; i++) {
var itemName = new GlideRecord('sc_cat_item');
itemName.get(item[i]); // get item name
var itemBckName = itemName.name.toString().replace(/[^a-zA-Z0-9]/g, "_");
// check if item is present in order guide
var checkStatus = new GlideRecord('sc_cat_item_guide_items');
checkStatus.addQuery('guide', order_guide);
checkStatus.addQuery('item', item[i]);
checkStatus.query();
if (checkStatus.next()) {
msgArrNotAdded.push(itemName.name);
} else {
// Add variable set to all catalog items selected
var set = new GlideRecord('io_set_item');
var orderVar = new GlideRecord('item_option_new');
set.initialize();
set.variable_set = var_set;
set.sc_cat_item = item[i];
set.order = '200'; // set order as per your requirement
set.insert();

// Add checkbox variable in order guide for each catalog item
orderVar.initialize();
orderVar.setValue('type', 7);
orderVar.setValue('cat_item', order_guide);
orderVar.setValue('question_text', itemName.name);
orderVar.setValue('name', itemBckName);
orderVar.setValue('order', 1200); // set order as per your requirement
orderVar.insert();
}

// Add rule base to order guide
var ruleBase = new GlideRecord('sc_cat_item_guide_items');
ruleBase.initialize();
ruleBase.setValue('item', item[i]);
ruleBase.setValue('guide', order_guide);
ruleBase.setValue('condition', 'IO:' + orderVar.sys_id + '=true^EQ');
ruleBase.insert();
msgArrAdded.push(itemName.name);
}
if (msgArrNotAdded.length > 0) {
msg = "Not added item are " + msgArrNotAdded + ' Added Items are ' + msgArrAdded; // array of items which are not added
} else
msg = 'Added Items are ' + msgArrAdded; // array of added items
return msg;
},
type: 'AddtoOG'
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

/*
onClick function name : addToOrderGuide
The UI action will prompt UI page to select order guide and variable set.
*/
function addToOrderGuide() {
var items = g_list.getChecked();
var dialog = new GlideDialogWindow("add_to_og"); // UI page name
dialog.setTitle("Select Order Guide and Variable Set"); // Prompt title.
dialog.setPreference("items", items);
dialog.render();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<g:evaluate var="jvar_items" expression="RP.getWindowProperties().get('items')" />
<hr>
</hr>
<!--Select Order Guide Name-->
<label>Select Order Guide</label>
<g:ui_reference name="order_guide" id="order_guide" table="sc_cat_item_guide" completer="AJAXTableCompleter" style="width:180px" />
<hr>
</hr>
<hr>
</hr>
<!--Select varaible set name -->
<label>Select Variable Set</label>
<g:ui_reference name="var_set" id="var_set" table="item_option_new_set" completer="AJAXTableCompleter" style="width:180px" />
<hr>
</hr>
<button style="margin-top:4px;background-color:crimson;color:white" onclick="addItems('${jvar_items}')"> Add to Order Guide</button>
</j:jelly>

//Client Script of UI page

function addItems(catItems) {
var og = document.getElementById("order_guide").value;
var varSet = document.getElementById("var_set").value;

var orderG = new GlideAjax('AddtoOG');
orderG.addParam('sysparm_name', 'addToOrderGuide');
orderG.addParam('sysparm_itemList', catItems);
orderG.addParam('sysparm_og', og);
orderG.addParam('sysparm_set', varSet);
orderG.getXML(addOrderGuide);
}

function addOrderGuide(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
GlideDialogWindow.get().destroy();
}
Loading