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

Offical Documentation

Official Docs: