How to abort the action in Business rule

Santoshi5
Giga Guru

Hi SD,

I need  help in Business rule , My requirement is whenever Approver click on Approve button before approving the request current action date and Due date of RITM form should be check and condition is if current updating date  is greater than Due date) then its abort the approving action .

I have created business rule its showing error but request getting approve..

Business rule:before-Update

when to run: state is requested

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

// Add your code here

var now = new GlideDateTime();// current date time
gs.addInfoMessage('current updated date..'+now);
var duedate= new GlideDateTime(current.sysapproval.due_date);
gs.addInfoMessage('.due date is ....'+duedate);

if(now.getDate() > duedate.getDate()){
current.setAbortAction(true);
//gs.addErrorMessage('please select the future dates');

}

})(current, previous);

 

please help me in the script .

 

 

 

1 ACCEPTED SOLUTION

Thanks Ashutosh,

 

I have changed in Approval Ui Action and its working now hope this will help to other(i am applying this script only if Group SLA is 6 this field is available on RITM form )

UI Action -Approval, table- sysapproval_approver(OOB button)

script

if(current.sysapproval.u_group_sla=='6')
{
var now = new GlideDateTime();// current date time
gs.addInfoMessage('current updated date..'+now);
var duedate= new GlideDateTime(current.sysapproval.due_date);
gs.addInfoMessage('.due date is ....'+duedate);

if(now.getDate() > duedate.getDate()){

gs.addErrorMessage('please select the future dates');
current.setAbortAction(true);

}
else
{
current.state='approved';

current.update();
new ApprovalUserFeedback().approved(current);
}

}

else{
current.state='approved';

current.update();
new ApprovalUserFeedback().approved(current);
}

 

 

 

 

View solution in original post

13 REPLIES 13

Hope you are doing good.

Did you get a chance to check on both the approaches I suggested.

if you think there is any response that helps you please mark that helpful or accepted so that this thread can be closed.

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Ashutosh Munot1
Kilo Patron
Kilo Patron

HI,

You can put this code in UI Action or do check in UI Action script itself and then show the error from there.


Thanks,
Ashutosh

Thanks Ashutosh,

 

I have changed in Approval Ui Action and its working now hope this will help to other(i am applying this script only if Group SLA is 6 this field is available on RITM form )

UI Action -Approval, table- sysapproval_approver(OOB button)

script

if(current.sysapproval.u_group_sla=='6')
{
var now = new GlideDateTime();// current date time
gs.addInfoMessage('current updated date..'+now);
var duedate= new GlideDateTime(current.sysapproval.due_date);
gs.addInfoMessage('.due date is ....'+duedate);

if(now.getDate() > duedate.getDate()){

gs.addErrorMessage('please select the future dates');
current.setAbortAction(true);

}
else
{
current.state='approved';

current.update();
new ApprovalUserFeedback().approved(current);
}

}

else{
current.state='approved';

current.update();
new ApprovalUserFeedback().approved(current);
}

 

 

 

 

Nice.


this was from the start.

I am glad it helped.


Thanks,
Ashutosh