How to add a table name in a client controller of a widget?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-06-2022 06:19 AM
Hello All,
I have a scenario. In Portal, under Approval section we have knowledge approvals and demand approvals. So knowledge approvals are rejected, no comment should pop up but if demand is rejected , we need to show a mandatory message to provide a reason for rejection.
For knowledge, it is working but for demand no pop up message is coming.
How we can distinguish two approvals in the same widget?
Please help!
Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-06-2022 06:24 AM
hello
so i am assuming that your URL of the ticket page must have a parameter called sys_id which is nothing but the approval record sys_id so what you can do it just write this piece of code in server side
data.table=""
var gr = new GlideRecord('syapproval_approver');
gr.addQuery('sys_id',$sp.getParameter('sys_id'));
gr.query();
if(gr.next())
{
data.table=gr.source_table;
}
Now using data.table you can distinguish between demand and knowledge
Hope this helps
please mark my answer correct if this helps you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-06-2022 06:31 AM
Hi Mohith,
In server side, we have this below code:
var approvalRecord = new GlideRecord('sysapproval_approver');
approvalRecord.addEncodedQuery('stateINapproved,rejected^u_approval_description=' + appDescription + '^sysapproval=' + approvingRecord.sys_id.getValue());
approvalRecord.query();
if (approvalRecord.next()) {
data.showMessage = true;
var approver = approvalRecord.approver.getValue(),
approverName = approvalRecord.approver.getDisplayValue(),
curState = approvalRecord.state.getDisplayValue();
curState = curState ? curState.toLowerCase() : curState;
if (approver == gs.getUserID()) {
data.approvalMessage = gs.getMessage('hsbc.request_approval.already_approved', [curState, gs.getMessage('you')]);
} else {
data.approvalMessage = gs.getMessage('hsbc.request_approval.already_approved', [curState, approverName]);
}
}
}
//test field
/*
MGTP-3214 showing value of number field rather than a display value of record
as KB articles use short description as the display value rather than number
*/
data.number = approvingRecord.getDisplayValue('number');
data.recordId = approvingRecord.sys_id.getValue();
//data.number = grRecord.getDisplayValue();
data.table = grRecord.getTableName();
data.label = approvingRecord.getLabel();
and I checked the name of the reject button is c.reject
c.reject = function(show_rej_reason) {
$scope.data.reject_reason = c.reject_reason;
//$scope.data.kbRejectComments=c.kbRejectComments;
$scope.data.sopRejectComments=c.sopRejectComments;
$scope.data.dmdRejectComments=c.dmdRejectComments;
if (show_rej_reason == 'true' && $scope.data.reject_reason.value ==''){
alert('You must select a rejection reason');
return false;
}
// if (show_rej_reason == 'true' && $scope.data.show_kb_comments && $scope.data.kbRejectComments==''){
// alert('You must enter comments with this rejection reason');
// return false;
// }
//sop comments
if (show_rej_reason == 'true' && $scope.data.show_sop_comments && $scope.data.sopRejectComments==''){
alert('You must enter comments with this rejection reason');
return false;
}
if (show_rej_reason == 'true' && $scope.data.show_dmd_comments && $scope.data.dmdRejectComments==''){
alert('Provide a reason for rejecting this approval');
return false;
}
$scope.data.op = "rejected";
$scope.data.target = $scope.data.sys_id;
var modal = document.getElementById('myRejModal');
modal.style.display = "none";
// var modal2= document.getElementById('myRejModalKB');
// modal2.style.display = "none";
get();
}
How I am going to dispay mandatory error message for demand and not for knowledge?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-06-2022 06:37 AM
you can use this
if(approvalRecord.source_table=="demand_table_name")
{
//write your rejection message
}
Hope this helps
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-06-2022 08:10 PM
Hi Mohith,
I have managed to bring the pop up message on rejection but now the issue is before i put the comments and click on 'OK', the record gets rejected in the background and in the record the comment is not updated.
Please find the below code i have written:
Client code:
c.reject = function($event, approval,id, show_rej_reason) {
$scope.data.reject_reason = c.reject_reason;
//$scope.data.kbRejectComments=c.kbRejectComments;
$scope.data.sopRejectComments=c.sopRejectComments;
$scope.data.dmdRejectComments=c.dmdRejectComments;
if ($scope.data.sys_class_name == 'dmn_demand'){
spModal.open({
title: 'Reject Approval',
message: 'Provide a reason for rejecting this approval',
input: true,
value: $scope.name
}).then(function(name) {
$scope.name = name;
$scope.data.updateMultiple = 'false';
$scope.data.op = "rejected";
$scope.data.target = id;
$scope.data.reject_comment = "Rejection reason: " + $scope.name;
get();
});
}
Server code:
if (data.state == 'approved' || data.state == 'rejected' || data.state == 'not_required') {
var arr = [];
var app = new GlideRecord("sysapproval_approver")
if (app.get(data.target)){
app.state = data.state;
if (data.state == 'rejected') {
app.comments = input.reject_comment;
} else if (data.state == 'approved') {
app.comments = input.approve_comment;
}
app.update();
}