Copy Request Function on RITM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-28-2024 09:08 AM
Is there a way to have "copy Request" function for Service catalog so that users doesn't have to type the value every time, when the forms are big
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-29-2024 11:14 PM
So What exect you want like form the form of request item you want a button/ui action where you will get to copy request??
UI action script
function copyRequest() {
var ga = new GlideAjax('CopyRequestScript');
ga.addParam('sys_id', g_form.getUniqueValue());
ga.getXMLAnswer(function(response) {
var newRequestSysId = response.responseXML.documentElement.getAttribute("answer");
if (newRequestSysId) {
g_navigation.openRecord('sc_request', newRequestSysId);
} else {
alert('Failed to copy request.');
}
});
}
script include
var CopyRequestScript = Class.create();
CopyRequestScript.prototype = Object.extendsObject(AbstractAjaxProcessor, {
copyRequest: function() {
var originalRequestSysId = this.getParameter('sys_id');
var originalRequest = new GlideRecord('sc_request');
if (originalRequest.get(originalRequestSysId)) {
var newRequest = new GlideRecord('sc_request');
newRequest.initialize();
newRequest.short_description = originalRequest.short_description + ' (Copy)';
newRequest.requested_for = originalRequest.requested_for;
newRequest.requested_by = originalRequest.requested_by;
var newRequestSysId = newRequest.insert();
if (newRequestSysId) {
this.copyRequestedItems(originalRequestSysId, newRequestSysId);
return newRequestSysId;
}
}
return '';
},
copyRequestedItems: function(originalRequestSysId, newRequestSysId) {
var originalItems = new GlideRecord('sc_req_item');
originalItems.addQuery('request', originalRequestSysId);
originalItems.query();
while (originalItems.next()) {
var newItem = new GlideRecord('sc_req_item');
newItem.initialize();
newItem.short_description = originalItems.short_description;
newItem.request = newRequestSysId;
newItem.cat_item = originalItems.cat_item;
newItem.quantity = originalItems.quantity;
var newItemSysId = newItem.insert();
if (newItemSysId) {
this.copyItemVariables(originalItems.sys_id, newItemSysId);
}
}
},
copyItemVariables: function(originalItemSysId, newItemSysId) {
var originalVars = new GlideRecord('sc_item_option_mtom');
originalVars.addQuery('request_item', originalItemSysId);
originalVars.query();
while (originalVars.next()) {
var newVar = new GlideRecord('sc_item_option_mtom');
newVar.initialize();
newVar.request_item = newItemSysId;
newVar.sc_item_option = originalVars.sc_item_option;
newVar.value = originalVars.value;
newVar.insert();
}
},
type: 'CopyRequestScript'
});