glideajax call returning correct values in the log, but not setting correct value on catalog item

levino
Giga Guru

Hi 

please help me with the below

glideajax call returning correct values in the log, but not setting correct value on catalog item

 

cost centre returning wrong value on g_form.setvalue for some users

 

var getRequestedDetails = Class.create();
getRequestedDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	
	
		
	userInfo:function(){
		var result = this.newItem("result");
		var req_user = this.getParameter('sysparm_user');
		var user_detail = new GlideRecord('sys_user');
		user_detail.addQuery('sys_id',req_user);
		user_detail.query();
		while(user_detail.next())
			{
			result.setAttribute("company",user_detail.company);
			result.setAttribute("phone", user_detail.mobile_phone);
			result.setAttribute("email",user_detail.email);
			result.setAttribute("location",user_detail.location);
			result.setAttribute("location_name",user_detail.location.name);	
			result.setAttribute("street",user_detail.street);
			//result.setAttribute("manager",user_detail.manager);
			result.setAttribute("department",user_detail.department);
			result.setAttribute("dept",user_detail.department);
			result.setAttribute("vip",user_detail.vip);
			result.setAttribute("user_name",user_detail.user_name);
			result.setAttribute("cost_centre",user_detail.cost_center);
			result.setAttribute("employee_type",user_detail.u_employee_type);
			result.setAttribute("id",user_detail.employee_number);
			result.setAttribute("t1",user_detail.employee_number);
			result.setAttribute("t2",user_detail.employee_number);
			result.setAttribute("t3",user_detail.employee_number);
			result.setAttribute("t4",user_detail.employee_number);
			result.setAttribute("t5",user_detail.employee_number);
			result.setAttribute("opslist",user_detail.u_opslist);
			result.setAttribute("tcnz_bu",user_detail.u_ad_bu);	
			result.setAttribute("title",user_detail.title);
			result.setAttribute("workspace",user_detail.u_workspace_default);
			result.setAttribute("preferred_name",user_detail.u_preferred_name);
			result.setAttribute("first_name",user_detail.first_name);
			result.setAttribute("last_name",user_detail.last_name);
			result.setAttribute("start_date",user_detail.u_start_date);
			result.setAttribute("end_date",user_detail.u_end_date);
			if(user_detail.manager.active == true && user_detail.manager.locked_out == false){
				result.setAttribute("manager",user_detail.manager);
				result.setAttribute("manager_name",user_detail.manager.name);
			}
			else{
				result.setAttribute("manager",'');
			}
		}
		
	},

//onchange client script
function onChange(control, oldValue, newValue, isLoading) {
	if (isLoading || newValue == '') {
		return;
	}
	if(newValue != '')
		{
		var ga = new GlideAjax('getRequestedDetails');
		ga.addParam("sysparm_name","userInfo");
		ga.addParam("sysparm_user",newValue);
		ga.getXML(ajaxResponse);
	}
	
	function ajaxResponse(serverResponse) {
		var result = serverResponse.responseXML.getElementsByTagName("result");
		//alert("ALL"+result);
		var phone = result[0].getAttribute("phone");
		var com = result[0].getAttribute("company");
		var email = result[0].getAttribute("email");
		var loc = result[0].getAttribute("location");
		var mgr = result[0].getAttribute("manager");
		var dep = result[0].getAttribute("department");
		var costC = result[0].getAttribute("cost_centre");
		var EmpID = result[0].getAttribute("id");
		console.log("Cost Centre: " + costC);
		//alert("company"+com);
		
		g_form.setValue('phone',phone);
		g_form.setValue('email',email);
		g_form.setValue('company',com);
		g_form.setValue('manager',mgr);
		g_form.setValue('location',loc);
		g_form.setValue('department',dep);
		g_form.setValue('Cost_centre',costC);
		g_form.setValue('id',EmpID);
	}
	
	//Type appropriate comment here, and begin script below
	
}
	

 

 

1 ACCEPTED SOLUTION

Runjay Patel
Giga Sage

Hi @levino ,

 

Alert all the value which you are trying to set using setValue(). Also check catalog field name which you are trying to set. If value come from server then it will set it as well. Only for reference field you should use setDisplayValue() if you are returning name and if you are returning sys I’d then setValue() will work.

 

Please accept and like the solution if it helped.

View solution in original post

2 REPLIES 2

Runjay Patel
Giga Sage

Hi @levino ,

 

Alert all the value which you are trying to set using setValue(). Also check catalog field name which you are trying to set. If value come from server then it will set it as well. Only for reference field you should use setDisplayValue() if you are returning name and if you are returning sys I’d then setValue() will work.

 

Please accept and like the solution if it helped.

Hitoshi Ozawa
Giga Sage
Giga Sage

@levino try below.

Script Include:

var getRequestedDetails = Class.create();
getRequestedDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    userInfo: function() {
        try {
            var req_user = this.getParameter('sysparm_user');
            var user_detail = new GlideRecord('sys_user');
            if (user_detail.get(req_user)) {
                var result = {};
                result.company = user_detail.company.toString();
                result.phone = user_detail.mobile_phone.toString();
                result.email = user_detail.email.toString();
                result.location = user_detail.location.toString();
                result.location_name = user_detail.location.name.toString();
                result.street = user_detail.street.toString();
                //result.setAttribute("manager",user_detail.manager);
                result.department = user_detail.department.toString();
                result.dept = user_detail.department.toString();
                result.vip = user_detail.vip.toString();
                result.user_name = user_detail.user_name.toString();
                result.cost_centre = user_detail.cost_center.toString();
                result.employee_type = user_detail.u_employee_type.toString();
                result.id = user_detail.employee_number.toString();
                result.t1 = user_detail.employee_number.toString();
                result.t2 = user_detail.employee_number.toString();
                result.t3 = user_detail.employee_number.toString();
                result.t4 = user_detail.employee_number.toString();
                result.t5 = user_detail.employee_number;
                result.opslist = user_detail.u_opslist.toString();
                result.tcnz_bu = user_detail.u_ad_bu.toString();
                result.title = user_detail.title.toString();
                result.workspace = user_detail.u_workspace_default.toString();
                result.preferred_name = user_detail.u_preferred_name.toString();
                result.first_name = user_detail.first_name.toString();
                result.last_name = user_detail.last_name.toString();
                result.start_date = user_detail.u_start_date.toString();
                result.end_date = user_detail.u_end_date.toString();
                if (user_detail.manager.active == true && user_detail.manager.locked_out == false) {
                    result.manager = user_detail.manager.toString();
                    result.manager_name = user_detail.manager.name.toString();
                } else {
                    result.manager = "";
                }
                return JSON.stringify(result);
            }
            return null;
        } catch (err) {
            return null;
        }
    },
    type: 'getRequestedDetails'
});

 

Client Script

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    if (newValue != '') {
        var ga = new GlideAjax('getRequestedDetails');
        ga.addParam("sysparm_name", "userInfo");
        ga.addParam("sysparm_user", newValue);
        ga.getXML(ajaxResponse);
    }

    function ajaxResponse(serverResponse) {
        try {
            var userRecord = serverResponse.responseXML.documentElement.getAttribute("answer");
            if (userRecord) {
                var result = JSON.parse(userRecord);
                // alert("ALL:" + result);
                var phone = result.phone;
                var com = result.company;
                var email = result.email;
                var loc = result.location;
                var mgr = result.tmanager;
                var dep = result.department;
                var costC = result.cost_centre;
                var EmpID = result.id;
                alert("Cost Centre: " + costC);

                g_form.setValue('phone', phone);
                g_form.setValue('email', email);
                g_form.setValue('company', com);
                g_form.setValue('manager', mgr);
                g_form.setValue('location', loc);
                g_form.setValue('department', dep);
                g_form.setValue('Cost_centre', costC);
                g_form.setValue('id', EmpID);

            } else {
                g_form.clearValue('phone');
				g_form.clearValue('email');
				g_form.clearValue('company');
				g_form.clearValue('manager');
				g_form.clearValue('location');
				g_form.clearValue('department');
				g_form.clearValue('Cost_centre');
				g_form.clearValue('id');
            }

        } catch (err) {
            alert(err.message);
        }
    }
}

Execution result: (only have phone field)

HitoshiOzawa_0-1731057842802.png