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