- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-10-2016 01:46 PM
Hi All,
I was trying to clone a RITM with all its variable what ever is entered . Like a clone button which creates a new RITM with all the variables. I am stuck with the copy of variables.
I heard their is OOB clone available in some discussions but did not pointed exactly what it do and how to use it.
Any help is appreciated .
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-12-2016 01:07 PM
Hi Guys here is the code to copy the RITM with all variables to new RITM without workflow issues ,
var user=current.request.requested_for;
deleteCart();
var realCart = getCart();
var cartID = realCart.sys_id;
gs.log("cartID..",cartID);
addToCart(cartID, current.cat_item, 1);
addOptions(cartID);
doOrder();
deleteCart();
function addToCart(cartid, cat_item, quantity) {
var gr = new GlideRecord('sc_cart_item');
gr.initialize();
gr.cart = cartid;
gr.cat_item = cat_item;
gr.quantity = quantity;
gr.insert();
}
function addOptions(cartID) {
var kids = new GlideRecord('sc_cart_item');
kids.addQuery('cart', cartID);
kids.query();
if (kids.next()) {
gs.log("kids",kids.sys_id);
var sc_item_option_mtom = new GlideRecord('sc_item_option_mtom');
sc_item_option_mtom.addQuery('request_item', current.sys_id);
sc_item_option_mtom.query();
while(sc_item_option_mtom.next()){
var sc_item_option = new GlideRecord('sc_item_option');
sc_item_option.addQuery('sys_id', sc_item_option_mtom.sc_item_option);
sc_item_option.query();
if(sc_item_option.next()){
var sc_item_option_insert = new GlideRecord('sc_item_option');
sc_item_option_insert.initialize();
sc_item_option_insert.item_option_new=sc_item_option.item_option_new;
sc_item_option_insert.value=sc_item_option.value;
sc_item_option_insert.cart_item.setValue(kids.sys_id);
sc_item_option_insert.insert();
}
}
}
}
function deleteCart() {
var cart = getCart();
var id = cart.sys_id;
var kids = new GlideRecord('sc_cart_item');
kids.addQuery('cart', cart.sys_id);
kids.deleteMultiple();
}
function getCart() {
var cart = new GlideRecord('sc_cart');
var userid = user;
cart.addQuery('user', userid);
cart.query();
if (cart.next()) {
// we already have a cart all is well
}
else {
cart.initialize();
cart.user = userid;
cart.insert();
}
return cart;
}
function doOrder() {
var req = new GlideappRequestNew();
var result= req.copyCart(null,user);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-10-2016 02:03 PM
from Maintain Items > item > right click menu > Copy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-10-2016 02:22 PM
Hi mrswann,
This is not catalog item.. i am looking for RITM copy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-10-2016 02:34 PM
same thing AFAIK ?
sorry not in front of a machine so was going from memory
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-10-2016 04:47 PM
i have used the below logic to copy RITM in UI action on sc_req_item table
var gr = new GlideRecord('sc_req_item');
gr.initialize();
gr.request=current.request;
gr.request.requested_for=current.request.requested_for;
gr.cat_item=current.cat_item;
gr.cmdb_ci=current.cmdb_ci;
gr.short_description=current.short_description;
gr.description=current.description;
gr.insert();
var newRITM=gr.sys_id;
sc_item_option_mtom = new GlideRecord('sc_item_option_mtom');
sc_item_option_mtom.addQuery('request_item', current.sys_id);
sc_item_option_mtom.query();
while(sc_item_option_mtom.next()){
var sc_item_option = new GlideRecord('sc_item_option');
sc_item_option.addQuery('sys_id', sc_item_option_mtom.sc_item_option);
sc_item_option.query();
if(sc_item_option.next()){
var sc_item_option_insert = new GlideRecord('sc_item_option');
sc_item_option_insert.initialize();
sc_item_option_insert.item_option_new=sc_item_option.item_option_new;
sc_item_option_insert.value=sc_item_option.value;
sc_item_option_insert.insert();
var sc_item_option_mtom_insert = new GlideRecord('sc_item_option_mtom');
sc_item_option_mtom_insert.initialize();
sc_item_option_mtom_insert.request_item=newRITM;
sc_item_option_mtom_insert.sc_item_option=sc_item_option_insert.sys_id;
sc_item_option_mtom_insert.insert();
}
new Workflow().restartWorkflow(gr);
}