Approval Info Widget comment issue same comment showing up 3 times
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-21-2025 08:36 AM
I have an issue where everything is working but it captures the reject reason 3 times and post them back in RITM 3 times creating 3 notifications. I only want it to post once so there won't be 3 notifcations and 3 same comments. Thanks in advance.
My Current code:
Code for Approval info widget is below(Paris release):
Server Side :
(function() {
data.actionPreventedMsg = gs.getMessage("Update failed");
var gr = $sp.getRecord();
if (gr == null || !gr.isValid()) {
data.isValid = false;
return;
}
data.isValid = true;
data.isMine = isApprovalMine(gr);
var userApprovalAccess = gs.hasRole("approval_admin") || (gs.hasRole("approver_user") && data.isMine);
var approverDisplay = gr.approver.getDisplayValue();
if (!data.isMine && approverDisplay)
data.approverDisplay = approverDisplay;
if (approverDisplay) {
data.approvedMsg = gs.getMessage("Approved by {0}", approverDisplay);
data.rejectedMsg = gs.getMessage("Rejected by {0}", approverDisplay);
} else {
data.approvedMsg = gs.getMessage("Approved");
data.rejectedMsg = gs.getMessage("Rejected");
}
if (input && input.op && userApprovalAccess) {
gr.state = input.op;
// Store rejection reason if applicable
if (input.op === 'rejected' && input.rejectionReason) {
// Check if rejection reason already exists in comments to prevent duplicate entries
if (!gr.comments.includes(input.rejectionReason)) {
gr.comments = "Rejection Reason: " + input.rejectionReason;
}
}
data.updateID = gr.update();
if (GlideStringUtil.nil(data.updateID)) {
gr = $sp.getRecord();
}
data.op = "";
}
var fields = $sp.getFields(gr, 'state,sys_created_on');
if (gr.sys_mod_count > 0)
fields.push($sp.getField(gr, 'sys_updated_on'));
data.fields = fields;
data.state = gr.state.toString();
data.sys_updated_on = gr.sys_updated_on.toString();
data.sys_id = gr.getUniqueValue();
data.table = gr.getTableName();
var record = getRecordBeingApproved(gr);
data.label = record.getLabel();
data.approvedStatusMsg = gs.getMessage("{0} has been approved", record.number);
// Append rejection reason to the related RITM/task if applicable
if (gr.state == 'rejected' && input.rejectionReason) {
var taskGR = new GlideRecord('sc_req_item'); // Change to 'task' if needed
if (taskGR.get(record.sys_id)) {
// Check if rejection reason already exists in task comments to prevent duplicate entries
if (!taskGR.comments.includes(input.rejectionReason)) {
taskGR.comments = "Rejected: " + input.rejectionReason;
taskGR.update();
}
}
}
data.esignature = {
username: gs.getUserName(),
userSysId: gs.getUserID(),
e_sig_required: checkESig(gr)
};
function checkESig(approvalGR) {
var esigRegistryGR = new GlideRecord("e_signature_registry");
if (!esigRegistryGR.isValid())
return false;
var table = approvalGR.getValue("source_table");
if (!table)
table = approvalGR.sysapproval.sys_class_name;
if (!table)
return false;
esigRegistryGR.addQuery("enabled", "true");
esigRegistryGR.addQuery("table_name", table);
esigRegistryGR.query();
return esigRegistryGR.hasNext();
}
function getRecordBeingApproved(gr) {
if (!gr.sysapproval.nil())
return gr.sysapproval.getRefRecord();
return gr.document_id.getRefRecord();
}
})();
Client Controller :
function ($scope, spUIActionsExecuter, spUtil) {
var c = this;
var ESIGNATURE = {
"approved": "cbfe291147220100ba13a5554ee4904d",
"rejected": "580f711147220100ba13a5554ee4904b"
};
spUtil.recordWatch($scope, "sysapproval_approver", "state=requested^sys_id=" + c.data.sys_id);
c.approvalInProgress = false;
c.action = function(state) {
if (state === 'rejected') {
var rejectionReason = prompt("Please provide a rejection reason:");
if (!rejectionReason || rejectionReason.trim() === '') {
spUtil.addErrorMessage("Rejection reason is required.");
return;
}
c.data.rejectionReason = rejectionReason;
}
if (c.data.esignature.e_sig_required) {
var requestParams = {
username: c.data.esignature.username,
userSysId: c.data.esignature.userSysId
};
spUIActionsExecuter.executeFormAction(ESIGNATURE[state], "sysapproval_approver", c.data.sys_id, [] , "", requestParams).then(function(response) {});
} else {
c.approvalInProgress = true;
c.data.op = state;
c.server.update().then(function() {
c.approvalInProgress = false;
if (!c.data.updateID)
spUtil.addErrorMessage(c.data.actionPreventedMsg);
else {
c.data.state = state;
if (state === 'approved') {
spUtil.addInfoMessage(c.data.approvedStatusMsg);
} else if (state === 'rejected') {
spUtil.addInfoMessage("Approval rejected with reason: " + c.data.rejectionReason);
}
}
});
}
};
}
0 REPLIES 0