Auto-populate location field on Catalog Item variable based on requested for

tom the
Giga Guru

Hi, People

I have to auto-populate several fields on a variable catalog item based on 'requested for'.

**I have it done over the auto-populate feature - the challenge is not to use it -

I have created the catalog client script and auto-populated the needed field but for location is displaying the sys ID --

g_form.setValue('requestor_location', result.location);-- or 'undefiend' when use --location.name--

 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }
    var result = g_form.getReference('requested_for', requestorInfo);

    function requestorInfo(result) {
        g_form.setValue('requestor_first_name', result.first_name);
        g_form.setValue('requestor_last_name', result.last_name);
        g_form.setValue('requestor_email', result.email);
        g_form.setValue('requestor_middle_name', result.middle_name);
        g_form.setValue('requestor_location', result.location);
        g_form.setValue('requestor_contact_no', result.mobile_phone);
        g_form.setValue('requestor_position_title', result.title);
        g_form.setValue('users_network_id', result.u_string_1);
        g_form.setValue('requestor_employee_number', result.employee_number);
    }
}
 
tomthe_0-1740111568271.png

Searching over the community, I'm missing the script include, also struggling on how to configure it done!

thanks in advance for any help!!!

1 ACCEPTED SOLUTION

tom the
Giga Guru

Thank you for all your help, I solved it the following way.

Script include

Name: getUserDetails -- 

Glide AJAX enabled: TRUE --- client callable ---

 

Script

var getUserDetails = Class.create();

getUserDetails.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

    getUserInfo: function() {

        var userID = this.getParameter("sysparm_userID");

        var userGr = new GlideRecord("sys_user");

        userGr.addQuery("sys_id", userID);

        userGr.query();

        if (userGr.next()) {

            var obj = {};

            obj.rfname = userGr.getDisplayValue("first_name");

            obj.rmname = userGr.getDisplayValue("middle_name");

            obj.rlname = userGr.getDisplayValue("last_name");

            obj.rlocation = userGr.getDisplayValue("location");

            obj.remail = userGr.getDisplayValue("email");

            obj.rmphone = userGr.getDisplayValue("mobile_phone");

            obj.rptitle = userGr.getDisplayValue("title");

            obj.renumber = userGr.getDisplayValue("employee_number");

            obj.rntid = userGr.getDisplayValue("u_string_1");            

            var json = new JSON();

            var data = json.encode(obj);

            return data;

        }

    },

    type: 'getUserDetails'

});

 

Catalog Client Script

Name: Requestor information

Type: onChange

Variable name: Requestor Details >> requeted_for -- 'Requestor Details' = Variable set // 'Requested For' = variable --

 

Script

 

function onChange(control, oldValue, newValue, isLoading) {

    if (isLoading || newValue == '') {

        return;

    }

    var ga = new GlideAjax('getUserDetails');

    ga.addParam('sysparm_name', 'getUserInfo');

    ga.addParam('sysparm_userID', newValue);

    ga.getXML(callback);

    function callback(response) {

        var answer = response.responseXML.documentElement.getAttribute('answer');

        answer = answer.evalJSON();

        g_form.setValue("requestor_first_name", answer.rfname);

        g_form.setValue("requestor_middle_name", answer.rmname);

        g_form.setValue("requestor_last_name", answer.rlname);

        g_form.setValue("requestor_location", answer.rlocation);

        g_form.setValue("requestor_email", answer.remail);

        g_form.setValue("requestor_contact_no", answer.rmphone);

        g_form.setValue("requestor_employee_number", answer.renumber);

        g_form.setValue("requestor_position_title", answer.rptitle);

        g_form.setValue("users_network_id", answer.rntid);

    }

}

View solution in original post

7 REPLIES 7

Rushi Savarkar
Kilo Sage

Hello @tom the 

Here is script include code and onchange client script 

Script Include client callable should be true:-

var getUserDetails = Class.create();

getUserDetails.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

    getUserInfo: function(){

        var userID = this.getParameter("sysparm_userID");

        var obj={};

        var userGr = new GlideRecord("sys_user");

        userGr.addQuery("sys_id", userID);

        userGr.query();

        if(userGr.next()){

            obj['email'] = userGr.email.toString();

            obj['manager'] = userGr.manager.toString();

            obj['mobile_phone']= userGr.mobile_phone.toString();

            obj['location']=userGr.location.toString();

 

            //gs.info("manager: " + userGr.manager.)

        }

        return JSON.stringify(obj);

    },

 

    type: 'getUserDetails'

});

OnChange Client Script: 

function onChange(control, oldValue, newValue, isLoading) {

    if (isLoading || newValue != '') {

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

        var ga = new GlideAjax('script_include_name');

        ga.addParam('sysparm_name', 'getUserInfo');

        ga.addParam('sysparm_userID', newValue);

        ga.getXML(callback);

    }

 

    function callback(response) {

        var answer = response.responseXML.documentElement.getAttribute('answer');

        var ansParse = JSON.parse(answer);

        g_form.setValue("email_id", ansParse.email.toString());

        g_form.setValue("reporting_manager", ansParse.manager.toString());

        g_form.setValue("mobile_number",ansParse.mobile_phone.toString());

        g_form.setValue("location",ansParse.location.toString());

    }

 

}

 

If it helped, please marked it as helpful

Thanks!

If my response helped you, please accept the solution and mark it as helpful.
Thank You!

tom the
Giga Guru

Thank you for all your help, I solved it the following way.

Script include

Name: getUserDetails -- 

Glide AJAX enabled: TRUE --- client callable ---

 

Script

var getUserDetails = Class.create();

getUserDetails.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

    getUserInfo: function() {

        var userID = this.getParameter("sysparm_userID");

        var userGr = new GlideRecord("sys_user");

        userGr.addQuery("sys_id", userID);

        userGr.query();

        if (userGr.next()) {

            var obj = {};

            obj.rfname = userGr.getDisplayValue("first_name");

            obj.rmname = userGr.getDisplayValue("middle_name");

            obj.rlname = userGr.getDisplayValue("last_name");

            obj.rlocation = userGr.getDisplayValue("location");

            obj.remail = userGr.getDisplayValue("email");

            obj.rmphone = userGr.getDisplayValue("mobile_phone");

            obj.rptitle = userGr.getDisplayValue("title");

            obj.renumber = userGr.getDisplayValue("employee_number");

            obj.rntid = userGr.getDisplayValue("u_string_1");            

            var json = new JSON();

            var data = json.encode(obj);

            return data;

        }

    },

    type: 'getUserDetails'

});

 

Catalog Client Script

Name: Requestor information

Type: onChange

Variable name: Requestor Details >> requeted_for -- 'Requestor Details' = Variable set // 'Requested For' = variable --

 

Script

 

function onChange(control, oldValue, newValue, isLoading) {

    if (isLoading || newValue == '') {

        return;

    }

    var ga = new GlideAjax('getUserDetails');

    ga.addParam('sysparm_name', 'getUserInfo');

    ga.addParam('sysparm_userID', newValue);

    ga.getXML(callback);

    function callback(response) {

        var answer = response.responseXML.documentElement.getAttribute('answer');

        answer = answer.evalJSON();

        g_form.setValue("requestor_first_name", answer.rfname);

        g_form.setValue("requestor_middle_name", answer.rmname);

        g_form.setValue("requestor_last_name", answer.rlname);

        g_form.setValue("requestor_location", answer.rlocation);

        g_form.setValue("requestor_email", answer.remail);

        g_form.setValue("requestor_contact_no", answer.rmphone);

        g_form.setValue("requestor_employee_number", answer.renumber);

        g_form.setValue("requestor_position_title", answer.rptitle);

        g_form.setValue("users_network_id", answer.rntid);

    }

}