Issue in populating the Requested for field in REQ
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-13-2024 03:20 AM
Hi all,
I have one use case, i.e., "Requested For" is the same as "Opened By" when multiple RITMs are created under a single request via add to cart.
I don't know how to validate the RITM which is submitted via Add to Cart functionality and anyone help me to find the solution
Existing Script:
(function executeRule(current, previous /*null when async*/) {
var grRITM = new GlideRecord('sc_req_item');
grRITM.addQuery('request', 'current.sys_id');
grRITM.addNotNullQuery('order_guide');
grRITM.query();
var count = grRITM.getRowCount();
if (count > 1) {
while (grRITM.next()) {
if (!JSUtil.nil(grRITM.variables.requested_for)) {
current.requested_for = grRITM.variables.requested_for;
} else if (!JSUtil.nil(grRITM.variables.u_nf_requested_for)) {
current.requested_for = grRITM.variables.u_nf_requested_for;
}
}
}
})(current, previous);
2 REPLIES 2
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-13-2024 03:29 AM
Try bellow updated code once:
(function executeRule(current, previous /*null when async*/) {
var grRequest = new GlideRecord('sc_request');
if (grRequest.get(current.request)) { // 'current.request' is the sys_id of the Request
var openedBy = grRequest.opened_by; // Get the 'Opened By' user on the Request
// Now, check if RITMs under the same Request are valid
var grRITM = new GlideRecord('sc_req_item');
grRITM.addQuery('request', current.request); // Query RITMs associated with the current request
grRITM.query();
while (grRITM.next()) {
// Check if 'Requested For' matches the 'Opened By' user
var requestedFor = grRITM.variables.requested_for; // 'Requested For' on the RITM
// Check if 'Requested For' is either null or doesn't match 'Opened By'
if (!JSUtil.nil(requestedFor) && requestedFor != openedBy) {
// You can add a log, or set an error on the record
gs.error('Requested For does not match Opened By for RITM ' + grRITM.sys_id);
// Optionally, set the 'Requested For' field on the RITM to be the same as 'Opened By'
grRITM.variables.requested_for = openedBy;
grRITM.update(); // Update the RITM record to ensure consistency
}
}
}
})(current, previous);
I hope my answer helps you to resolve your issue, if yes please mark my answer helpful and correct.
thank you
Rajesh
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-16-2024 04:27 AM
Try it :
/**
"Requested For" is the same as "Opened By" when multiple RITMs are created under a single request via cart functionality
*/
var grRITM = new GlideRecord('sc_req_item');
grRITM.addQuery('request', current.sys_id);
grRITM.addNotNullQuery('order_guide');
grRITM.query();
var count = grRITM.getRowCount();
gs.print(count);
if (count >= 1) {
while (grRITM.next()) {
if (!JSUtil.nil(grRITM.variables.requested_for)) {
current.requested_for = grRITM.variables.requested_for;
} else if (!JSUtil.nil(grRITM.variables.u_nf_requested_for)) {
current.requested_for = grRITM.variables.u_nf_requested_for;
}
}
} else {
current.requested_for = current.opened_by;
}