Catalog client script error message and error message not showing up in the order guide

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-12-2024 11:48 AM - edited 11-13-2024 09:31 AM
We have a situation where some users do not have managers, but we require manager approval for a request. I created a client script that populates the requested for email and validates if the user has a manager. If no manager, it clears the requested for value and displays an error message. This error message works in a standard catalog item but not the order guide. All other parts of the script work in both. Any help you can provide would be greatly appreciated:
function onChange(control, oldValue, newValue, isLoading) {
g_form.clearMessages();
var user = g_form.getValue('requested_for');
var gr = new GlideAjax('getTableDataUtils');
gr.addParam('sysparm_name', 'getList');
gr.addParam('sysparm_query_table', 'sys_user');
gr.addParam('sysparm_query_fields', 'email,manager,name');
gr.addParam('sysparm_query_encodedQuery', "sys_idIN" + user);
gr.addParam('sysparm_query_order', 'sys_id');
gr.getXML(populateEmail);
function populateEmail(response) {
var emails = [];
var manager = [];
var uName = [];
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = answer.replace(/},{/g, '}},{{');
answer = answer.replace(/@app./g, "@");
var answerArr = answer.split('},{');
for (var i = 0; i < answerArr.length; i++) {
var answerObj = JSON.parse(answerArr[i]);
emails.push(answerObj.email.toString());
manager.push(answerObj.manager.toString());
uName.push(answerObj.name.toString());
}
if (manager == '') {
var message = uName + ' does not have a manager, Only users with managers can submit this request. Please select a different user';
g_form.addErrorMessage(message);
g_form.clearValue('requested_for');
}
g_form.setValue('requested_for_email', emails);
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-12-2024 06:08 PM
Hi @litchick10
Please replace
g_form.addErrorMessage('requested_for', message);
with
g_form.addErrorMessage(message);
and retry.
Thanks and Regards
Amit Verma
Please mark this response as correct and helpful if it assisted you with your question.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-13-2024 09:30 AM
Still no message in order guide, works in regular catalog
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-14-2024 01:06 PM
Hi @litchick10 ,
I think you have to remove the line number one from your code
function onChange(control, oldValue, newValue, isLoading) {
g_form.clearMessages(); //This is the line which might be clearing you error message which you are tring to set
var user = g_form.getValue('requested_for');
var gr = new GlideAjax('getTableDataUtils');
gr.addParam('sysparm_name', 'getList');
gr.addParam('sysparm_query_table', 'sys_user');
gr.addParam('sysparm_query_fields', 'email,manager,name');
gr.addParam('sysparm_query_encodedQuery', "sys_idIN" + user);
gr.addParam('sysparm_query_order', 'sys_id');
gr.getXML(populateEmail);
function populateEmail(response) {
var emails = [];
var manager = [];
var uName = [];
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = answer.replace(/},{/g, '}},{{');
answer = answer.replace(/@app./g, "@");
var answerArr = answer.split('},{');
for (var i = 0; i < answerArr.length; i++) {
var answerObj = JSON.parse(answerArr[i]);
emails.push(answerObj.email.toString());
manager.push(answerObj.manager.toString());
uName.push(answerObj.name.toString());
}
if (manager == '') {
var message = uName + ' does not have a manager, Only users with managers can submit this request. Please select a different user';
g_form.addErrorMessage(message);
g_form.clearValue('requested_for');
}
g_form.setValue('requested_for_email', emails);
}
}
One more thing could you please help me with more information on which field you have written this onChange() client script?
because this might be repeatedly getting called and clearing that message

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-14-2024 02:29 PM
No, that just removes old messages, and it works in the catalog, not the order guide