UI Action condition to show button when user is delegate of assigned to

Jeff Krueger1
Tera Expert

I am trying to show an "Implement" UI Action button on a Change request to either an admin, the user that is the current assigned to, or a user who is the delegate of the current assigned to.   I tried using the getMyAssignments() function from the getMyApprovals business rule, but I'm not able to get it to work properly.   What do I need to add to this condition statement to allow for delegates to see/invoke the button:

(gs.hasRole('admin') || current.assigned_to == gs.getUserID())

1 ACCEPTED SOLUTION

The following changes ended up with a workable solution!   Here is the UI Action condition: new isDelegate().delegatecheck(current.assigned_to))



Script Include:



var isDelegate = Class.create();


isDelegate.prototype = {


initialize: function() {


},


delegatecheck : function (serOwnrVal){


var grDelegate = new GlideRecord("sys_user_delegate");


grDelegate.addQuery("user", serOwnrVal);


grDelegate.addQuery("delegate", gs.getUserID());


grDelegate.addQuery("assignments", "true");


grDelegate.addQuery("starts", "<=", gs.daysAgo(0));


grDelegate.addQuery("ends", ">=", gs.daysAgo(0));


grDelegate.query();


{


if(grDelegate.next()){


answer = true;


return answer;


}


else{


answer = false;


return answer;


}


}


},


type: 'isDelegate'


};


View solution in original post

13 REPLIES 13

Is there another UI Action on this table (or task) that has the same "Action Name"?


No, the action name is unique on both the change_request and task table (state_model_move_to_implement).


The following changes ended up with a workable solution!   Here is the UI Action condition: new isDelegate().delegatecheck(current.assigned_to))



Script Include:



var isDelegate = Class.create();


isDelegate.prototype = {


initialize: function() {


},


delegatecheck : function (serOwnrVal){


var grDelegate = new GlideRecord("sys_user_delegate");


grDelegate.addQuery("user", serOwnrVal);


grDelegate.addQuery("delegate", gs.getUserID());


grDelegate.addQuery("assignments", "true");


grDelegate.addQuery("starts", "<=", gs.daysAgo(0));


grDelegate.addQuery("ends", ">=", gs.daysAgo(0));


grDelegate.query();


{


if(grDelegate.next()){


answer = true;


return answer;


}


else{


answer = false;


return answer;


}


}


},


type: 'isDelegate'


};


Tim Deniston
Mega Sage
Mega Sage

The getMyAssignments function is a good start, but you would want to add 'g.addQuery("user", current.assigned_to);' and maybe adjust 'g.addQuery("assignments", "true");' if necessary.