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,

OH!

It worked!

Special Thanks!!

 

Regards,

Harshal Gawali
Giga Guru

Hello,

In client script, have you check what value you get in parentCase variable?

function onLoad() {
 var parentCase = getParameterValue('sysparm_parentCase');
 alert("parentCase :"+parentCase);         //check parentCase have any value
 var detailsAjax = new GlideAjax('sn_hr_le.getNumber');
 detailsAjax.addParam('sysparm_name', 'getCase');
 detailsAjax.addParam('sysparm_var', parentCase);
 detailsAjax.getXML(callbackGetSubjectPersonDetails);
}

 

Regards,

Harshal

Hi,

Thanks for your comment.

Yes, it has been acquired.

 

Regards,

Mike Patel
Tera Sage

Below script should work as long as you have variable called ob_demand_date and has value on parent case.

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'
});

Hi,

Thank you for your comment.

It worked it

 

Regards,