- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-17-2020 05:55 AM
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.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-17-2020 07:02 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-17-2020 06:06 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-17-2020 06:12 AM
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,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-17-2020 06:21 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-17-2020 06:26 AM
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'
});