Name
global.SimpleRollupHandler
Description
No description available
Script
var SimpleRollupHandler = Class.create();
SimpleRollupHandler.prototype = {
initialize: function() {
},
handle: function(childRecord, parentTable, parentNavigator, rollupColumn, isAverage) {
var rollupStructureLoader = new RollupStructureLoader();
var parentSysId = childRecord.getValue(parentNavigator);
var rollupStructure = rollupStructureLoader.loadStructure(childRecord,
rollupColumn, parentNavigator, parentSysId);
this.updateParent(parentTable, parentSysId,
rollupStructure, childRecord.getTableName(), rollupColumn, isAverage);
},
updateParent: function(parentTable, parentSysId, rollupStructure, childTable, rollupColumn, isAverage) {
var dictionaryHelper = new DictionaryHelper();
var element = dictionaryHelper.getElement(childTable, rollupColumn);
var value = this.aggregateValueByType(rollupStructure, rollupColumn, element, isAverage);
if( null != value) {
var parentTaskRecord = new GlideRecord(parentTable);
//gs.info("Updating Parent Table: " + parentTable + " for Sys Id: " + parentSysId +
// " For Rollup Column: " + rollupColumn + " with value : " + value);
if( parentTaskRecord.get(parentSysId) ) {
parentTaskRecord.setValue(rollupColumn, value);
parentTaskRecord.update();
parentTaskRecord.get(parentSysId); // re-get the record and
//gs.info( "Updated: " + parentTaskRecord.getValue("sys_id") + " -> " + rollupColumn + " -> " + value);
}
}
},
aggregateValueByType: function(rollupStructure, childField, element, isAverage) {
if(element && rollupStructure) {
var aggregationHelper = new AggregationHelper();
if("integer".equals(element) || "long".equals(element)) {
return aggregationHelper.aggregateInteger(rollupStructure, childField);
} else if("glide_duration".equals(element)) {
return aggregationHelper.aggregateDuration(rollupStructure, childField);
} else {
// aggregate it as float
return aggregationHelper.aggregateFloat(rollupStructure, childField, isAverage);
}
}
},
type: 'SimpleRollupHandler'
};
Sys ID
ed6925619f230200598a5bb0657fcfb4