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

litchick10
Tera Guru

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);
    }
}

 

 

 

 

13 REPLIES 13

Amit Verma
Kilo Patron
Kilo Patron

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.

Still no message in order guide, works in regular catalog

IamAmolB
Tera Guru

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

No, that just removes old messages, and it works in the catalog, not the order guide