Name

sn_hr_core.hr_CaseTransferAjax

Description

Handles HR Case Ajax Transfer requests for Workspace

Script

var hr_CaseTransferAjax = Class.create();
hr_CaseTransferAjax.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

  initialize : function(request, responseXML, gc) {
  	global.AbstractAjaxProcessor.prototype.initialize.call(this, request, responseXML, gc);
  },

  handleTransferCase: function(transferMethod, hrService, sysId) {
  	if (!gs.hasRole('sn_hr_core.case_writer'))
  		return null;

  	var hrCase = new GlideRecord('sn_hr_core_case');
  	hrCase.addQuery('sys_id', sysId);
  	hrCase.query(); 
  	var result = {};
  	if (hrCase.next()) {		

  		var transferredToCaseId = hrCase.getValue('transferred_to');
  		if (transferredToCaseId) {
  			var error = gs.getMessage("Case was previously transferred. Check State, HR service and case Number for accuracy.");
  			return JSON.stringify({error: error});
  		}
  		
  		// Retrieve the case with it's proper table name
  		hrCase = new GlideRecord(hrCase.getRecordClassName());
  		hrCase.get(sysId);

  		var newCase = sn_hr_core.hr_TransferCase.performSelectedTransfer(hrCase, transferMethod, {'selected_service': hrService});
  		result = {
  			id: newCase.getUniqueValue(),
  			table: newCase.getRecordClassName()
  		};
  	}
  	return result;
  },

  transferCase: function() {
  	var sysId = this.getParameter('sysparm_sys_id');
  	var transferMethod = this.getParameter('sysparm_transfer_method');
  	var hrService = this.getParameter('sysparm_hr_service');
  	return JSON.stringify(this.handleTransferCase(transferMethod, hrService, sysId));
  },
  
  _getServices: function(subjectPerson) {			
  	var services = new sn_hr_core.hr_CaseCreation().getServicesForUser(subjectPerson || '', true);
  	var children, result = [];
  	for (var x in services) {
  		if (services[x].children) {
  			children = services[x].children;
  			for (var i in children) {
  				result.push({value: children[i].sys_id, displayValue: children[i].display});
  			}

  		}
  	}
  	
  	result = result.sort(function(a, b) {
  		return a.displayValue.localeCompare(b.displayValue);
  	});
  	
  	return result;
  	
  },

  _getTransferMethods: function(table, sysId) {
  	if (!gs.hasRole('sn_hr_core.case_writer'))
  		return null;

  	var methods = sn_hr_core.hr_TransferCase.getTransferMethods(table, sysId);
  	var result = [], description;
  	for (var x in methods) {
  		description = sn_hr_core.hr_TransferCase.getDescription(methods[x]);
  		result.push({displayValue:description, value: methods[x].type});
  	}
  	return result;
  },

  getTransferFields: function() {
  	var table = this.getParameter("sysparm_table_name");
  	var sysId = this.getParameter("sysparm_sys_id");
  	var subjectPerson = this.getParameter("sysparm_subject_person");
  	var result = {
  		transferMethods: this._getTransferMethods(table, sysId),
  		services: this._getServices(subjectPerson)
  	};

  	return JSON.stringify(result);
  },

  type: 'hr_CaseTransferAjax'
});

Sys ID

93f71915230333007e45ff5e17bf65e3

Offical Documentation

Official Docs: