Name
sn_hr_core.hr_CaseHierarchyUtils
Description
No description available
Script
var hr_CaseHierarchyUtils = Class.create();
hr_CaseHierarchyUtils.prototype = {
initialize: function() {
},
/* Get encoded query describing which HR Services are available for a given record
* @param record GlideRecord The case record to get available services for
* @return string Encoded query describing available services
*/
getQueryToLimitServices: function(record) {
var hrServiceIds = [];
var grHrServices = new GlideRecord('sn_hr_core_service');
grHrServices.addActiveQuery();
grHrServices.addQuery("value", "!=", hr.BULK_PARENT_CASE_SERVICE);
grHrServices.addQuery('topic_detail.topic_category.coe', record.getRecordClassName());
if (record.topic_detail)
grHrServices.addQuery("topic_detail", record.topic_detail.toString());
if (record.topic_category)
grHrServices.addQuery("topic_detail.topic_category", record.topic_category.toString());
if (gs.nil(record.subject_person)) // Cannot evaluate HR Criteria without a user
grHrServices.addNullQuery("hr_criteria");
grHrServices.query();
while (grHrServices.next()) {
if (gs.nil(grHrServices.hr_criteria))
hrServiceIds.push(grHrServices.getUniqueValue());
else {
var hrCriteria = grHrServices.hr_criteria.split(',');
for (var i = 0; i < hrCriteria.length; i++) {
var isValidCriteria = new hr_Criteria().evaluateById(hrCriteria[i], record.subject_person.toString());
if (isValidCriteria) {
hrServiceIds.push(grHrServices.getUniqueValue());
break;
}
}
}
}
return 'sys_idIN' + hrServiceIds.toString();
},
/* Get encoded query describing which approval options are available for a given record
* @param record GlideRecord The service activity record to get available approval options for
* @return string Encoded query describing available approval options
*/
getApprovalAssignmentOptionsForHrServiceActivity: function(record) {
var grHrService = new GlideRecord('sn_hr_core_service');
if (record && record.parent_service && grHrService.get(record.parent_service))
return this.getApprovalAssignmentOptions(grHrService);
return "sys_id=null";
},
/* Get encoded query describing which approval options are available for a given record
* @param record GlideRecord The service record to get available approval options for
* @return string Encoded query describing available approval options
*/
getApprovalAssignmentOptions: function(record) {
if (!record || !record.service_table)
return "sys_id=null";
return this.getApprovalAssignmentOptionsForCOE(record.service_table.toString());
},
/* Get encoded query describing which approval options are available for a given case table
* @param table string The case table to get available approval options for
* @return string Encoded query describing available approval options
*/
getApprovalAssignmentOptionsForCOE: function(table) {
if (!table)
return "sys_id=null";
var approvalOptionSysIds = [];
var grApprovalOptions = new GlideRecord('sn_hr_core_service_approval_option');
grApprovalOptions.addActiveQuery();
grApprovalOptions.addQuery('case_table', 'IN', new GlideTableHierarchy(table).getTables());
grApprovalOptions.query();
while (grApprovalOptions.next())
approvalOptionSysIds.push(grApprovalOptions.getUniqueValue());
return "sys_idIN" + approvalOptionSysIds.toString();
},
/* Get encoded query describing which case writer role applies to a record
* @param record GlideRecord The record to determine the case writer role for
* @return string Encoded query describing which case writer role applies to a record
*/
getQueryToLimitUsersWithCaseWriterRole: function(record) {
var hrTables = new GlideTableHierarchy(record.getRecordClassName()).getTables();
if (hrTables.indexOf('sn_hr_le_case') > -1)
return 'roles=sn_hr_le.case_writer';
else if (hrTables.indexOf('sn_hr_er_case') > -1)
return 'roles=sn_hr_er.case_writer';
return 'roles=sn_hr_core.case_writer';
},
type: 'hr_CaseHierarchyUtils'
};
Sys ID
154d34889f031200d9011977677fcffd