Script Include
Update list of records from multi-row update set(Vendor Engagement Details)
getEngagementDetailsUsingPAN: function() { var dataArray = []; var Engagement_Data = {}; var VendorPAN = this.getParameter('sysparam_vndr_PAN'); var Eng_Details = new GlideRecord("sn_vdr_risk_asmt_vendor_engagement"); Eng_Details.addQuery('notes', VendorPAN.toString()); Eng_Details.query(); while (Eng_Details.next()) { Engagement_Data = {}; Engagement_Data.engagement_name_pan = Eng_Details.sys_id.toString(); Engagement_Data.engagement_status_pan = Eng_Details.getDisplayValue("status"); Engagement_Data.engagement_type_pan = Eng_Details.getDisplayValue("type"); Engagement_Data.risk_rating_pan = Eng_Details.getDisplayValue("risk_rating"); dataArray.push(Engagement_Data); } return JSON.stringify(dataArray); },
var ga = new GlideAjax('sn_vdr_risk_asmt.vendor_serach_client'); //calling script include ga.addParam('sysparm_name', 'getEngagementDetails'); //Script include function ga.addParam('sysparam_vndr_id', newValue); //On change Value ga.getXML(setUserDet); function setUserDet(response) { var answer = response.responseXML.documentElement.getAttribute("answer"); //alert("Final Answer"+answer); g_form.setValue('engagement_details', answer); // Add your Variable set Name }
Set TimeZone for Service Offerings to create the SLA based on Service Offerings
Decode SLA timezone choice values (set via com.snc.sla.timezone.source property) into actual timezone values.
Called by TaskSLA()
var SLATimezone = Class.create();
// decode com.snc.sla.timezone.source into real field values
// (saves an eval(), and allows more flexible choices based upon task record type)
SLATimezone.source = function(source, /* task_sla */ gr, taskGr) {
if (!taskGr || taskGr.sys_id.nil())
taskGr = gr.task.getRefRecord();
switch(source) {
// The caller's time zone
case 'task.caller_id.time_zone':
return (SLATimezone._getCaller(taskGr)).time_zone;
// The SLA definition's time zone
case 'sla.timezone':
return gr.sla.timezone;
// The CI's location's time zone
case 'task.cmdb_ci.location.time_zone':
return taskGr.cmdb_ci.location.time_zone;
// The task's location's time zone
case 'task.location.time_zone':
return taskGr.location.time_zone;
// The caller's location's time zone (old and new property values)
case 'task.caller_id.location.u_time_zone':
case 'task.caller_id.location.time_zone':
return (SLATimezone._getCaller(taskGr)).location.time_zone;
// The tasks service offerings location timezone
case 'task.service_offering.location.time_zone':
return taskGr.service_offering.location.time_zone;
default:
return null;
}
};
SLATimezone._getCaller = function(task) {
var task_type = task.getRecordClassName();
switch(task_type) {
case 'incident':
return task.caller_id;
case 'sc_request':
return task.requested_for;
case 'sc_req_item':
return task.requested_for ? task.requested_for : task.request.requested_for;
case 'sc_task':
return task.request_item.requested_for ? task.request_item.requested_for : task.request_item.request.requested_for;
case 'change_request':
return task.requested_by;
case 'change_task':
return task.change_request.requested_by;
case 'kb_submission':
return task.submitted_by;
case 'grc_activity':
return task.requested_by;
case 'wm_order':
return task.caller;
case 'hr_case':
return task.opened_for;
case 'hr_case_operations':
return task.opened_for;
case 'hr_case_payroll':
return task.opened_for;
case 'hr_case_performance':
return task.opened_for;
case 'hr_case_talent_management':
return task.opened_for;
case 'hr_case_total_rewards':
return task.opened_for;
case 'hr_case_workforce_admin':
return task.opened_for;
case 'sn_customerservice_case' :
return task.contact;
default:
if (new GlidePluginManager().isActive('com.sn_hr_core')){
if(sn_hr_core.hr.TABLE_CASE_EXTENSIONS.indexOf(task_type)>-1)
return task.opened_for;
}
return task.opened_by;
}
};
SLATimezone.prototype = {
initialize : function() {
},
type:'SLATimezone'
};
Set Responsibility Category
var IncResponsibilityCategory = Class.create();
IncResponsibilityCategory.prototype = {
initialize: function() {
},
ResFilter: function(){
var subcat = current.subcategory;
var inc = new GlideRecord('u_dazn_data_lookup');
inc.addQuery('u_dependancy', subcat);
inc.addEncodedQuery('u_active=true^u_field=8a69386d87fb30106be8a9383cbb35dd^u_table=a22e6bdb87243010a52786670cbb35cf');
inc.query();
var finalList = [];
while(inc.next()){
finalList.push(inc.getValue('sys_id'));
}
return 'sys_idIN' + finalList.join(',');
},
type: 'IncResponsibilityCategory'
};
GetServiceOffering
function GetServiceOffering(service) {
gs.info('SI getting called' + service);
var arr = [];
var gr = new GlideRecord('service_offering');
gr.addQuery('parent', service);
gr.query();
while (gr.next()) {
arr.push(gr.sys_id.toString());
}
gs.info('Value returned is ' + arr);
return 'sys_idIN' + arr.toString();
}
When we want to have additional recipient from Email Client:
Ex: DAZN USA service offerings have the multiple email address from βstakeholdersβ fields and I want to include these email address from Email Client template.
var IncImpactedServices = Class.create();
IncImpactedServices.prototype = {
initialize: function() {
},
getUsers:function(incidentSysId){
var arr = [];
var jr = new GlideRecord("task_service_offering");
jr.addQuery("task", incidentSysId);
jr.query();
while(jr.next()) {
arr.push(jr.service_offering.stakeholders.toString());
}
return arr.toString();
},
type: 'IncImpactedServices'
};
Get Group Members
var groupMember = Class.create();
groupMember.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getMember: function(grmember) {
var mbrs = "";
var gr = new GlideRecord("sys_user_group");
gr.get("name", grmember);
var grmember = new GlideRecord('sys_user_grmember');
grmember.addQuery('group', gr.sys_id);
grmember.query();
while (grmember.next()) {
mbrs += grmember.user.user_name.toString();
if (grmember.hasNext())
mbrs += ",";
}
return mbrs;
},
type: 'groupMember'
});
IncImpactedServices
var IncImpactedServices = Class.create();
IncImpactedServices.prototype = {
initialize: function() {
},
getUsers:function(incidentSysId){
var arr = [];
var gr = new GlideRecord("incident");
gr.addQuery("sys_id", incidentSysId);
gr.query();
if(gr.next()) {
var rec = new GlideRecord('cmdb_ci_service');
rec.addQuery('sys_id', 'IN', gr.u_impacted_services);
rec.query();
while(rec.next()){
// arr.push(rec.managed_by.email.toString());
arr.push(rec.u_stakeholder_dl.toString());
// arr.push(rec.u_stakeholder_dl.toString());
}
}
return arr.toString();
// return arr.getDisplayValue();
},
type: 'IncImpactedServices'
};
ContractTermValue
var ContractTermValue = Class.create();
ContractTermValue.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getMonths: function(){
var start = new GlideDateTime();
var stop = new GlideDateTime();
start.setDisplayValue(this.getParameter('sysparm_start'), "dd/MM/yyyy");
stop.setDisplayValue(this.getParameter('sysparm_end'), "dd/MM/yyyy");
var duration = GlideDateTime.subtract(start, stop);
var months = duration.getNumericValue()/2592000000;
var totalMonths = Math.ceil(months) + 'Months';
return totalMonths;
},
// type: 'ContractTermValue'
});
IncRefQualsCI
var IncRefQualsCI = Class.create();
IncRefQualsCI.prototype = {
initialize: function() {
},
compFilter: function(chg){
var svc = chg.business_service; //IT Service
var ci = chg.cmdb_ci; //Technical CI
var compArr = [];
if(svc != ''){
var rel = new GlideRecord('cmdb_rel_ci');
rel.addQuery('parent', svc);
rel.addQuery('child.sys_class_name', 'u_cmdb_ci_service_component');
rel.query();
while(rel.next()){
compArr.push(rel.child.sys_id.toString());
}
} else if (ci != '') {
var rel2 = new GlideRecord('cmdb_rel_ci');
rel2.addQuery('parent.sys_class_name', 'u_cmdb_ci_service_component');
rel2.addQuery('child', ci);
rel2.query();
while (rel2.next())
{
compArr.push(rel2.parent.sys_id.toString());
}
}
if(compArr.length > 0){
return 'sys_idIN' + compArr.toString();
} else {
// return 'u_applicable_forLIKEincident';
return ;
}
},
techCIFilter: function(chg){
var svc = chg.business_service;
var comp = chg.u_service_component;
var ciArr = [];
//If a Service is present, find any CIs relating to the Service
if(svc != ''){
var rel7 = new GlideRecord('cmdb_rel_ci');
rel7.addQuery('parent', svc);
rel7.addQuery('child.u_service_hierarchy', 'false');
rel7.addEncodedQuery('install_status!=7');
rel7.query();
while (rel7.next()) {
ciArr.push(rel7.child.sys_id.toString());
}
}
//If a Service is present, find any CIs relating to the Service
if (comp != '') {
var rel6 = new GlideRecord('cmdb_rel_ci');
rel6.addQuery('parent', comp);
rel6.addQuery('child.u_service_hierarchy', 'false');
rel6.addEncodedQuery('install_status!=7');
rel6.query();
while (rel6.next()) {
ciArr.push(rel6.child.sys_id.toString());
}
//Else, find CIs relating to any Service Components that relate to the selected Service (if one has been selected)
} else if(svc != ''){
//Array of components related to selected Service
var compArr = [];
var rel3 = new GlideRecord('cmdb_rel_ci');
rel3.addQuery('parent', svc);
rel3.addQuery('child.sys_class_name', 'u_cmdb_ci_service_component');
rel3.addEncodedQuery('install_status!=7');
rel3.query();
while (rel3.next()) {
compArr.push(rel3.child.sys_id.toString());
}
//For each component related to the selected service, find the related CIs and push to ciArr
for(var i = 0; i < compArr.length; i++){
var rel4 = new GlideRecord('cmdb_rel_ci');
rel4.addQuery('parent', compArr[i]);
rel4.addQuery('child.u_service_hierarchy', 'false');
rel4.addEncodedQuery('install_status!=7');
rel4.query();
while (rel4.next()) {
ciArr.push(rel4.child.sys_id.toString());
}
}
}
if(ciArr.length > 0){
return 'sys_idIN' + ciArr.toString();
} else {
// return 'sys_idANYTHING';
return'install_status!=7';
}
},
type: 'IncRefQualsCI'
};
UserValidation
var UserValidation = Class.create();
UserValidation.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkGroupMembership: function() {
var userID = this.getParameter('sysparm_userID');
var groupName = this.getParameter('sysparm_groupName');
var thisUser = gs.getUser().getUserByID(userID);
// gs.log("TM ===> " + thisUser + " | " + groupName, "Q: isGrpMember Ajax");
if (thisUser.isMemberOf(groupName)) {
return true;
} else {
return false;
}
},
});
Catelog Client script: function onLoad() {
var ga = new GlideAjax('UserValidation');
ga.addParam('sysparm_name', 'checkGroupMembership');
ga.addParam('sysparm_userID', g_user.userID);
ga.addParam('sysparm_groupName', 'app_SN_Fulfiller-FibaMedia');
// ga.addParam('sysparm_group_name', 'requested_for');
ga.getXML(getResponse);
function getResponse(response)
{
var answer = response.responseXML.documentElement.getAttribute("answer");
if(answer == 'true'){
//Set the Language variable here
//Make sure the Variable name (i.e., Language) and the Choice value (i.e., English) is correct
g_form.setValue('currency', 'EUR');
g_form.setValue('language', 'English');
g_form.setValue('per', 'Day');
g_form.setValue('various_countries', "true");
g_form.setValue('business_unit', 'Perform Media Services Ltd');
// g_form.setValue('start_date', nowDateTime());
// var t = new Date();
// g_form.setValue('start_date', getDate());
}
}
}
BoxingVariableref
var BoxingVariableref = Class.create();
BoxingVariableref.prototype = Object.extendsObject(AbstractAjaxProcessor, {
countryFilter: function(sport, date) {
var countryArr = [];
//create GlideDateTimes for the start / end (easier than the dategenerate)
var sDT = new GlideDateTime(date);
var eDT = new GlideDateTime(sDT);
eDT.addDaysUTC(1);
//add by mike todd on 09-04-19 to deal with differences in timezones that fixtures are loaded in
//show fixtures a day either side of the user selected date
sDT.addDaysUTC(-1);
eDT.addDaysUTC(1);
//get unique countries
if (date != "") {
var fix = new GlideAggregate('u_sporting_events');
fix.addQuery('u_sport', sport);
// fix.addQuery('u_ruleset', ruleset);
fix.addQuery('u_date', '>=', sDT);
fix.addQuery('u_date', '<', eDT);
fix.groupBy('u_country');
fix.query();
//gs.log("RC=" + fix.getRowCount(), "MG");
while (fix.next()) {
//gs.log("in while=" + fix.u_country.sys_id.toString(), "MG");
countryArr.push(fix.u_country.sys_id.toString());
}
return 'sys_idIN' + countryArr.toString();
}
},
fixtureFilter: function(sport, date, country) {
var fixtureArr = [];
var sDT = new GlideDateTime(date);
var eDT = new GlideDateTime(sDT);
eDT.addDaysUTC(1);
//add by mike todd on 09-04-19 to deal with differences in timezones that fixtures are loaded in
//show fixtures a day either side of the user selected date
sDT.addDaysUTC(-1);
eDT.addDaysUTC(1);
if (date != "") {
var fix = new GlideRecord('u_sporting_events');
fix.addQuery('u_sport', sport);
// fix.addQuery('u_ruleset', ruleset);
fix.addQuery('u_country', country);
fix.addQuery('u_date', '>=', sDT.getValue());
fix.addQuery('u_date', '<', eDT.getValue());
fix.query();
while (fix.next()) {
fixtureArr.push(fix.sys_id.toString());
}
return 'sys_idIN' + fixtureArr.toString();
}
},
type: 'BoxingVariableref'
});
CurrentDateTime
var CurrentDateTime = Class.create();
CurrentDateTime.prototype = Object.extendsObject(AbstractAjaxProcessor, {
nowDateTime: function ()
{
return gs.nowDateTime();
}
});
FixtureRefQual
var FixtureRefQual = Class.create();
FixtureRefQual.prototype = Object.extendsObject(AbstractAjaxProcessor, {
countryFilter: function(sport, ruleset, date) {
var countryArr = [];
//create GlideDateTimes for the start / end (easier than the dategenerate)
var sDT = new GlideDateTime(date);
var eDT = new GlideDateTime(sDT);
eDT.addDaysUTC(1);
//get unique countries
if (date != "") {
var fix = new GlideAggregate('u_cmdb_ci_fixture');
fix.addQuery('u_sport', sport);
fix.addQuery('u_ruleset', ruleset);
fix.addQuery('start_date', '>=', sDT);
fix.addQuery('start_date', '<', eDT);
fix.groupBy('u_country');
fix.query();
//gs.log("RC=" + fix.getRowCount(), "MG");
while (fix.next()) {
//gs.log("in while=" + fix.u_country.sys_id.toString(), "MG");
countryArr.push(fix.u_country.sys_id.toString());
}
return 'sys_idIN' + countryArr.toString();
}
},
fixtureFilter: function(sport, ruleset, date, country) {
var fixtureArr = [];
var sDT = new GlideDateTime(date);
var eDT = new GlideDateTime(sDT);
eDT.addDaysUTC(1);
if (date != "") {
var fix = new GlideRecord('u_cmdb_ci_fixture');
fix.addQuery('u_sport', sport);
fix.addQuery('u_ruleset', ruleset);
fix.addQuery('u_country', country);
fix.addQuery('start_date', '>=', sDT.getValue());
fix.addQuery('start_date', '<', eDT.getValue());
fix.query();
while (fix.next()) {
fixtureArr.push(fix.sys_id.toString());
}
return 'sys_idIN' + fixtureArr.toString();
}
},
fixtureTour: function(sport, ruleset, date, country) {
var tourArr = [];
var sDT = new GlideDateTime(date);
var eDT = new GlideDateTime(sDT);
eDT.addDaysUTC(1);
if (date != "") {
var fix = new GlideRecord('u_cmdb_ci_fixture');
fix.addQuery('u_sport', sport);
fix.addQuery('u_ruleset', ruleset);
fix.addQuery('u_country', country);
fix.addQuery('start_date', '>=', sDT.getValue());
fix.addQuery('start_date', '<', eDT.getValue());
fix.query();
while (fix.next()) {
tourArr.push(fix.u_tournament);
}
return 'sys_idIN' + tourArr;
}
},
type: 'FixtureRefQual'
});
FixtureRefQuals
var FixtureRefQuals = Class.create();
FixtureRefQuals.prototype = Object.extendsObject(AbstractAjaxProcessor, {
countryFilter: function(sport, ruleset, date) {
var countryArr = [];
//create GlideDateTimes for the start / end (easier than the dategenerate)
var sDT = new GlideDateTime(date);
var eDT = new GlideDateTime(sDT);
eDT.addDaysUTC(1);
//get unique countries
if (date != "") {
var fix = new GlideAggregate('u_cmdb_ci_fixture');
fix.addQuery('u_sport', sport);
fix.addQuery('u_ruleset', ruleset);
fix.addQuery('start_date', '>=', sDT);
fix.addQuery('start_date', '<', eDT);
fix.groupBy('u_country');
fix.query();
//gs.log("RC=" + fix.getRowCount(), "MG");
while (fix.next()) {
//gs.log("in while=" + fix.u_country.sys_id.toString(), "MG");
countryArr.push(fix.u_country.sys_id.toString());
}
return 'sys_idIN' + countryArr.toString();
}
},
fixtureFilter: function(sport, ruleset, date, country) {
var fixtureArr = [];
var sDT = new GlideDateTime(date);
var eDT = new GlideDateTime(sDT);
eDT.addDaysUTC(1);
if (date != "") {
var fix = new GlideRecord('u_cmdb_ci_fixture');
fix.addQuery('u_sport', sport);
fix.addQuery('u_ruleset', ruleset);
fix.addQuery('u_country', country);
fix.addQuery('start_date', '>=', sDT.getValue());
fix.addQuery('start_date', '<', eDT.getValue());
fix.query();
while (fix.next()) {
fixtureArr.push(fix.sys_id.toString());
}
return 'sys_idIN' + fixtureArr.toString();
}
},
type: 'FixtureRefQuals'
});
Technicalciajax
var Technicalciajax = Class.create();
Technicalciajax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getSvcComps: function() {
var itSvc = this.getParameter('sysparm_it_svc');
var rel = new GlideRecord('cmdb_rel_ci');
rel.addQuery('parent', itSvc);
rel.addQuery('child.sys_class_name', 'u_cmdb_ci_technical_ci');
rel.query();
if(rel.next()){
if(!rel.hasNext()){
return rel.child.sys_id.toString();
} else {
return;
}
}
},
getSvcsUp: function() {
var svcComp = this.getParameter('sysparm_svc_comp');
var rel = new GlideRecord('cmdb_rel_ci');
rel.addQuery('parent.sys_class_name', 'u_cmdb_ci_service_component');
rel.addQuery('child', svcComp);
rel.query();
if(rel.next()){
if(!rel.hasNext()){
return rel.parent.sys_id.toString();
} else {
return;
}
}
},
type: 'Technicalciajax'
});
To auto populate the service component and service based on technical CI
UFIDateTimeAJAX: Set UTC date and time
This script include is used for AJAX calls to manipulate GlideDateTime objects. Current primary use is to calculate and reformat the UTC values to be put in the UTC string fields on Incident.
var UFIDateTimeAJAX = Class.create();
UFIDateTimeAJAX.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getGMT: function(){
var dt = this.getParameter('sysparm_date_time');
var reformat = gs.getProperty('ufi.utc_date.reformat'); //Check if the date requires reformatting
var utc = new GlideDateTime(); //Initialize a new GlideDateTime object
utc.setDisplayValue(dt); //Set the GDT object to the date passed into the function. Done via setDisplayValue as being sent to the client
if(reformat == 'true'){ //If the date requires reformatting
utc = this.reformatDateTime(utc); //Call the reformatting function
}
return utc;
},
//This function is called by getGMT above and by the default value of the 'Incident start date' field on the Incident table
reformatDateTime: function(dt){
var dateFormat = gs.getProperty('ufi.utc_date.string_format'); //Get the defined format from sys prop
var newFormat = dt;
var utcDate = dt.getDate().getByFormat(dateFormat); //Get the date part of the GlideDateTime and set format according to sys prop
var utcTimeArr = dt.getTime().getValue().toString().split(' '); //This value will be displayed as 1970-01-01 with the time
newFormat = utcDate + ' ' + utcTimeArr[1]; //Put the date and time back together as a string and return
return newFormat;
},
type: 'UFIDateTimeAJAX'
});
Client Script: UFI - Set UTC Start
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading) {
return;
}
var ga = new GlideAjax('UFIDateTimeAJAX');
ga.addParam('sysparm_name', 'getGMT');
ga.addParam('sysparm_date_time', newValue);
ga.getXML(processResponse);
function processResponse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('u_utc_start', answer);
}
}
Comments
Post a Comment