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

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'
};

Shantharao
Kilo Sage

I have modified the business rule as below now working fine

 

(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 approvers");
var obj1 = new AddApproversForDemand();
obj1.deleting(current.assignment_group,current.sys_id);
}

else if(!current.assignment_group.nil() && previous.assignment_group.nil())
{
gs.addInfoMessage("adding approvers ");
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 approvers");
var obj2 = new AddApproversForDemand();
obj2.deleting(current.assignment_group,current.sys_id);
obj2.adding(current.assignment_group,current.sys_id);
}



})(current, previous);