Name
global.FixProgramPortfolioIndex
Description
No description available
Script
var FixProgramPortfolioIndex = Class.create();
FixProgramPortfolioIndex.prototype = {
initialize: function() {
},
uniqueValues: function(table, column, filterQuery) {
// //gs.info("Into uniqueValues: " + table + "-" + column + "-" + filterQuery);
var uniqueIds = [];
var unique = new GlideAggregate(table);
unique.addAggregate('COUNT', column);
unique.setGroup(true);
unique.groupBy(column);
if(JSUtil.notNil(filterQuery));
unique.addEncodedQuery(filterQuery);
unique.query();
//gs.info("uniqueValues Query: " + unique.getEncodedQuery());
while(unique.next()) {
uniqueIds.push(unique.getValue(column));
}
return uniqueIds;
},
contextRows: function(table, filterQuery, orderBy) {
// //gs.info("Into contextRows: " + table + "-" + filterQuery + "-" + orderBy);
var gr = new GlideRecord(table);
gr.addEncodedQuery(filterQuery);
gr.orderBy(orderBy);
gr.query();
//gs.info("contextRows Query: " + gr.getEncodedQuery());
return gr;
},
updateIndexes: function(table, context, contextId, groupBy, orderBy) {
// //gs.info("Into updateIndexs: " + table + "-" + context + "-" + contextId + "-" + orderBy);
var count = 1;
var filterQuery = context + "=" +contextId;
var fiscalYearIds = this.uniqueValues(table, groupBy, filterQuery);
for (var i = 0; i < fiscalYearIds.length; i++) {
var contextFilterQuery = filterQuery + "^" + groupBy + "=" + fiscalYearIds[i];
var contextRows = this.contextRows(table, contextFilterQuery, orderBy);
while(contextRows.next()) {
contextRows[context] = count;
contextRows.setWorkflow(false);
contextRows.update();
count += 1;
}
};
},
fixIndexes: function() {
// //gs.info("Into fixIndexes");
var table = "project_funding";
var groupBy = "fiscal_period";
this.fixProgramIndexes(table, groupBy);
this.fixPortfolioIndexes(table, groupBy);
},
fixProgramIndexes: function(table, groupBy) {
// //gs.info("Into fixProgramIndexes");
var context = "program";
var programIds = this.uniqueValues(table, context);
//gs.info("programIds: " + programIds.join(","));
for (var i = 0; i < programIds.length; i++) {
this.updateIndexes(table, context, programIds[i], groupBy, "program_index");
}
},
fixPortfolioIndexes: function(table, groupBy) {
// //gs.info("Into fixPortfolioIndexes");
var context = "portfolio";
var portfolioIds = this.uniqueValues(table, context);
//gs.info("portfolioIds: " + portfolioIds.join(","));
for (var i = 0; i < portfolioIds.length; i++) {
this.updateIndexes(table, context, portfolioIds[i], groupBy, "portfolio_index");
}
},
type: 'FixProgramPortfolioIndex'
};
Sys ID
c8862ade9f231200598a5bb0657fcf9c