Name

global.CostRollupHandler

Description

No description available

Script

var CostRollupHandler = Class.create();
CostRollupHandler.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 value = this.aggregateCost(rollupStructure, rollupColumn, isAverage);
      // TODO: Check if the Table <fm_expense_line> Exists! And Fallback Scenarios
      if(value) {
          var parentTaskRecord = new GlideRecord(parentTable);
          if( parentTable.get(parentSysId) ) {
              parentTaskRecord.setValue(rollupColumn, value);
              parentTaskRecord.update();    
          }
      }
  },

  aggregateCost: function(rollupStructure, rollupColumn, isAverage) {
      var aggregationHelper = new AggregationHelper();
      return aggregationHelper.aggregateFloat(rollupStructure, rollupColumn, isAverage);
  },

  type: 'CostRollupHandler'
};

Sys ID

887a65619f230200598a5bb0657fcfee

Offical Documentation

Official Docs: