The CreatorCon Call for Content is officially open! Get started here.

OnLoad Catalog Client Script on sctask Need Help

Brett21
Tera Guru

I have a requirement on the catalog task for my catalog item.  Based on the requested for company hide/show a specific variable on the catalog task.

I created an Onload catalog clients script (GlideAjax) and I don't know what it is that I am missing.  Any help as an extra pair of eyes definitely helps.

I have tried g_form.getValue('request_item.request.requested_for') & g_form.getValue('requested_for') neither works. The call alert comes back as null

Catalog Client Script

alert('Start Script');
	var request_item = g_form.getValue('request_item');

    if (request_item == 'New Employee_Non Employee Mailbox') {
        var user = g_form.getValue('requested_for');
    }
    var global = new GlideAjax('global.catalogUtils');
    global.addParam('sysparm_name', 'getUserCompany');
    global.addParam('sysparm_userid', user);
    global.getXML(getUserComp);


    function getUserComp(response) {
        var call = response.responseXML.documentElement.getAttribute("answer");
        alert(call);
        if (call == 'AAE') {
            g_form.setMandatory('authorizing_sp9_7_number', true);
            g_form.setDisplay('authorizing_sp9_7_number', true);

        } else {
            g_form.setMandatory('authorizing_sp9_7_number', false);
            g_form.setDisplay('authorizing_sp9_7_number', false);
        }
    }
}

 

Script Include using the getUserCompany Function

var catalogUtils = Class.create();
catalogUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getPrivilegedRoleFunction: function() {
        var privileged = this.getParameter('sysparm_privilegedrole');
        var result = '';
        var elook = new GlideRecord('u_req_lookups');
        elook.addEncodedQuery('u_catalog_item=10396995db1a101016dbe9c948961957^u_lookup_description=Privileged-Role-Function^u_active=true^u_lookup1=' + privileged);
        elook.query();
        while (elook.next()) {
            result += (',' + elook.u_lookup2);
        }
        return result;
    },
    getUserCompany: function() {
        var userId = this.getParameter('sysparm_userid');
        var ans;
        var gr = new GlideRecord('sys_user');
        gr.addQuery('sys_id', userId);
        gr.query();
        if (gr.next()) {
            ans = gr.getDisplayValue('company');
        }
        return ans;
    },
    getClosureDetails: function(requestedItemId) {
        var flag = 0;
        var flag1 = 0;
        var task1 = new GlideRecord('sc_task');
        task1.addQuery('request_item', requestedItemId);
        task1.query();
        flag = task1.getRowCount();
        var task = new GlideRecord('sc_task');
        task.addQuery('request_item', requestedItemId);
        task.addQuery('state', '7');
        task.query();
        flag1 = task.getRowCount();
		gs.log('Flag: '+flag+' '+'Flag1: '+flag1);
        if (flag == flag1) {
            return 'yes';
        }else{
			return 'no';
		}
    },

    type: 'catalogUtils'
});
1 ACCEPTED SOLUTION

Srinivasulu Lag
ServiceNow Employee
ServiceNow Employee

Hi Brett,

Please check following line is getting executed or not.

var user = g_form.getValue('requested_for');

Assuming requested_for is direct column on request_item table but if it is a reference table field then you need to access with reference_field_name.requested_for.

More ever, declare the "user" variable out side the if loop.

Thanks,

Srinivasulu Laggala

 

View solution in original post

1 REPLY 1

Srinivasulu Lag
ServiceNow Employee
ServiceNow Employee

Hi Brett,

Please check following line is getting executed or not.

var user = g_form.getValue('requested_for');

Assuming requested_for is direct column on request_item table but if it is a reference table field then you need to access with reference_field_name.requested_for.

More ever, declare the "user" variable out side the if loop.

Thanks,

Srinivasulu Laggala