I want add current demand assignment group members into approvers tab available in the related list?

Shantharao
Kilo Sage

Hello All,

I want add current demand assignment group members into approvers tab which is available in the related list of current demand? 

Please have a look into screen shot highlighted in red color.

I have selected current assignment group as "Cab Approval", It contains 15 group members, so I want insert all 15 members into below approvers tab(on insert or update), If I changed current assignment group to other group immediately I want remove previous group members and need to insert new group members    

 

find_real_file.png

 

I have written below code but its not working as expected 

 

(function executeRule(current, previous /*null when async*/) {


gs.addInfoMessage("sarting");
var grMember = new GlideRecord("sys_user_grmember");
grMember.addQuery("user","!=","NULL");
grMember.addQuery("group",current.assignment_group);
grMember.query();
while(grMember.next())
{

var ins = new GlideRecord("sysapproval_approver");

ins.query();
while(ins.next())
{
gs.addInfoMessage(grMember.user.getDisplayValue());
gs.addInfoMessage("inside while");
ins.initialize();
ins.sysapproval = current.number;
ins.state = "not requested";
ins.approver = grMember.user;
ins.insert();
gs.addInfoMessage("last");
}
}

})(current, previous); 

 

 

Many Thanks  

 

 

1 ACCEPTED SOLUTION

Shantharao
Kilo Sage

The below code is working fine 

total three scenarios

 

1.if current.assignment group is not null I want add approvers into approvers tab

2.if current.assignment group is null and previous.current.assignment group is not null I want delete approvers from the tab

3.if current.assignment group is not null and previous.assignment group is not null I want delete previous group members from the approvers tab and add newly added current.assignment group members into approvers tab.

 

The last scenario is not working as expected I have highlighted in the bold , I think i need to change the conditions can any one help me

 

Business Rule

 

(function executeRule(current, previous /*null when async*/) {


if(( current.assignment_group.nil() || current.assignment_group != null || current.assignment_group == "") && !previous.assignment_group.nil() ) //
{
gs.addInfoMessage("delete operatiop");
var obj1 = new AddApproversForDemand();
obj1.deleting(current.assignment_group,current.sys_id);
}

else if(!current.assignment_group.nil() && previous.assignment_group.nil() )
{
gs.addInfoMessage("running");
var obj = new AddApproversForDemand();
obj.adding(current.assignment_group,current.sys_id);
}

else if(!current.assignment_group.nil() && !previous.assignment_group.nil()) {
gs.addInfoMessage("deleting & adding ");
var obj2 = new AddApproversForDemand();
obj2.deleting(current.assignment_group,current.sys_id);
obj2.adding(current.assignment_group,current.sys_id);
}


})(current, previous);

 

 

 

 

Script Include

 

var AddApproversForDemand = Class.create();
AddApproversForDemand.prototype = {
initialize: function() {
},

adding: function(assGrp,sysId){
gs.log("starting","harish");
var grMember = new GlideRecord("sys_user_grmember");
//grMember.addQuery("user","!=","NULL");
grMember.addQuery("group",assGrp);
gs.log("chk","harish");
grMember.query();
while(grMember.next())
{
var ins = new GlideRecord("sysapproval_approver");
gs.log("inside aprover","harish");
gs.log(grMember.user.getDisplayValue(),"harish");
ins.initialize();
ins.sysapproval = sysId;
ins.state = "not requested";
ins.approver = grMember.user;
ins.insert();
gs.log("last","harish");
}
},

deleting: function(assGrp,sysId){
var grMember = new GlideRecord("sys_user_grmember");
//grMember.addQuery("user","!=","NULL");
grMember.addQuery("group", "!=", assGrp);
gs.log("chk delete","harish");
grMember.query();
while(grMember.next())
{
var ins = new GlideRecord("sysapproval_approver");
ins.addQuery("sysapproval", sysId);
ins.query();
while(ins.next())
{

ins.deleteMultiple();
gs.log(grMember.user.getDisplayValue(),"harish delete");
}
}
},

type: 'AddApproversForDemand'
};

View solution in original post

6 REPLIES 6

vinothkumar
Tera Guru

Can you try like this.

 

(function executeRule(current, previous /*null when async*/) {


gs.addInfoMessage("sarting");
var grMember = new GlideRecord("sys_user_grmember");
grMember.addQuery("user","!=","NULL");
grMember.addQuery("group",current.assignment_group);
grMember.query();
while(grMember.next())
{

var ins = new GlideRecord("sysapproval_approver");

gs.addInfoMessage(grMember.user.getDisplayValue());
gs.addInfoMessage("inside while");
ins.initialize();
ins.sysapproval = current.number;
ins.state = "not requested";
ins.approver = grMember.user;
ins.insert();
gs.addInfoMessage("last");
}
}

})(current, previous);

Hi Vinod,

 

Thanks for the response

Where did you modified in the code I haven't seen any modifications, Is this code work for removing current assignment group and adding a new assignment group.

 

Thanks

I have just commented the below line as those are needed. Regarding your question will it update, when we change the assignment group, you have to trigger this BR whenever an assignment group of the demand has been changed.

 

var ins = new GlideRecord("sysapproval_approver");

//ins.query();
//while(ins.next())

kalyan778
Mega Guru

Hi Rao,

 

Change this line ins.sysapproval = current.number; to ins.sysapproval = current.sys_id;

 

 

Thanks