- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-29-2024 01:19 AM
Dear Team,
I have a requirement to copy/transfer attachments of Interaction Record to Request record when Create Request UI Action button clicked on associated Interaction Record.
It is working fine with Incident record due to the line 28 and 29 on the below Create Incident UI Action script
as it refers to below script include
I have tried the below solution provided in community for same issue but not working properly
Currently I have the custom UI Action for Create Request button on Interaction table, which redirects directly to REQ record for a particular catalog item, it is woking fine but I stuck here on click of Create request button it should copy the attachmnets of Interaction to Request created, same as it is working for Incident created.
Below is my UI Action 'Create Request' script
createServiceRequest();
createM2M();
function createServiceRequest() {
var cart = new Cart();
var item = cart.addItem('d97d2beb97ae3110e6e3bb5ef053af85'); // sys_id of General request catalog item
cart.setVariable(item, 'description', current.short_description);
cart.setVariable(item, 'requested_for', current.opened_for);
var cartGR = cart.getCart();
cartGR.requested_for = current.opened_for;
cartGR.update();
var newSerReq = cart.placeOrder();
newSerReq.opened_by = current.opened_for;
newSerReq.update();
current.parent = getRITM(newSerReq.sys_id);
current.update();
var disMessage = 'Interaction ' + current.number + ' has been converted into Service Request ' + newSerReq.number;
gs.addInfoMessage(disMessage);
action.setRedirectURL(newSerReq);
action.setReturnURL(current);
}
function getRITM(serReq) {
var ritm = '';
var grRITM = new GlideRecord('sc_req_item');
grRITM.addQuery('request', serReq);
grRITM.query();
if (grRITM.next()) {
ritm = grRITM.sys_id;
}
return ritm;
}
function createM2M(grRITM) {
var gr = new GlideRecord('interaction_related_record');
gr.newRecord();
gr.document_table = 'sc_req_item';
gr.interaction = current.sys_id;
gr.document_id = grRITM.sys_id();
//gr.task = grRITM.sys_id();
gr.type = 'task';
gr.insert();
GlideSysAttachment.copy('interaction', current.interaction, 'sc_req_item', ritm.sys_id);
//'interaction', current.interaction, 'sc_req_item', ritm.sys_id
}
/*When Create Request button clicked from respective IMS record, then State of IMS sets to 'Closed Complete' and
worknotes populated as 'Request created'*/
current.state = "closed_complete"; // add closed state value
current.work_notes = "Request created";
current.update();
I have tried almost all similar community posts to get this resolved but no luck.
Please help!
Thanks
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-29-2024 09:13 AM
Hi @rishabh31
Your function createM2M(grRITM) is not configured properly . Also the calling of interaction record and ritm is wrong.Please paste this script and let me know if its working. To be sure please delete all records created in the
createServiceRequest();
function createServiceRequest() {
var cart = new Cart();
var item = cart.addItem('d6c2273c47010200e90d87e8dee49004'); // sys_id of General request catalog item
cart.setVariable(item, 'description', current.short_description);
cart.setVariable(item, 'requested_for', current.opened_for);
var cartGR = cart.getCart();
cartGR.requested_for = current.opened_for;
cartGR.update();
var newSerReq = cart.placeOrder();
newSerReq.opened_by = current.opened_for;
newSerReq.update();
current.parent = getRITM(newSerReq.sys_id);
current.update();
var disMessage = 'Interaction ' + current.number + ' has been converted into Service Request ' + newSerReq.number;
gs.addInfoMessage(disMessage);
action.setRedirectURL(newSerReq);
action.setReturnURL(current);
}
function getRITM(serReq) {
var ritm = '';
var grRITM = new GlideRecord('sc_req_item');
grRITM.addQuery('request', serReq);
grRITM.query();
if (grRITM.next()) {
ritm = grRITM.sys_id;
createM2M(grRITM.sys_id);//call the function here so you get the ritm number correctly
}
return ritm;
}
function createM2M(grRITM) {
var gr = new GlideRecord('interaction_related_record');
gr.newRecord();
gr.document_table = 'sc_req_item';
gr.interaction = current.sys_id;
gr.document_id = grRITM;
//gr.task = grRITM.sys_id();
gr.type = 'task';
gr.insert();
GlideSysAttachment.copy('interaction', gr.interaction, 'sc_req_item', grRITM);
}
/*When Create Request button clicked from respective IMS record, then State of IMS sets to 'Closed Complete' and
worknotes populated as 'Request created'*/
current.state = "closed_complete"; // add closed state value
current.work_notes = "Request created";
current.update();
Please mark my answer correct/helpful if it resolved your query.Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-05-2024 11:55 PM
Hi @Ramz thanks for your help! yes that is working to transfer the attachment from IMS to RITM and also properly updating the Related tasks / Interaction related record on respective IMS record but not able to close complete the IMS record, so I just modified the script as below, which not only transfer/copying the IMS attachment to its associated RITM but also to REQ.
createServiceRequest();
function createServiceRequest() {
var cart = new Cart();
var item = cart.addItem('d6c2273c47010200e90d87e8dee49004'); // sys_id of General request catalog item
cart.setVariable(item, 'description', current.short_description);
cart.setVariable(item, 'requested_for', current.opened_for);
var cartGR = cart.getCart();
cartGR.requested_for = current.opened_for;
cartGR.update();
var newSerReq = cart.placeOrder();
newSerReq.opened_by = current.opened_for;
newSerReq.update();
current.parent = getRITM(newSerReq.sys_id);
current.update();
/*Below line used to copy IMS attachments to newly Created REQ when 'Create Request' button clicked*/
GlideSysAttachment.copy('interaction', current.getUniqueValue(), 'sc_request', newSerReq.sys_id);
/*Below line used to copy IMS attachments to newly Created RITM (associated with REQ record that
creates when 'Create Request' button clicked)*/
//GlideSysAttachment.copy('interaction', current.getUniqueValue(), 'sc_req_item', current.parent);
var disMessage = 'Interaction ' + current.number + ' has been converted into Service Request ' + newSerReq.number;
gs.addInfoMessage(disMessage);
action.setRedirectURL(newSerReq);
action.setReturnURL(current);
}
function getRITM(serReq) {
var ritm = '';
var grRITM = new GlideRecord('sc_req_item');
grRITM.addQuery('request', serReq);
grRITM.query();
if (grRITM.next()) {
ritm = grRITM.sys_id;
createM2M(grRITM.sys_id); //call the function here so you get the ritm number correctly
}
return ritm;
}
function createM2M(grRITM) {
var gr = new GlideRecord('interaction_related_record');
gr.newRecord();
gr.document_table = 'sc_req_item';
gr.interaction = current.sys_id;
gr.document_id = grRITM;
gr.type = 'task';
gr.insert();
}
//When Create Request button clicked from respective IMS record, then State of IMS sets to 'Closed Complete' and
//worknotes populated as 'Request created'
current.state = "closed_complete"; // add closed state value
current.work_notes = "Request created";
current.update();