How to call a script include from a catalog client script

Mi4
Tera Expert

Hi,

I want to know how to call a script include from a catalog client script.

However, now the script include is undefined and the log client script returns null.

What is wrong?

Script include below:

var getNumber = Class.create();
getNumber.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
getCase: function() {
var hr_caseID = this.getParameter('sysparm_var'); // sys_id
}
var gr_hrcase = new GlideRecord('sn_hr_core_case');
gr_hrcase.addQuery('sys_id', hr_caseID);
gr_hrcase.query();
if (gr_hrcase.next()) {
gs.info(gr_hrcase.variables.ob_demand_date);
var array = {};
array.ob_demand_date = gr_hrcase.ob_demand_date.toString();
array.last_demand_date = gr_hrcase.last_demand_date.toString();
array.reason = gr_hrcase.reason.toString();
var answer = JSON.stringify(array);
return answer;
}
},

type: 'getNumber'
});

Catalog client script below;

function onLoad() {
var parentCase = getParameterValue('sysparm_parentCase');
var detailsAjax = new GlideAjax('sn_hr_le.getNumber');
detailsAjax.addParam('sysparm_name', 'getCase');
detailsAjax.addParam('sysparm_var', parentCase);
detailsAjax.getXML(callbackGetSubjectPersonDetails);
}

function callbackGetSubjectPersonDetails(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var res = JSON.parse(answer);
if (answer != '') {
console.log(answer +'YES');
g_form.setValue('last_demand_date', res.last_demand_date);
} else {
console.log(answer+'NO');
}
}
function getParameterValue(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
try {
var results = regex.exec(parent.angular.element('[sn-atf-area="SC Catalog Item"]').scope().options.url);

if (results == null) {
return "";
} else {
return unescape(results[1]);
}
} catch (e) {}
}

  Thanks in advance.

1 ACCEPTED SOLUTION

Hi Mi,

Then it should work:

Update the script as:

As this should work just added last_demand_date as the variables as well:

 

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

getCase: function() {
 var hr_caseID = this.getParameter('sysparm_var'); // sys_id
 gs.info('@inside script include' + hr_caseID);

var gr_hrcase = new GlideRecord('sn_hr_le_case');
 gr_hrcase.addQuery('sys_id', hr_caseID);
 gr_hrcase.query();
 gs.info('@row count ' + gr_hrcase.getRowCount());
 if (gr_hrcase.next()) {
 gs.info('@inside loop');
 gs.info('@DATE is ' + gr_hrcase.variables.ob_demand_date1);
 var array = {};
 array.ob_demand_date = gr_hrcase.variables.ob_demand_date1.toString();
 array.last_demand_date = gr_hrcase.variables.last_demand_date1.toString();
 array.reason = gr_hrcase.reason.toString();
 var answer = JSON.stringify(array);
 return answer;
 }
 },

type: 'getNumber'
});

 

 

Mark helpful and correct if it helps.

Thanks,

CB

View solution in original post

14 REPLIES 14

Chander Bhusha1
Tera Guru

Hi mI,

You have used closed curly braces right after first line for function call.

remove this:

Updated script:

Server side:

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

getCase: function() {
var hr_caseID = this.getParameter('sysparm_var'); // sys_id
gs.info('@inside script include');

 var gr_hrcase = new GlideRecord('sn_hr_core_case');
 gr_hrcase.addQuery('sys_id', hr_caseID);
 gr_hrcase.query();
 if (gr_hrcase.next()) {
 gs.info(gr_hrcase.variables.ob_demand_date);
 var array = {};
array.ob_demand_date = gr_hrcase.ob_demand_date.toString();
 array.last_demand_date = gr_hrcase.last_demand_date.toString();
 array.reason = gr_hrcase.reason.toString();
 var answer = JSON.stringify(array);
return answer;
 }

 },

type: 'getNumber'
});

 

 

 

Mark helpuful and correct if it helps.

Thanks,

CB 

Hi,

Oh, Thank you.

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

getCase: function() {
var hr_caseID = this.getParameter('sysparm_var'); // sys_id
gs.info('@inside script include');

var gr_hrcase = new GlideRecord('sn_hr_core_case');
gr_hrcase.addQuery('sys_id', hr_caseID);
gr_hrcase.query();
if (gr_hrcase.next()) {
gs.info('DATE '+ gr_hrcase.variables.ob_demand_date);
var array = {};
array.ob_demand_date = gr_hrcase.ob_demand_date.toString();
array.last_demand_date = gr_hrcase.last_demand_date.toString();
array.reason = gr_hrcase.reason.toString();
var answer = JSON.stringify(array);
return answer;
}

},

type: 'getNumber'
});

But It remains "undefined".

 

Regards,

HI Mi,

The variable won't work here:(since its not record producer of catalog item so variables won't work).

If the opened date is a field of hr core case then you can use it like this 

Directly fetch the the field

Update the script include as :

 

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

getCase: function() {
var hr_caseID = this.getParameter('sysparm_var'); // sys_id
gs.info('@inside script include');

 var gr_hrcase = new GlideRecord('sn_hr_core_case');
 gr_hrcase.addQuery('sys_id', hr_caseID);
 gr_hrcase.query();
 if (gr_hrcase.next()) {
 gs.info('@DATE is '+ gr_hrcase.ob_demand_date.toString());
 var array = {};
array.ob_demand_date = gr_hrcase.ob_demand_date.toString();
 array.last_demand_date = gr_hrcase.last_demand_date.toString();
 array.reason = gr_hrcase.reason.toString();
 var answer = JSON.stringify(array);
return answer;
 }

 },

type: 'getNumber'
});

 

 

Mark helpful and correct if it helps.

Thanks,

CB

HI,

Thank you for your advice.
But it doesn't show up in the log.

 

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

getCase: function() {
var hr_caseID = this.getParameter('sysparm_var'); // sys_id
gs.info('@inside script include');

var gr_hrcase = new GlideRecord('sn_hr_core_case');
gr_hrcase.addQuery('sys_id', hr_caseID);
gr_hrcase.query();
gs.info(gr_hrcase.getRowCount());
if (gr_hrcase.next()) {
gs.info('@DATE is ' + gr_hrcase.ob_demand_date.toString());
var array = {};
array.ob_demand_date = gr_hrcase.ob_demand_date.toString();
array.last_demand_date = gr_hrcase.last_demand_date.toString();
array.reason = gr_hrcase.reason.toString();
var answer = JSON.stringify(array);
return answer;
}
},

type: 'getNumber'
});