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

Offical Documentation

Official Docs: