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
This commit is contained in:
admin
2023-02-04 09:02:25 -08:00
parent dc8bc52dae
commit a2ccc083fd
27 changed files with 960 additions and 121 deletions

View File

@ -9,35 +9,96 @@
<name>CoreUtils</name>
<script><![CDATA[var CoreUtils = Class.create();
CoreUtils.prototype = {
initialize: function() {
},
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 = [];
@ -63,11 +124,11 @@ CoreUtils.prototype = {
gs.info(JSON.stringify(tables))
answer = tables.indexOf(table) > -1;
}
return answer;
},
type: 'CoreUtils'
type: 'CoreUtils'
};
new ProcessorUtils("x_355681_fa").wrapPrototype(CoreUtils.prototype);]]></script>
<sys_class_name>sys_script_include</sys_class_name>