Autopopulate user details onChange of user name in form

charitha ts
Tera Contributor

I have created the script include+ on change client script 

Script Include::

var KPE_Reveiw_getUserDetailsAJAX = Class.create();
KPE_Reveiw_getUserDetailsAJAX.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getUserDetails: function() {
       
        var result = this.newItem("result");
        var user = new GlideRecord('sys_user');
        user.addQuery('sys_id', this.getParameter('sysparm_userId'));
        user.query();
        if(user.next())
            {
            result.setAttribute("phone", user.phone);
            result.setAttribute("email", user.email);
            //result.setAttribute("location", user.location);
        }
       On change client scrpit
 
 
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    var userDetails = new GlideAjax('KPE_Reveiw_getUserDetailsAJAX');
    userDetails.addparm('sysparm_name', 'getUserDetails');
    userDetails.addParam('sysparn_Userid', g_form.getValue('u_caller'));
    user.getXML(userDetails);

    userDetails.getXMLAnswer(function(response) {
        var userDetails = JSON.parse(response);


        g_form.setValue('u_email_id', email);
        g_form.setValue('u_phone_number', mobile_phone);
}
}
 
But still the caller email id and phone number is not populating email id(string) u_emailid and phone number (interger)u_phone_number
2 REPLIES 2

Dnyaneshwaree
Mega Sage

Please refer below code and update it as per your requirement:

Catalog client script: (Onchange - variable=u_name_closure)

 

  var empsysID = g_form.getValue('u_name_closure');
    //alert(empsysID);
    var gaIC_Get_user_values = new GlideAjax("IC_Get_user_name_comp");
    gaIC_Get_user_values.addParam("sysparm_name", "getEmpDetails");
    gaIC_Get_user_values.addParam("sysparm_user", empsysID);
    gaIC_Get_user_values.getXML(setEmployee);

    function setEmployee(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        var userObject = JSON.parse(answer);

        if (userObject.empID) {
            //alert("yesinif");
            g_form.setDisplay("employee_id_ro", true);
			g_form.setVisible("employee_id_ro", true);
            g_form.setValue("employee_id_ro", userObject.empID);
        } else {
           g_form.setDisplay("employee_id_ro", false);
        }

        if (userObject.vpID) {
            g_form.setDisplay("viewpoint_id_ro", true);
            g_form.setValue("viewpoint_id_ro", userObject.vpID);
        } else {
            g_form.setDisplay("viewpoint_id_ro", false);
        }
        g_form.setValue("emp_company", userObject.company);
    }

}

 

Script Include:

 

getEmpDetails: function(){
		var returnObj = {};
		var empsysID = this.getParameter('sysparm_user');
		var grUser = new GlideRecord('sys_user');
        grUser.addQuery('sys_id', empsysID);
        grUser.query();
        if (grUser.next()) {
            returnObj.empID = grUser.getValue('employee_number');
			returnObj.vpID = grUser.getValue('u_viewpointid');
            returnObj.company = grUser.getDisplayValue('company');
        }
        return JSON.stringify(returnObj);
	},

 


Please accept my solution if it works for you and thumps up to mark it as helpful.

Thank you!!

Please accept my solution if it works for you and thumps up to mark it as helpful.
Thank you!!

Dnyaneshwaree Satpute
Tera Guru

Harish Bainsla
Kilo Patron
Kilo Patron

Hi @charitha ts  check below video have same use case

https://youtu.be/1aCfa4pwlBg?si=I3ROdvtqc7bvnNpu