Onload Catalogue client script not working

Vurukonda Sai 1
Tera Contributor

Hi Team, 

I have problem with catalogue client script. 
Requirement is Loged in user department contains HR user can able to access the HR related catagory. 
I'm unable get catagory. Could please help me on this.

 

script here: 

function onLoad() {

    var ga = new GlideAjax('UserDetails');
    ga.addParam('sysparm_name', 'getInfo');
    ga.addParam('sysparm_user_id', g_user.userID);
    ga.getXML(getResponse);

    function getResponse(response) {

        var answer = JSON.parse(response.responseXML.documentElement.getAttribute("answer"));

        var department = answer.department;
       //var country = answer.country;

        if (department ==+ 'HR|| g_user.hasRole('admin') /*Human Resource Department*/ /*&& ( country.toString().toLowerCase() == 'mx')*/) {
            g_form.addOption('u_category', "OneStream HR", "OneStream HR");
        } else {
            g_form.removeOption('u_category', "OneStream HR");
        }
    }
}


Script Include: 
var UserDetails = Class.create();
UserDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getInfo: function() {
        var obj = {};

        obj.title = '';
        obj.manager = '';
        obj.department = '';
        obj.location = '';
        obj.email = '';
        obj.phone = '';
        obj.company = '';
        obj.region = '';
        obj.country = '';
        obj.site = '';

        var id = this.getParameter('sysparm_user_id');
        var gr = new GlideRecord('sys_user');
        if (gr.get(id)) {
            obj.title = gr.title.toString();
            obj.manager = gr.manager.toString();
            obj.department = gr.department.toString();
            obj.location = gr.location.toString();
            obj.email = gr.email.toString();
            obj.phone = gr.phone.toString();
            obj.company = gr.company.getDisplayValue();
            obj.region = gr.u_region.toString(); //region
            obj.site = gr.u_site_code.toString();
            obj.country = gr.country.toString();
        }

        return JSON.stringify(obj);

    },
    getInfo1: function() {
        var obj = {};

        obj.title = '';
        obj.manager = '';
        obj.department = '';
        obj.location = '';
        obj.email = '';
        obj.phone = '';
        obj.company = '';
        obj.region = '';
        obj.location1 = '';

        var id = this.getParameter('sysparm_user_id');
        var gr = new GlideRecord('sys_user');
        if (gr.get(id)) {
            obj.title = gr.title.toString();
            obj.manager = gr.manager.toString();
            obj.department = gr.department.toString();
            obj.location = gr.location.toString();
            obj.location1 = gr.location.getDisplayValue();
            obj.email = gr.email.toString();
            obj.phone = gr.phone.toString();
            obj.company = gr.company.getDisplayValue();
            obj.region = gr.u_region.toString(); //region
        }

        return JSON.stringify(obj);

    },

    getInfo2: function() {

        var obj = {};

        var id = this.getParameter('sysparm_user_id');
        var gr = new GlideRecord('sys_user');

        if (gr.get(id)) {

            obj.region = gr.u_region ? gr.u_region.toString() : '';
            obj.country = gr.location.country ? gr.location.country.toString() : '';
            obj.site = gr.u_site_code ? gr.u_site_code.toString() : '';
            obj.department = gr.department ? gr.department.toString() : '';
           
        }

        return JSON.stringify(obj);

    },

    type: 'UserDetails'
});
2 ACCEPTED SOLUTIONS

Nilesh Pol
Tera Guru

@Vurukonda Sai 1 verify below fix scripts:

Client Script:

function onLoad() {
var ga = new GlideAjax('UserDetails');
ga.addParam('sysparm_name', 'getInfo');
ga.addParam('sysparm_user_id', g_user.userID);
ga.getXML(getResponse);

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

// Corrected department check
if (department === 'HR' || g_user.hasRole('admin')) {
g_form.addOption('u_category', "OneStream HR", "OneStream HR");
} else {
g_form.removeOption('u_category', "OneStream HR");
}
}
}

 

Script Include:

var UserDetails = Class.create();
UserDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getInfo: function() {
var obj = {};
var id = this.getParameter('sysparm_user_id');
var gr = new GlideRecord('sys_user');
if (gr.get(id)) {
obj.department = gr.department.toString();
// Other fields...
}
return JSON.stringify(obj);
},
type: 'UserDetails'
});

View solution in original post

Ankur Bawiskar
Tera Patron
Tera Patron

@Vurukonda Sai 1 

so what debugging did you do?

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

3 REPLIES 3

Nilesh Pol
Tera Guru

@Vurukonda Sai 1 verify below fix scripts:

Client Script:

function onLoad() {
var ga = new GlideAjax('UserDetails');
ga.addParam('sysparm_name', 'getInfo');
ga.addParam('sysparm_user_id', g_user.userID);
ga.getXML(getResponse);

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

// Corrected department check
if (department === 'HR' || g_user.hasRole('admin')) {
g_form.addOption('u_category', "OneStream HR", "OneStream HR");
} else {
g_form.removeOption('u_category', "OneStream HR");
}
}
}

 

Script Include:

var UserDetails = Class.create();
UserDetails.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getInfo: function() {
var obj = {};
var id = this.getParameter('sysparm_user_id');
var gr = new GlideRecord('sys_user');
if (gr.get(id)) {
obj.department = gr.department.toString();
// Other fields...
}
return JSON.stringify(obj);
},
type: 'UserDetails'
});

Ankur Bawiskar
Tera Patron
Tera Patron

@Vurukonda Sai 1 

so what debugging did you do?

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Shraddha Kadam
Mega Sage

Hello @Vurukonda Sai 1 ,

 

Update your client script with the below code to show HR Category based on the department -

function onLoad() {
    var ga = new GlideAjax('UserDetails');
    ga.addParam('sysparm_name', 'getInfo');
    ga.addParam('sysparm_user_id', g_user.userID);
    ga.getXML(getResponse);

    function getResponse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        alert(answer);

        // Corrected department check
        if (answer == 'true') {
			alert("Line 14");
            g_form.addOption('request_type', "HR", "HR");
        } else {
            g_form.removeOption('request_type', "HR");
        }
    }

}

 

Update your script Include as well with the below code as well. Make sure your script include a client callable.

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

    getInfo: function() {
        var obj = '';
        var dept = '';
        var id = this.getParameter('sysparm_user_id');
        var gr = new GlideRecord('sys_user');
        if (gr.get(id)) {
            dept = gr.department.getDisplayValue();
			gs.addInfoMessage("Department is - "+dept);
        }
        if (dept == "HR" || gs.getUser().hasRole('admin')) {
			gs.addInfoMessage("Inside line 14");
            return 'true';
        } else {
            return 'false';
        }
    },

    type: 'UserDetails'
});

 

The above script worked for me on my PDI. 

If my response was helpful, please mark it as correct and helpful.
Thank you.