- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-03-2017 09:05 PM
Hi All,
I need help with this , i'm trying to copy approval details into task field
i tried with script include, but something missing here ,it is not creating a task after approval.
var AddApproverDateTime = Class.create();
AddApproverDateTime.prototype = {
initialize: function() {
},
addDateTime: function(id) {
var sys_updated_on =' ';
var gr= new GlideRecord('sc_req_item');
gr.get(id);
var apv = new GlideRecord('sysapproval_approver');
var qc=apv.addQuery('sysapproval',gr.getValue('request'));
qc.addOrCondition('sysapproval', gr.getValue('sys_id'));
apv.addQuery('sys_updated_on','!=',''); // add this to only find approvals that have comments on them
apv.query();
while (apv.next()) { // change if to while so it will go through all approvals with comments
DateTime += "\nApproval DateTime: from " + apv.approver.name + "\n" + apv.sys_updated_on; // add approver name here
}
return DateTime;
},
type: 'AddApproverDateTime'
};
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-04-2017 03:08 AM
Hi,
Follow the steps:
- Create a BR on sc_task table. Set when as 'after' and check 'advanced' and 'insert' options .
- Check the script to ensure, all the field names are populated as per your instance.
- Use the script below and paste it into 'advance script'.
- It is advised to test the script on non-production instances before implementing this modification
Script
(function executeRule(current, previous /*null when async*/) {
var msg1 = '';
var msg2 = '';
var app =[];
var count = 0;
getApprovalDetails();
gs.info(current.request_item.sys_id);
function getApprovalDetails() {
var thisTask = new GlideRecord('sysapproval_approver');
thisTask.addEncodedQuery('sysapproval='+current.request_item.sys_id);
thisTask.orderBy('sys_updated_on');
thisTask.query();
while(thisTask.next()){
count = count+1;
gs.info(thisTask.approver.getDisplayValue());
gs.info("Updated: "+thisTask.sys_updated_on.getDisplayValue());
updateFields(thisTask,count);
}
gs.info(count);
updateTask();
}
function updateFields(rec,count) {
if(count>1){
msg2 = "Approved by "+rec.approver.getDisplayValue() + " on "+ rec.sys_updated_on.getDisplayValue();
gs.info("MSG 2: "+msg2);
}
else {
msg1= "Approved by "+rec.approver.getDisplayValue() + " on "+ rec.sys_updated_on.getDisplayValue();
gs.info("MSG 1: "+msg1);
}
}
function updateTask() {
var task = new GlideRecord('sc_task');
task.addQuery('sys_id',current.sys_id);
task.query();
if(task.next()){
task.u_manager_s_approval.setValue(msg1);
task.u_marketing_ops_approval.setValue(msg2);
task.update();
}
}
})(current, previous);
The gs.info statements are to debug. You can remove them or keep them.
Please, see the image for the output.
Darshak
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-03-2017 11:10 PM
This script does only query operation and does not contain any create operation. Can you tell me what the requirement is and I can help you with the script
Thanks and Regards,
Aswin Siddalingam
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-03-2017 11:25 PM
Hi,
Do you want to create a new task or copy the approval fields to a task record? Can you tell me how do you plan to call this script include? It cannot be called in client scripts as I see you haven't written this as client callable. Any details on what you want to accomplish would help us understand better.
If you just want to display these fields on the TASK form, you can use form layout to dot walk to the fields on your interest on 'requested item' table.
Thanks
Darshak
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-04-2017 12:16 AM
Hi Darshak,
I'm trying to apply script in Script Includes in Catalog Task Workflow Event for this. this script is to copy over comment but i want to modify it to copy other details like in my case i want to copy over approver name, approved datetime and approval state.
i have 2 stage of approval in my workflow.
when manager approve , it should got to "manager's approval" field in task and update approver name, approved datetime and state if rejected or approved.
same goes to second stage approval after joan or Dhatre approve, the system should update approver name, datetime and state if rejected or approved in Marketing ops field.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-04-2017 12:40 AM
There are few errors in the code, allow me time to look at it. I'll get back to you. Can you tell me the field names of Manager's approval and the Marketing Ops approval?
Darshak