How to Auto Populate Manager name when selected the user in catalogue item request

Suresh36
Tera Expert

If user selects any Requester in 'USER NAME' field. Then 'Line Manager' field should be auto populated with requester Manager. PFA

My Code is :

Script Include: 

 var getUserDetails = Class.create();
getUserDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {   

 getManager:function() {

        var user = this.getParameter('sysparm_manager');
        gs.log('USER Manager :'+user);
        var mgr = new GlideRecord('sys_user');
        mgr.addQuery('manager', user);
        mgr.addQuery();
        gs.log('manager1 :' + mgr.manager);
        if(mgr.next()){
            gs.log('manager2 :' + mgr.manager);
            return mgr.manager;
        }

    } ,

    type: 'getUserDetails'
});

OnChange Client script:

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

    if (newValue == '') {
        g_form.clearValue('linemanager');
    }

    var ga = new GlideAjax('getUserDetails');
    ga.addParam('sysparm_manager', 'getManager');
    ga.addParam('sysparm_manager', g_form.getValue('user_name'));
    ga.getXML(getManagerDetails);

}

function getManagerDetails(response) {
    var mgrVal = response.responseXML.documentElement.getAttribute("answer");
     alert(mgrVal);
    g_form.setValue("linemanager", mgrVal);
}

 

 

Please help on this

1 ACCEPTED SOLUTION

Hello Suresh 

please replace this line   mg.addQuery(); WITH mg.query(); in the script include and try

Please mark my answer correct if it helps you

Just replace your script include to below

var getUserLineManager = Class.create();
getUserLineManager.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getManager:function() {

        var user = this.getParameter('sysparm_req');
        var mg = new GlideRecord("sys_user");
        mg.addQuery("sys_id", user);
        mg.query();
        if(mg.next()){
            return mg.manager.toString();
        }
    },
    type: 'getUserLineManager'
});

Please mark my answer correct if it helps you

View solution in original post

4 REPLIES 4

Mohith Devatte
Tera Sage
Tera Sage

Hello,

You can write an on change client script on requestor field and call a script include for this using glide ajax

Client script:

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

	if(newValue == ''){
		g_form.clearValue('manager_field_name');
	}

	var ga = new GlideAjax('getUserLineManager');
	ga.addParam('sysparm_name', "getManager");
	ga.addParam('sysparm_req', g_form.getValue('requestor_field_back_end_name'));
	ga.getXMLAnswer(function(answer){
		
			g_form.setValue("manager_field_name", answer);
		
	});
	

}

Script include:

var getUserLineManager = Class.create();
getUserLineManager.prototype = Object.extendsObject(AbstractAjaxProcessor, {

	getManager:function() {

		var user = this.getParameter('sysparm_req');
		var mg = new GlideRecord("sys_user");
		mg.addQuery("sys_id", user);
		mg.addQuery();
		if(mg.next()){
			return mg.manager.toString();
		}

	} ,

	type: 'getUserLineManager'
});

Please mark my answer correct if it helps you

var getUserLineManager = Class.create();
getUserLineManager.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getManager:function() {

        var user = this.getParameter('sysparm_req');
        var mg = new GlideRecord("sys_user");
        mg.addQuery("sys_id", user);
        mg.addQuery();
        if(mg.next()){
            return mg.manager.toString();
        }
    },
    type: 'getUserLineManager'
});

 

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

    if(newValue == ''){
        g_form.clearValue('linemanager');
    }

    var ga = new GlideAjax('getUserLineManager');
    ga.addParam('sysparm_name', "getManager");
    ga.addParam('sysparm_req', g_form.getValue('user_name'));
    ga.getXMLAnswer(function(answer){
        alert(answer);
            g_form.setValue("linemanager", answer);
        
    });
    

}

i am getting answer as 'null' value

Hello Suresh 

please replace this line   mg.addQuery(); WITH mg.query(); in the script include and try

Please mark my answer correct if it helps you

Just replace your script include to below

var getUserLineManager = Class.create();
getUserLineManager.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getManager:function() {

        var user = this.getParameter('sysparm_req');
        var mg = new GlideRecord("sys_user");
        mg.addQuery("sys_id", user);
        mg.query();
        if(mg.next()){
            return mg.manager.toString();
        }
    },
    type: 'getUserLineManager'
});

Please mark my answer correct if it helps you

SumanthDosapati
Mega Sage
Mega Sage

Hi Suresh,

Just change this line in client script

ga.addParam('sysparm_manager', 'getManager');

to

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

 

Mark as correct and helpful if it solved your query.

Regards,
Sumanth