Files
sn/c04afa629713111093a8337e6253af6d/update/sys_script_include_bc225ffb976461105838bfb3f153afee.xml
admin a2ccc083fd Cleaned navigator modules
Implemented 3 types of triggers. Each having their own business rules
Implemented FAProperty script for re-usable properties like tables
Created UI Macro to create new Fulfillment Plan from trigger
2023-02-04 09:02:25 -08:00

145 lines
4.5 KiB
XML

<?xml version="1.0" encoding="UTF-8"?><record_update table="sys_script_include">
<sys_script_include action="INSERT_OR_UPDATE">
<access>public</access>
<active>true</active>
<api_name>x_355681_fa.CoreUtils</api_name>
<caller_access/>
<client_callable>false</client_callable>
<description/>
<name>CoreUtils</name>
<script><![CDATA[var CoreUtils = Class.create();
CoreUtils.prototype = {
initialize: function() {
},
isFA: function(type){
var answer = false;
let bool = false;
switch(type){
case "task":
var taskTriggerGr = new GlideRecord(FAProperty.table.taskTriggerTable);
taskTriggerGr.addQuery("condition_table", current.getTableName());
taskTriggerGr.addActiveQuery();
taskTriggerGr.orderBy("order");
taskTriggerGr.query();
while(taskTriggerGr.next()){
bool = this._isValidTrigger(taskTriggerGr);
if(!bool) continue;
//We have one plan that will run so we return true;
break;
}
break;
case "rp":
var catalog_item = current.getValue('producer');
current = current.task.getRefRecord(); //Need to overwrite current for GlideFilter
//No break cause we continue in the sc case
case "sc":
var scTriggerGr = new GlideRecord(FAProperty.table.scTriggerTable);
scTriggerGr.addQuery("catalog_item", current.cat_item || catalog_item);
scTriggerGr.addActiveQuery();
scTriggerGr.orderBy("order");
scTriggerGr.query();
while(scTriggerGr.next()){
bool = this._isValidTrigger(scTriggerGr);
if(!bool) continue;
//We have one plan that will run so we return true;
break;
}
this.LOG.debug("is it picked up: " + bool);
break;
}
answer = bool
return answer;
},
_isValidTrigger: function(triggerGr){
var answer = true;
var runCondition = triggerGr.getValue("run_if");
if(runCondition){
answer = GlideFilter.checkRecord(current, runCondition);
}
if(!!triggerGr.script_condition && !!answer){ //casting to boolean
var triggerUtils = new TriggerUtils();
answer = triggerUtils.runTriggerScript(triggerGr);
}
//We have one plan that will run so we return true;
return answer;
},
saveProperty: function(property, value){
var answer = false;
var propertyGr = new GlideRecord('sys_properties');
if(propertyGr.get('name', property)){
propertyGr.setValue('value', value);
answer = propertyGr.update();
}
return answer;
},
getCatalogItemTargetTable: function(catalogItemID){
var answer = false;
var catalogItemGr = new GlideRecord('sc_cat_item');
if(catalogItemGr.get(catalogItemID)){
var table = catalogItemGr['ref_' + catalogItemGr.getValue('sys_class_name')].table_name;
answer = table || "sc_req_item";
}
return answer;
},
showUIActionButton: function(table){
var answer = false;
var settings = JSON.parse(gs.getProperty("x_355681_fa.form.admin.settings", "{}"));
if(settings.quickActions){
var tables = [];
var quickActions = settings.quickActions;
if(quickActions.taskUiAction){
var taskActions = quickActions.task;
if(taskActions.allTaskTables){
var taskTables = new GlideTableHierarchy("task");
tables = tables.concat(taskTables.getAllExtensions());
}else{
tables = tables.concat(taskActions.taskRelatedTables);
}
}
if(quickActions.serviceCatalogUiAction){
var serviceCatalogActions = quickActions.serviceCatalog;
if(serviceCatalogActions.allServiceCatalogTables){
var serviceCatalogTables = new GlideTableHierarchy("sc_cat_item");
tables = tables.concat(serviceCatalogTables.getAllExtensions());
}else{
tables = tables.concat(serviceCatalogActions.serviceCatalogRelatedTables);
}
}
gs.info(JSON.stringify(tables))
answer = tables.indexOf(table) > -1;
}
return answer;
},
type: 'CoreUtils'
};
new ProcessorUtils("x_355681_fa").wrapPrototype(CoreUtils.prototype);]]></script>
<sys_class_name>sys_script_include</sys_class_name>
<sys_created_by>admin</sys_created_by>
<sys_created_on>2023-01-29 15:32:58</sys_created_on>
<sys_id>bc225ffb976461105838bfb3f153afee</sys_id>
<sys_name>CoreUtils</sys_name>
<sys_package display_value="Fulfilment Automater" source="x_355681_fa">c04afa629713111093a8337e6253af6d</sys_package>
<sys_policy>read</sys_policy>
<sys_scope display_value="Fulfilment Automater">c04afa629713111093a8337e6253af6d</sys_scope>
<sys_update_name>sys_script_include_bc225ffb976461105838bfb3f153afee</sys_update_name>
</sys_script_include>
</record_update>