Name
sn_employee.ep_HRProfileSync
Description
Utility script include to sync fields from HR profile to employee profile. Used in event sn_employee.sync.hr.fields
Script
var ep_HRProfileSync = Class.create();
ep_HRProfileSync.prototype = {
initialize: function() {
this.fieldsToSync = ['employment_start_date', 'employment_end_date', 'work_phone', 'work_mobile', 'location_type', 'position_type'];
},
/**
* For all employee profiles sync fields from HR profile
*/
syncFromHRProfile: function() {
var hrProfiles = new GlideRecord('sn_hr_core_profile');
hrProfiles.setLimit(1);
hrProfiles.query();
//Check if at least one HR profile exists.
if (hrProfiles.next()) {
var employeeProfileGr = new GlideRecord("sn_employee_profile");
employeeProfileGr.addNotNullQuery("user");
employeeProfileGr.query();
while (employeeProfileGr.next()) {
var hrProfileGr = this._getHRProfileGr(employeeProfileGr.getValue("user"));
if (hrProfileGr && hrProfileGr.isValidRecord()) {
this.fieldsToSync.forEach(function(field) {
employeeProfileGr.setValue(field, hrProfileGr.getValue(field));
});
employeeProfileGr.setValue("hr_profile", hrProfileGr.getValue("sys_id"));
employeeProfileGr.setWorkflow(false);
employeeProfileGr.update();
}
}
}
},
_getHRProfileGr: function(userId) {
var gr = new GlideRecord("sn_hr_core_profile");
if (gr.get("user", userId))
return gr;
return null;
},
type: 'ep_HRProfileSync'
};
Sys ID
5e397703c3363010069aec4b7d40dd4c