Skip to content

Commit f1e32cd

Browse files
authored
Add multiple catalog itemsto order guide (#2285)
* Create UI Action.js * Create UI Page.js * Create Script Include.js * Update UI Page.js * Update UI Action.js * Update Script Include.js * Create README.md * Create Add Multiple Catalog Items to Order Guide * Delete Client-Side Components/UI Pages/Add Multiple Catalog Items to Order Guide * Create README.js * Create UI Page.js * Create UI Action.js * Create Script Include.js * Delete Client-Side Components/UI Pages/Add Multiple Items to Order Guide/README.js * Create README.md * Delete Modern Development/Add Multiple Catalogs to Order Guide directory
1 parent ed50db5 commit f1e32cd

File tree

4 files changed

+125
-0
lines changed

4 files changed

+125
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
**Details**
2+
1. This code will add multiple items in an order guide in single click
3+
2. Order guide rule base creation will be automatic
4+
3. This code will also add variable set to selected catalog items automatically.
5+
6+
**How to use**
7+
1. Go to "sc_cat_item" table and select the items to be added in list view.
8+
2. Look for "Add to order guide" in list actions.
9+
3. The list action will give you an option to select order guide and variable set to be added to catalog items
10+
11+
**Components**
12+
1. UI Action
13+
2. UI Page
14+
3. Script Include
15+
16+
<img width="3442" height="1502" alt="image" src="https://github.com/user-attachments/assets/823efffa-1285-488e-a4a6-ae0e6377001f" />
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
2+
var AddtoOG = Class.create();
3+
AddtoOG.prototype = Object.extendsObject(AbstractAjaxProcessor, {
4+
addToOrderGuide: function() {
5+
var msgArrNotAdded = []; // array to store not added catalog items.
6+
var msgArrAdded = []; // array to store added catalog items.
7+
var msg = '';
8+
var item = this.getParameter('sysparm_itemList').toString().split(',');
9+
var order_guide = this.getParameter('sysparm_og');
10+
var var_set = this.getParameter('sysparm_set');
11+
for (var i = 0; i < item.length; i++) {
12+
var itemName = new GlideRecord('sc_cat_item');
13+
itemName.get(item[i]); // get item name
14+
var itemBckName = itemName.name.toString().replace(/[^a-zA-Z0-9]/g, "_");
15+
// check if item is present in order guide
16+
var checkStatus = new GlideRecord('sc_cat_item_guide_items');
17+
checkStatus.addQuery('guide', order_guide);
18+
checkStatus.addQuery('item', item[i]);
19+
checkStatus.query();
20+
if (checkStatus.next()) {
21+
msgArrNotAdded.push(itemName.name);
22+
} else {
23+
// Add variable set to all catalog items selected
24+
var set = new GlideRecord('io_set_item');
25+
var orderVar = new GlideRecord('item_option_new');
26+
set.initialize();
27+
set.variable_set = var_set;
28+
set.sc_cat_item = item[i];
29+
set.order = '200'; // set order as per your requirement
30+
set.insert();
31+
32+
// Add checkbox variable in order guide for each catalog item
33+
orderVar.initialize();
34+
orderVar.setValue('type', 7);
35+
orderVar.setValue('cat_item', order_guide);
36+
orderVar.setValue('question_text', itemName.name);
37+
orderVar.setValue('name', itemBckName);
38+
orderVar.setValue('order', 1200); // set order as per your requirement
39+
orderVar.insert();
40+
}
41+
42+
// Add rule base to order guide
43+
var ruleBase = new GlideRecord('sc_cat_item_guide_items');
44+
ruleBase.initialize();
45+
ruleBase.setValue('item', item[i]);
46+
ruleBase.setValue('guide', order_guide);
47+
ruleBase.setValue('condition', 'IO:' + orderVar.sys_id + '=true^EQ');
48+
ruleBase.insert();
49+
msgArrAdded.push(itemName.name);
50+
}
51+
if (msgArrNotAdded.length > 0) {
52+
msg = "Not added item are " + msgArrNotAdded + ' Added Items are ' + msgArrAdded; // array of items which are not added
53+
} else
54+
msg = 'Added Items are ' + msgArrAdded; // array of added items
55+
return msg;
56+
},
57+
type: 'AddtoOG'
58+
});
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
/*
3+
onClick function name : addToOrderGuide
4+
The UI action will prompt UI page to select order guide and variable set.
5+
*/
6+
function addToOrderGuide() {
7+
var items = g_list.getChecked();
8+
var dialog = new GlideDialogWindow("add_to_og"); // UI page name
9+
dialog.setTitle("Select Order Guide and Variable Set"); // Prompt title.
10+
dialog.setPreference("items", items);
11+
dialog.render();
12+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
3+
<g:evaluate var="jvar_items" expression="RP.getWindowProperties().get('items')" />
4+
<hr>
5+
</hr>
6+
<!--Select Order Guide Name-->
7+
<label>Select Order Guide</label>
8+
<g:ui_reference name="order_guide" id="order_guide" table="sc_cat_item_guide" completer="AJAXTableCompleter" style="width:180px" />
9+
<hr>
10+
</hr>
11+
<hr>
12+
</hr>
13+
<!--Select varaible set name -->
14+
<label>Select Variable Set</label>
15+
<g:ui_reference name="var_set" id="var_set" table="item_option_new_set" completer="AJAXTableCompleter" style="width:180px" />
16+
<hr>
17+
</hr>
18+
<button style="margin-top:4px;background-color:crimson;color:white" onclick="addItems('${jvar_items}')"> Add to Order Guide</button>
19+
</j:jelly>
20+
21+
//Client Script of UI page
22+
23+
function addItems(catItems) {
24+
var og = document.getElementById("order_guide").value;
25+
var varSet = document.getElementById("var_set").value;
26+
27+
var orderG = new GlideAjax('AddtoOG');
28+
orderG.addParam('sysparm_name', 'addToOrderGuide');
29+
orderG.addParam('sysparm_itemList', catItems);
30+
orderG.addParam('sysparm_og', og);
31+
orderG.addParam('sysparm_set', varSet);
32+
orderG.getXML(addOrderGuide);
33+
}
34+
35+
function addOrderGuide(response) {
36+
var answer = response.responseXML.documentElement.getAttribute("answer");
37+
alert(answer);
38+
GlideDialogWindow.get().destroy();
39+
}

0 commit comments

Comments
 (0)