- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-03-2022 03:27 AM
Hi,
I want to add a functionality where approvers can approve any HR case directly on HR case in Agent workspace.
I have made the Workspace Form Button to "True" and in Workspace Client Script, I'm calling a client callable script include to make the sysapproval record to approve/reject. But this seems to be not working, as when I click that button on Agent workspace, there is no action performed from client and server side.
Please help me here.
Workspace Client Script:
function onClick(g_form) {
var approve = new GlideAjax('DB_HR_ClientUtils');
approve.addParam('sysparm_name', 'approveFromHRCase');
approve.addParam('sysparm_user', g_user.userID);
approve.addParam('sysparm_record', g_form.getUniqueID());
approve.addParam('sysparm_action', 'approve');
approve.getXML(getResponse);
}
function getResponse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
if (answer == 'true') {
g_form.assigned_to = g_user.userID;
g_form.save();
}
}
Client-callable Script Include:
approveFromHRCase: function() {
var user = this.getParameter('sysparm_user');
var record = this.getParameter('sysparm_record');
var action = this.getParameter('sysparm_action');
gs.error("now in the script include " + user + record);
var appr = new GlideRecord('sysapproval_approver');
appr.addQuery('document_id', record);
appr.addQuery('state', 'requested');
appr.addQuery('approver', user);
appr.query();
if (appr.next()) {
gs.error("got the approval record " + approve);
if (action == 'approve') {
appr.state = 'approved';
} else
appr.state = 'rejected';
appr.update();
}
return true;
},
Thanks,
Sailesh
Solved! Go to Solution.
- Labels:
-
HR Service Delivery
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-03-2022 04:43 AM
Hi,
update client side code as this
function onClick(g_form) {
var approve = new GlideAjax('DB_HR_ClientUtils');
approve.addParam('sysparm_name', 'approveFromHRCase');
approve.addParam('sysparm_user', g_user.userID);
approve.addParam('sysparm_record', g_form.getUniqueValue());
approve.addParam('sysparm_action', 'approve');
approve.getXMLAnswer(getResponse);
}
function getResponse(response) {
var answer = response;
if (answer.toString() == 'true') {
g_form.assigned_to == g_user.userID;
g_form.save();
}
}
Script Include as this
approveFromHRCase: function() {
var user = this.getParameter('sysparm_user');
var record = this.getParameter('sysparm_record');
var action = this.getParameter('sysparm_action');
var appr = new GlideRecord('sysapproval_approver');
appr.addQuery('sysapproval', record);
appr.addQuery('state', 'requested');
appr.addQuery('approver', user);
appr.query();
if (appr.next()) {
gs.error("got the approval record " + approve);
if (action == 'approve') {
appr.state = 'approved';
} else
appr.state = 'rejected';
appr.update();
}
return true;
},
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
‎08-03-2022 03:57 AM
hello ,
can you replace this line approve.addParam('sysparm_record', g_form.getUniqueID());
To this
approve.addParam('sysparm_record', g_form.getUniqueValue());
Also while comparing the answer do like below
if (answer == 'true' || answer==true) {
g_form.assigned_to = g_user.userID;
g_form.save();
}
Please mark my answer correct if it helps you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-03-2022 04:43 AM
Hi,
update client side code as this
function onClick(g_form) {
var approve = new GlideAjax('DB_HR_ClientUtils');
approve.addParam('sysparm_name', 'approveFromHRCase');
approve.addParam('sysparm_user', g_user.userID);
approve.addParam('sysparm_record', g_form.getUniqueValue());
approve.addParam('sysparm_action', 'approve');
approve.getXMLAnswer(getResponse);
}
function getResponse(response) {
var answer = response;
if (answer.toString() == 'true') {
g_form.assigned_to == g_user.userID;
g_form.save();
}
}
Script Include as this
approveFromHRCase: function() {
var user = this.getParameter('sysparm_user');
var record = this.getParameter('sysparm_record');
var action = this.getParameter('sysparm_action');
var appr = new GlideRecord('sysapproval_approver');
appr.addQuery('sysapproval', record);
appr.addQuery('state', 'requested');
appr.addQuery('approver', user);
appr.query();
if (appr.next()) {
gs.error("got the approval record " + approve);
if (action == 'approve') {
appr.state = 'approved';
} else
appr.state = 'rejected';
appr.update();
}
return true;
},
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
‎08-04-2022 01:35 AM
thanks Ankur. by using sysapproval it worked, along with i had to write a script include in global scope.