Use existing request number with cart.placeOrder()
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-21-2022 05:46 AM
Greetings,
I need to be able to add a new request item to an existing request using cart.placeOrder().
My below code creates a new requested item, I just need to know how not to create a new request but use an old request number.
Thanks
var aryReqItems = ["RITM0231245", "RITM0231246"];
aryReqItems.forEach(function(item, index) {
var grReqItem = new GlideRecord("sc_req_item");
if (grReqItem.get("number", item)){
var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId);
var itemVar = cart.addItem("c26049d7db7fd740768834cc7c961918");
for (var varName in grReqItem.variables) { // Get and set all variable values from the old req item for the new one.
if (grReqItem.variables.hasOwnProperty(varName) ){
var varValue = grReqItem.variables[varName];
//gs.info(varName + ':' + variable);
cart.setVariable(itemVar, varName, varValue);
}
}
var rc = cart.placeOrder();
}
});
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-21-2022 12:36 PM
What about deleting the old flow context and running something like this to create a new workflow for the original requested item? I tried this after deleting the old flow context and feeding that RITM info and a new flow was not created.
I tried both of these, the first one runs without error but no flow is created. The 2nd one has an error.
var grScReq = new GlideRecord('sc_req_item');
if(grScReq.get('number', 'RITM0231141')){
try {
var inputs = {};
inputs['table_name'] = 'sc_req_item';
inputs['request_item'] = grScReq; // GlideRecord of table: sc_req_item
var result = sn_fd.FlowAPI.getRunner().flow('hardware_request').inBackground().withInputs(inputs).run();
var outputs = result.getOutputs();
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
}
var grScReq = new GlideRecord('sc_req_item');
if(grScReq.get('number', 'RITM0231141')){
try {
var inputs = {};
inputs['current'] = grScReq; // GlideRecord of table:
inputs['table_name'] = 'sc_req_item';
// Starts the flow asynchronously.
var contextId = sn_fd.FlowAPI.startFlow('global.hardware_request', inputs);
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
}
The second query throws this error:
** Script: The inputs provided to the flow: Hardware Request within application scope: global are incorrect, please refer to the definition: no thrown error