- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-08-2020 02:40 AM
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 .
Solved! Go to Solution.
- Labels:
-
Service Catalog
- 37,143 Views
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2020 06:30 AM
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);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2020 03:11 AM
Hi Anukar i tried with both option but no luck its not aborting to approve.
could you please confirm why we you have added condition when state is approved ?
i have to run this BR when state is Requested only when approver trying to approve the request due date should be future dates only.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2020 03:52 AM
Hi Ankur it is working ,
But when i click on Approve its showing error but Approve button is disappearing and state changes to Approved on form when again i reload form request still showing requested and Approval Button .
please confirm why this is hiding while click on Approve button any suggestion would be helpfull.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2020 03:55 AM
Hi Santoshi,
That is the default behaviour
User clicks the button; it sets value as Approve and just before saving the before BR runs and stops user
User need to refresh the form to see the previous values
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2020 04:02 AM
Thanks Ankur for your info, Can we stop that behavior?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-09-2020 04:07 AM
Hi Santoshi,
I don't think so because you cannot use gs.setRedirect() in combination with abort action
refer below
https://hi.service-now.com/kb_view.do?sysparm_article=KB0539962
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader