Name
sn_hr_core.hr_CoreUtils
Description
No description available
Script
var hr_CoreUtils = Class.create();
hr_CoreUtils.prototype = {
initialize: function() {
},
hasRoles: function() {
var roles = gs.getUser().getRoles();
if (roles.length == 0)
return false;
else if (roles.length == 1 && roles[0] == 'snc_internal') //For explicit roles plugin
return false;
return true;
},
impersonateCheck: function() {
return gs.getSession().isImpersonating() && gs.getProperty('sn_hr_core.impersonateCheck') == 'true';
},
isAssigned: function(request) {
return (!request.assignment_group.nil() || !request.assigned_to.nil());
},
hasValidAssignee: function(record) {
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('user', record.assigned_to);
grMember.addQuery('group', record.assignment_group);
grMember.setLimit(1);
grMember.query();
var assigneeInAssignmentGroup = grMember.hasNext();
if (assigneeInAssignmentGroup)
return true;
var asmtGroup = new GlideRecord('sys_user_group');
asmtGroup.get(record.assignment_group);
var assigneeIsAssignmentGroupMgr = asmtGroup.manager + '' == record.assigned_to + '';
if (assigneeIsAssignmentGroupMgr)
return true;
return false;
},
isClosed: function(record) {
return (record.state == hr_Constants.CASE_CLOSED_COMPLETE) || (record.state == hr_Constants.CASE_CLOSED_INCOMPLETE) || (record.state == hr_Constants.CASE_CANCELLED) || (record.state == hr_Constants.RESCINDED); // Closed Complete, Closed Incomplete, Cancelled, Rescinded
},
isParentClosed : function(record) {
return (record.parent.state == hr_Constants.CASE_CLOSED_COMPLETE) || (record.parent.state == hr_Constants.CASE_CLOSED_INCOMPLETE) || (record.parent.state == hr_Constants.CASE_CANCELLED);
},
canEscalate: function(task) {
if (this.isClosed(task) || task.assignment_group.nil())
return false;
var gr = new GlideRecord('sn_hr_core_tier_definition');
gr.addQuery('escalate_from', task.assignment_group);
gr.addNotNullQuery('escalate_to');
gr.query();
if (gr.getRowCount() > 0)
return true;
return false;
},
hasOpenTasks : function() {
// we are now allowing an hr case to have child tasks other than hr_task, so removing sm logic to restrict to sm tables only
var gr = new GlideRecord('task');
gr.addQuery("parent", current.sys_id);
var notInQuery = [hr_Constants.TASK_CLOSED_COMPLETE,hr_Constants.TASK_CLOSED_INCOMPLETE,hr_Constants.TASK_CANCELLED,hr_Constants.CLOSED];
gr.addEncodedQuery("stateNOT IN".concat(notInQuery)); // SM assumed that 3, 4, 7 and 9 were the only ones that indicated closed
gr.query();
if(gr.getRowCount() != 0){
while(gr.next()){
var grTask = new GlideRecord('sn_hr_core_task');
if(grTask.get(gr.getUniqueValue())){
if(grTask.optional == false)
return true;
}
}
}
return false;
},
fieldChangeCheck: function(fieldList) {
var fieldArray = fieldList.split(",");
for (var x=0; x<fieldArray.length; x++) {
if (current.isValidField(fieldArray[x])) {
if (current[fieldArray[x]].changes()) {
return true;
}
}
}
return false;
},
isCase: function (className) {
return className == hr.TABLE_CASE || hr.TABLE_CASE_EXTENSIONS.toString().indexOf(className) >= 0;
},
//Returning display value only for Refernce type fields
getFieldsDisplayValue: function (field,value,table) {
var referenceTable = this._getReferenceTable(table,field);
if(referenceTable){
var refGr = new GlideRecord(referenceTable);
return (refGr.get(value))? refGr.getDisplayValue(): "";
}
},
_getReferenceTable: function (table, field) {
var fTypeRef = new GlideRecord("sys_dictionary");
fTypeRef.addQuery('name', table);
fTypeRef.addQuery('element',field);
fTypeRef.addQuery('internal_type','reference');
fTypeRef.query();
return (fTypeRef.next())? String(fTypeRef.reference):"";
},
type : 'hr_CoreUtils'
};
Sys ID
fe5330019f22120047a2d126c42e70ff