How to implement manager's manager as approver has VP in title?

kambleneeta20
Giga Expert

Hi,

I wants to implement below request in catalog item -

Requirement is : it should go for the requester's VP approval, but VP's level is not defined and sure .

There is a title field in which "VP" is mention.

It can be   - >

requester -> Manager (Title is VP)

requester -> manager -> manager (Title is VP)

requester- > Manager -> Manger -> manager (Title is VP).

Could you please suggest ?

8 REPLIES 8

Hi Neeta,



Here you go



var answer=[];


answer.push(findVP(current.variables.u_requester.toString());


function findVP(id){


var gr= new GlideRecord("sys_user");


gr.get(id);


if(!gr.manager.nil()){


if(gr.manager.title=="VP"){


return gr.getValue('manager');


}


else{


return findVP(gr.getValue("manager"));


}


}


return '';


}


jagarnathn
Tera Expert

Hi Neeta,



As Chuck suggested, you should use an recursive function in order to achieve this.




var maxLevels = 5;


requestor=current.variables.requestor;


var manager="";




var gr= new GlideRecord('sys_user');


gr.get('sys_id', requestor);


gr.query();


if(gr.next()){




manager=gr.manager;




if(manager)




var vptitle= getmanagerstitle(manager, maxlevels);










}




answer=vptitle;






  function getmanagerstitle(mgr,levels){




 


  var gr1= new GlideRecord('sys_user');


    gr1.get('sys_id',mgr);


    gr1.query();


if(gr1.next()){




if (gr1.title=="VP"){




  return gr.sys_id;




else{


    return getmanagertittle(mgr+".manager",(levels-1));


}




}




}


}






Thanks,


Jagarnath


FYI: you do not need gr.query() and gr.next() when you are using gr.get()


Liju John1
Mega Guru
//requestor='userName';
requestor=gs.getUserName();
var manager="";
var usr= new GlideRecord('sys_user');
usr.get('user_name', requestor);
usr.query();
if(usr.next()){
manager=usr.manager;
if(manager)
var myVPemail= getmanagerstitle(manager);
gs.print(myVPemail +" is the VP");
}
//answer=myVPemail;

function getmanagerstitle(mgr,levels){
var usr= new GlideRecord('sys_user');
usr.get('sys_id',mgr);
usr.query();
if(usr.next()){
var isVP = usr.title.indexOf("VP, ");
if (isVP == 0){
gs.print(usr.email +" - "+usr.title);
return usr.email;
}
else{
gs.print(usr.email +" - "+usr.title);
return getmanagerstitle(usr.manager);
}
}
}