diff --git a/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/README.md b/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/README.md new file mode 100644 index 0000000000..abae7b1e1c --- /dev/null +++ b/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/README.md @@ -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 + +image diff --git a/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/Script Include.js b/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/Script Include.js new file mode 100644 index 0000000000..e4b73f56cf --- /dev/null +++ b/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/Script Include.js @@ -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' +}); diff --git a/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/UI Action.js b/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/UI Action.js new file mode 100644 index 0000000000..199133250c --- /dev/null +++ b/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/UI Action.js @@ -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(); +} diff --git a/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/UI Page.js b/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/UI Page.js new file mode 100644 index 0000000000..dd9cf1fe67 --- /dev/null +++ b/Client-Side Components/UI Pages/Add Multiple Items to Order Guide/UI Page.js @@ -0,0 +1,39 @@ + + + +
+ + + + +
+ +
+ + + + +
+ + +
+ +//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(); +}