Name
global.RollupAPI
Description
Rollup API for planned task rollups
Script
var RollupAPI = Class.create();
RollupAPI.prototype = {
ROLLUP_CHILD_TABLE: "child",
ROLLUP_CHILD_FIELD: "field",
ROLLUP_PARENT_TABLE: "parent",
ROLLUP_PARENT_NAVIGATOR: "navigator",
ROLLUP_FLAG: "rollup",
initialize: function() {
},
rollup: function(taskRecord, rollupColumn, isAverage) {
//gs.info("Into rollup of Task: " + taskRecord.getValue("short_description") + " for column: " + rollupColumn);
var rollupConfigs = this.rollupConfigs(taskRecord.getTableName(), rollupColumn);
if(rollupConfigs.next()) {
if (JSUtil.getBooleanValue(rollupConfigs,this.ROLLUP_FLAG)) {
var parent = rollupConfigs.getValue(this.ROLLUP_PARENT_NAVIGATOR);
if ( JSUtil.nil(parent) )
parent = 'planned_task';
this.processRollup(taskRecord, rollupConfigs.getValue(this.ROLLUP_PARENT_TABLE), parent, rollupColumn, isAverage);
}
} else {
var parent_className = taskRecord.parent.sys_class_name;
this.processRollup(taskRecord, parent_className, "parent", rollupColumn, isAverage);
}
},
rollupConfigs: function(tableName, rollupColumn) {
var gr = new GlideRecord("planned_task_rollup");
gr.addQuery(this.ROLLUP_CHILD_TABLE, tableName);
gr.addQuery(this.ROLLUP_CHILD_FIELD, rollupColumn);
gr.addQuery(this.ROLLUP_PARENT_NAVIGATOR, 'parent');
gr.query();
return gr;
},
processRollup: function(taskRecord, parentTable, parentNavigator, rollupColumn, isAverage) {
var rollupStrategy = new RollupStrategy();
var rollupHandler = rollupStrategy.getRollupHandler(rollupColumn);
rollupHandler.handle(taskRecord, parentTable, parentNavigator, rollupColumn, isAverage);
},
type: 'RollupAPI'
};
Sys ID
685f15219f230200598a5bb0657fcf3f