The CreatorCon Call for Content is officially open! Get started here.

PA Script not behaving as expected

Renita
Tera Expert

I have a PA Script that is not behaving as expected.  I call the same function multiple times.  If I comment out the code and just call it once, it works perfectly.  It is when I call it multiple times that the trouble begins.  When I call it the second time and subsequent times after that, the numbers it returns are exponentially higher than they should be.  Does anyone know why this would be?  Any of the scenarios if I call the function individually work properly, just not in combination with each other.  Your help is greatly appreciated.

 

var directreports = function(x, y) {
    var ga = new GlideAggregate('sys_user');
    ga.addAggregate('COUNT', y.toString());
    ga.addQuery('active''=''true');
    ga.addQuery('u_outsourced''=''false');
    ga.addNotNullQuery('employee_number');
    ga.addNotNullQuery('email');
    ga.addNotNullQuery('first_name');
    ga.addQuery(y.toString(), '=', x);
    ga.query();
    if (ga.next()) {
        return ga.getAggregate('COUNT', y.toString());
    } else return 0;
}
directreports();

var CIODirectsReports = function() {
    var mgr = current.sys_id;
    var level = 'manager';
    var peoplecount = directreports(mgr, level);
    level = 'manager.manager';
    var peoplecount2 = directreports(mgr, level);
    level = 'manager.manager.manager';
    var peoplecount3 = directreports(mgr, level);
    level = 'manager.manager.manager.manager';
    var peoplecount4 = directreports(mgr, level);
    level = 'manager.manager.manager.manager.manager';
    var peoplecount5 = directreports(mgr, level);
    level = 'manager.manager.manager.manager.manager.manager';
    var peoplecount6 = directreports(mgr, level);
    level = 'manager.manager.manager.manager.manager.manager.manager';
    var peoplecount7 = directreports(mgr, level);
    level = 'manager.manager.manager.manager.manager.manager.manager.manager';
    var peoplecount8 = directreports(mgr, level);
    level = 'manager.manager.manager.manager.manager.manager.manager.manager.manager';
    var peoplecount9 = directreports(mgr, level);
    level = 'manager.manager.manager.manager.manager.manager.manager.manager.manager.manager';
    var peoplecount10 = directreports(mgr, level);
    var totalcount = peoplecount + peoplecount2 + peoplecount3 + peoplecount4 + peoplecount5 + peoplecount6 + peoplecount7; // + peoplecount8 + peoplecount9 + peoplecount10;
    return totalcount;

}


CIODirectsReports();
1 ACCEPTED SOLUTION

Seems the issue was the way I was adding.  I was concatenating rather than adding.  This worked!  

var CIODirectsReports = function() {
    var mgr = current.sys_id;
    var level = 'manager';
    var peoplecount = parseInt(directreports(mgr, level));
    level = 'manager.manager';
    var peoplecount2 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager';
    var peoplecount3 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager';
    var peoplecount4 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager';
    var peoplecount5 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager';
    var peoplecount6 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager.manager';
    var peoplecount7 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager.manager.manager';
    var peoplecount8 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager.manager.manager.manager';
    var peoplecount9 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager.manager.manager.manager.manager';
    var peoplecount10 = parseInt(directreports(mgr, level));
var totalcount = (peoplecount + peoplecount2 + peoplecount3 + peoplecount4 + peoplecount5 + 
    peoplecount6 + peoplecount7 + peoplecount8 + peoplecount9 + peoplecount10.toString();

 

View solution in original post

2 REPLIES 2

Tushar
Kilo Sage
Kilo Sage

Hi @Renita ,

 

can you please try the below code -

var directreports = function(x, y) {
var ga = new GlideAggregate('sys_user');
ga.addAggregate('COUNT', y.toString());
ga.addQuery('active', '=', 'true');
ga.addQuery('u_outsourced', '=', 'false');
ga.addNotNullQuery('employee_number');
ga.addNotNullQuery('email');
ga.addNotNullQuery('first_name');
ga.addQuery(y.toString(), '=', x);
ga.query();
ga.clear();
if (ga.next()) {
return ga.getAggregate('COUNT', y.toString());
} else return 0;
}

var CIODirectsReports = function() {
var mgr = current.sys_id;
var levels = [
'manager',
'manager.manager',
'manager.manager.manager',
'manager.manager.manager.manager',
'manager.manager.manager.manager.manager',
'manager.manager.manager.manager.manager.manager',
'manager.manager.manager.manager.manager.manager.manager',
'manager.manager.manager.manager.manager.manager.manager.manager',
'manager.manager.manager.manager.manager.manager.manager.manager.manager',
'manager.manager.manager.manager.manager.manager.manager.manager.manager.manager'
];

var totalcount = 0;
for (var i = 0; i < levels.length; i++) {
var peoplecount = directreports(mgr, levels[i]);
totalcount += peoplecount;
}

return totalcount;
}

CIODirectsReports();


Please, don't forget to mark my answer as correct if it solves your issue or mark it as helpful if it is relevant for you!

Regards,
Tushar

Seems the issue was the way I was adding.  I was concatenating rather than adding.  This worked!  

var CIODirectsReports = function() {
    var mgr = current.sys_id;
    var level = 'manager';
    var peoplecount = parseInt(directreports(mgr, level));
    level = 'manager.manager';
    var peoplecount2 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager';
    var peoplecount3 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager';
    var peoplecount4 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager';
    var peoplecount5 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager';
    var peoplecount6 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager.manager';
    var peoplecount7 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager.manager.manager';
    var peoplecount8 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager.manager.manager.manager';
    var peoplecount9 = parseInt(directreports(mgr, level));
    level = 'manager.manager.manager.manager.manager.manager.manager.manager.manager.manager';
    var peoplecount10 = parseInt(directreports(mgr, level));
var totalcount = (peoplecount + peoplecount2 + peoplecount3 + peoplecount4 + peoplecount5 + 
    peoplecount6 + peoplecount7 + peoplecount8 + peoplecount9 + peoplecount10.toString();