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

Hi Mi,

Update the script below as:

Added some info message

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_core_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.getValue('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'
});

 

Thanks,

CB

Hi,

Thanks for your comment. Yes, it has been acquired.

 

Regards,

Hi Mi,

I just checked in the my PDI and found that ob_demand_date field is not present in the case table.

So can you verfify the name of ob_demand_date field in the hr case tabel.

The field name is not correct or the data is not present.

Some screenshot to get the value if the field is present in the from:

Open the hr record and right click on the the date field which we are referring here and select the show 

 

 

find_real_file.png

 

Copy the name and put in the script include:

 

find_real_file.png

This is field name.

Update the field name with the correct field then it should work:

 

Mark helpful and correct if it helps.

Thanks,

CB

Hi,

Thank you, I was missing '1'.

 

But this is not kept as a field in the table.

Variables of Record Producer.

In this case, does the writing style change?

 

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.getValue('ob_demand_date1'));
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'
});

Regards,

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