- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-26-2022 10:41 AM
I have a requirement to generate a RITM by copying Variables into new RITM.
var gr = new GlideRecord("sc_req_item");
if (gr.get('da80597b87afc91096ba62c83cbb3580')) {
var obj = {};
var variables = gr.variables.getElements();
for (var i=0;i<variables.length;i++) {
obj[variables[i].getName().toString()] = variables[i].getValue().toString();
}
}
gs.info(JSON.stringify(obj));
This code generates output of the variables that i need.
{"requested_for":"4115490087604110fcc1840e0ebb359e","u_call_back_number":"706-721-4000","recurring_req":"Yes","frequency":"30"}
var cart = new sn_sc.CartJS();
var item =
{
'sysparm_id': '6971c09287ba415096ba62c83cbb35b0',
'sysparm_quantity': '1',
'variables': {"requested_for":"4115490087604110fcc1840e0ebb359e","u_call_back_number":"706-721-4000","recurring_req":"Yes","frequency":"30"}};
var cartDetails = cart.addToCart(item);
gs.info(cartDetails);
var checkoutInfo = cart.checkoutCart();
gs.info(checkoutInfo);
This code generates the RITM of the catalog item.
But when i combine both
var gr = new GlideRecord("sc_req_item");
if (gr.get('da80597b87afc91096ba62c83cbb3580')) {
var obj = {};
var variables = gr.variables.getElements();
for (var i=0;i<variables.length;i++) {
obj[variables[i].getName().toString()] = variables[i].getValue().toString();
}
}
gs.info(JSON.stringify(obj));
var varStr = JSON.stringify(obj);
var cart = new sn_sc.CartJS();
var item =
{
'sysparm_id': '6971c09287ba415096ba62c83cbb35b0',
'sysparm_quantity': '1',
'variables': varStr};
var cartDetails = cart.addToCart(item);
gs.info(cartDetails);
var checkoutInfo = cart.checkoutCart();
gs.info(checkoutInfo);
I get an error:
Couldn't decipher the stack trace resulting from the following JavaScriptException:
java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONObject: org.mozilla.javascript.JavaScriptException: java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONObject: org.mozilla.javascript.Context.makeJavaScriptException(Context.java:1952) org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1938) org.mozilla.javascript.MemberBox.invoke(MemberBox.java:143) org.mozilla.javascript.FunctionObject.doInvoke(FunctionObject.java:670) org.mozilla.javascript.FunctionObject.call(FunctionObject.java:614) org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2609) org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1518) org.mozilla.javascript.Interpreter.interpret(Interpreter.java:830) org.mozilla.javascript.InterpretedFunction.lambda$call$0(InterpretedFunction.java:152) com.glide.caller.gen.null_null_script.call(Unknown Source) com.glide.script.ScriptCaller.call(ScriptCaller.java:18) org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:151) org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:563) org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3459) org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:164) com.glide.script.ScriptEvaluator.execute(ScriptEvaluator.java:354) com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:177) com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:111) com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:322) com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:226) com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:213) com.glide.processors.ScriptProcessor.evaluateScript0(ScriptProcessor.java:390) com.glide.processors.ScriptProcessor.lambda$evaluateScriptWithRecordingOption$0(ScriptProcessor.java:379) com.glide.rollback.recording.RollbackRecorder.execute(RollbackRecorder.java:67) com.glide.processors.ScriptProcessor.evaluateScriptWithRecordingOption(ScriptProcessor.java:379) com.glide.processors.ScriptProcessor.evaluateScript(ScriptProcessor.java:359) com.glide.processors.ScriptProcessor.runScript(ScriptProcessor.java:258) com.glide.processors.ScriptProcessor.process(ScriptProcessor.java:216) com.glide.processors.AProcessor.runProcessor(AProcessor.java:612) com.glide.processors.AProcessor.processTransaction(AProcessor.java:274) com.glide.processors.ProcessorRegistry.process0(ProcessorRegistry.java:184) com.glide.processors.ProcessorRegistry.process(ProcessorRegistry.java:172) com.glide.ui.GlideServletTransaction.process(GlideServletTransaction.java:46) com.glide.sys.Transaction.run(Transaction.java:2468) com.glide.ui.HTTPTransaction.run(HTTPTransaction.java:27) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
Solved! Go to Solution.
- Labels:
-
Multiple Versions
-
Service Catalog
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-27-2022 10:42 AM
I was able to solve this.
'variables' -> is an array data type. so, there was no additional conversion required.
var gr = new GlideRecord("sc_req_item");
if (gr.get('da80597b87afc91096ba62c83cbb3580')) {
var obj = {};
var variables = gr.variables.getElements();
for (var i=0;i<variables.length;i++) {
obj[variables[i].getName().toString()] = variables[i].getValue().toString();
}
}
var cart = new sn_sc.CartJS();
var item =
{'sysparm_id': '6971c09287ba415096ba62c83cbb35b0',
'sysparm_quantity': '1',
'variables': obj};
var cartDetails = cart.addToCart(item);
gs.info(cartDetails);
var checkoutInfo = cart.checkoutCart();
gs.info(checkoutInfo);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-26-2022 10:59 AM
Hi Pankhil,
try below code
gs.info(JSON.stringify(obj));
var json = new JSON();
var varStr = json.encode(obj);
var cart = new sn_sc.CartJS();
var item =
{
'sysparm_id': '6971c09287ba415096ba62c83cbb35b0',
'sysparm_quantity': '1',
'variables': varStr};
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-27-2022 07:04 AM
*** Script: {"requested_for":"4115490087604110fcc1840e0ebb359e","u_call_back_number":"706-721-4000","recurring_req":"Yes","frequency":"30"}
Couldn't decipher the stack trace resulting from the following JavaScriptException:
java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONObject:
still getting the same error!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-27-2022 10:42 AM
I was able to solve this.
'variables' -> is an array data type. so, there was no additional conversion required.
var gr = new GlideRecord("sc_req_item");
if (gr.get('da80597b87afc91096ba62c83cbb3580')) {
var obj = {};
var variables = gr.variables.getElements();
for (var i=0;i<variables.length;i++) {
obj[variables[i].getName().toString()] = variables[i].getValue().toString();
}
}
var cart = new sn_sc.CartJS();
var item =
{'sysparm_id': '6971c09287ba415096ba62c83cbb35b0',
'sysparm_quantity': '1',
'variables': obj};
var cartDetails = cart.addToCart(item);
gs.info(cartDetails);
var checkoutInfo = cart.checkoutCart();
gs.info(checkoutInfo);