Name

global.PortfolioMetaData

Description

Metadata for portfolio workbench

Script

var PortfolioMetaData = Class.create();
PortfolioMetaData.prototype = {
  initialize: function(sysClassName, context) {
      this.sysClassName = sysClassName;
      this.context = context;
  },
  
  metadata: function(portfolioId, fiscalYearId) {
      if(!PmRecordAccessHelper.canReadRecord(this.sysClassName, portfolioId)) {
          return {status: 'error', message: "User doesnot have access to the record"};
      }
      var metadata = this.baseMetadata();
      if ( GlidePluginManager.isActive('com.snc.financial_planning_pmo') ) 
          return this.financialMetadata(portfolioId, metadata, fiscalYearId);
      else 
          return metadata;
  },
  
  financialMetadata: function(portfolioId, metadata, fiscalYearId) {
      var funding = {}, sYear = 0, sMonth = 0, sDate = 0, eYear = 0, eMonth = 0, eDate = 0;
      if ( fiscalYearId == 'all' )
          funding = {allocated: true, isPlanned: true};
      else {
          var f = (new PPMProjectFunding()).findOrCreateFundingRecordForPortfolio(portfolioId, fiscalYearId);
          funding.allocated = f.allocated();
          funding.isPlanned = f.isPlanned();
      }
      metadata.isPlanned = funding.isPlanned;
      metadata.allocated = funding.allocated;
      metadata.currencySymbol = PPMCurrencyHelper.defaultCurrencySymbol();

      if(fiscalYearId != 'all') {
          var fiscalYearGr = new GlideRecord('fiscal_period');
          if(fiscalYearGr.get(fiscalYearId)) {
              metadata.fiscal_start_date_time = fiscalYearGr.getValue('start_date_time');
              sYear  = parseInt(metadata.fiscal_start_date_time.substr(0, 4), 10);
              sMonth = parseInt(metadata.fiscal_start_date_time.substr(4, 2), 10) - 1;
              sDate  = parseInt(metadata.fiscal_start_date_time.substr(6, 2), 10);
              metadata.fiscal_end_date_time = fiscalYearGr.getValue('end_date_time');
              eYear  = parseInt(metadata.fiscal_end_date_time.substr(0, 4), 10);
              eMonth = parseInt(metadata.fiscal_end_date_time.substr(4, 2), 10) - 1;
              eDate  = parseInt(metadata.fiscal_end_date_time.substr(6, 2), 10);
              
              metadata.fiscal_start_date_time = new Date(sYear, sMonth, sDate, 0, 0, 0).getTime();
              metadata.fiscal_end_date_time   = new Date(eYear, eMonth, eDate, 23, 59, 59).getTime();
          }
      }

      return metadata;
  },
  
  baseMetadata: function() {
      gs.log("PortfolioMetaData : " + this.sysClassName);
      var columnConfig = (new SNC.PlannedTaskAPI()).entityMetadata(this.sysClassName, this.context);
      columnConfig = (new JSON()).decode(columnConfig);
      return {
          columnConfig: columnConfig,
          timeZone: gs.getUser().getTZ(),
          financeEnabled: GlidePluginManager.isActive('com.snc.financial_planning_pmo'),
  		dateFormat: gs.getDateFormat(),
  		dateTimeFormat: gs.getDateTimeFormat(),
          status: 'success'
      };
  },
  
  type: 'PortfolioMetaData'
};

Sys ID

ef45d3418720020028d7db5eb2e3ec1c

Offical Documentation

Official Docs: