Name
sn_hr_mobile.hr_CoreMobileUtils
Description
No description available
Script
var hr_CoreMobileUtils = Class.create();
hr_CoreMobileUtils.APPROVE_STATE = "approved";
hr_CoreMobileUtils.REJECT_STATE = "rejected";
//Task Types
hr_CoreMobileUtils.TASK_TYPE_URL = "url";
hr_CoreMobileUtils.TASK_TYPE_VIDEO = "view_video";
hr_CoreMobileUtils.TASK_TYPE_MWC = "mark_when_complete";
hr_CoreMobileUtils.TASK_TYPE_CREDENTIAL = "credential";
hr_CoreMobileUtils.TASK_TYPE_ESIGN = "e_signature";
hr_CoreMobileUtils.TASK_TYPE_SIGN_DOC = "sign_document";
hr_CoreMobileUtils.TASK_TYPE_CHECKLIST = "checklist";
hr_CoreMobileUtils.TASK_TYPE_UPLOAD_DOC = "upload_documents";
hr_CoreMobileUtils.TASK_TYPE_CATALOG_ITEM = "submit_catalog_item";
hr_CoreMobileUtils.TASK_TYPE_ORDER_GUIDE = "submit_order_guide";
hr_CoreMobileUtils.TASK_TYPE_HR_SERVICE = "hr_service";
hr_CoreMobileUtils.TASK_TYPE_TAKE_SURVEY = "take_survey";
hr_CoreMobileUtils.TASK_TYPE_COLLECT_INFO = "collect_Information";
hr_CoreMobileUtils.TASK_TYPE_DOCUSIGN = "docusign_url";
hr_CoreMobileUtils.TASK_TYPE_E_SIGN = "e_sign";
hr_CoreMobileUtils.TASK_TYPE_INTEGRATION_TASK = "action_url";
hr_CoreMobileUtils.CLOSE_COMPLETE = 3;
hr_CoreMobileUtils.WORK_IN_PROGRESS = 18;
hr_CoreMobileUtils.ACCEPT_CASE = 'accept';
hr_CoreMobileUtils.REJECT_CASE = 'reject';
hr_CoreMobileUtils.APPROVE_STATE = "approved";
hr_CoreMobileUtils.REJECT_STATE = "rejected";
hr_CoreMobileUtils.CASE_ACCEPTANCE_TODO_SCREENID = "b8bec102736323005788e1e54cf6a7cb";
hr_CoreMobileUtils.CASE_APPROVAL_TODO_SCREENID = "f45e9242536723000ad0ddeeff7b12fe";
hr_CoreMobileUtils.CASE_SCREENID = "cc8a66a8733323005788e1e54cf6a783";
hr_CoreMobileUtils.ONBOARD_CASE_SCREENID = "78dedf4f73f323005788e1e54cf6a796";
hr_CoreMobileUtils.OTHER_TODOS_LEVEL = 1;
hr_CoreMobileUtils.prototype = {
initialize: function() {},
canViewKnowledgeArticle: function(taskGr, buttonType) {
var signature_type = taskGr.sn_esign_esignature_configuration.signature_type;
if (buttonType == signature_type) {
var article = taskGr.sn_esign_esignature_configuration.kb_article;
var articleGr = new GlideRecord("kb_knowledge");
articleGr.get(article);
return articleGr.canRead();
}
return false;
},
_setTaskFinished: function(taskGr) {
var result = {};
taskGr.setValue("state", "3");
if (taskGr.update()) {
result.status = "success";
result.message = gs.getMessage('The to-do "{0}" has been completed ', taskGr.getValue('short_description'));
return result;
} else {
result.status = "error";
result.message = gs.getMessage("Error completing the task");
return result;
}
},
completeEsignTask: function(todoSysId) {
var result = {};
var taskGr = new GlideRecord("sn_hr_core_task");
if (!taskGr.get(todoSysId)) {
result.status = "error";
result.message = gs.getMessage("Task not found");
return result;
}
/*For hr task type: e-signature and sign-document
document acknowledgement record is created using BR on signature_image table*/
if (taskGr.getValue("hr_task_type") == "credential") {
return this.saveDocumentAcknowledgement(taskGr);
} else if (taskGr.getValue("hr_task_type") == "e_sign") {
var eSignTaskUtil = new sn_esign.esign_taskUtils();
var user_id = gs.getUserID();
var sys_id = taskGr.getUniqueValue();
var table_name = taskGr.getTableName();
var acknowledgement_text = taskGr.sn_esign_esignature_configuration.acknowledgement_text;
var esign_type = taskGr.sn_esign_esignature_configuration.signature_type;
var document_type = taskGr.sn_esign_esignature_configuration.document_type;
var document_revision = this._getDocumentRevision(taskGr);
var pdf_template = taskGr.parent.pdf_template;
var kb_article = taskGr.sn_esign_esignature_configuration.kb_article;
var signatureSysId = null;
if (esign_type == 'signature') {
var signature = eSignTaskUtil.getSignatureImage(table_name, sys_id);
if (signature)
signatureSysId = signature.sys_id;
}
var domain = taskGr.sn_esign_esignature_configuration.sys_domain;
// Save document acknowledgment in the sn_esign_acknowledgement table
eSignTaskUtil.saveDocumentAcknowledgement(acknowledgement_text, esign_type, sys_id, document_revision, kb_article, signatureSysId, domain, table_name, user_id);
if (document_type == 'managed_document') {
eSignTaskUtil.attachAcknowledgeDocument(sys_id, table_name, document_revision);
return this._setTaskFinished(taskGr);
} else if (document_type == 'document_template') {
var hrPdfUtils = new sn_hr_core.hr_PdfUtils();
var generalHrForm = new sn_hr_core.GeneralHRForm();
if (generalHrForm.hasDraftDocument(table_name, sys_id)) {
var hrCaseAjax = new sn_hr_core.hr_CaseAjax();
var hrForm = hrCaseAjax.documentBody(table_name, sys_id, table_name, sys_id, 'false');
var documentBody = hrForm.body;
hrCaseAjax.setDocumentBody(documentBody, table_name, sys_id, table_name, sys_id, 'false', 'true');
} else if (!hrPdfUtils.isValidPdfTemplate(table_name, sys_id)) {
result.status = "error";
result.message = gs.getMessage("Not valid PDF or HTML template");
return result;
}
new sn_hr_core.hr_CaseAjax().generateDocumentAndCloseTask(table_name, sys_id);
result.status = "success";
return result;
} else if (document_type == 'knowledge_article') {
eSignTaskUtil.attachAcknowledgeDocument(sys_id, table_name, null, kb_article);
return this._setTaskFinished(taskGr);
}
}
},
saveDocumentAcknowledgement: function(taskGr) {
var result = {};
var acknowlege_type = "credential";
var docAckGr = new GlideRecord("sn_hr_core_document_acknowledgement");
docAckGr.initialize();
docAckGr.setValue("acknowledged", true);
docAckGr.setValue("table_name", "sn_hr_core_task");
docAckGr.setValue("table_sys_id", taskGr.getUniqueValue());
docAckGr.setValue("user", gs.getUserID());
docAckGr.setValue("acknowledgement_type", acknowlege_type);
docAckGr.setValue("acknowledgment_text", taskGr.getValue("acknowledgment_text"));
var document_revision = this._getDocumentRevision(taskGr);
if (document_revision)
docAckGr.setValue("document_revision", document_revision);
if (docAckGr.insert()) {
result.status = "success";
result.message = gs.getMessage('The to-do "{0}" has been completed ', taskGr.getValue('short_description'));
return result;
}
},
_getDocumentRevision: function(taskGr) {
var gr = new GlideRecord("dms_document_revision");
var task_type = taskGr.getValue("hr_task_type");
if (task_type == "e_sign")
gr.addQuery("document", taskGr.sn_esign_esignature_configuration.managed_document);
else
gr.addQuery("document", taskGr.getValue("hr_task_document"));
gr.addQuery("stage", "published");
gr.query();
if (gr.next())
return gr.getUniqueValue();
return null;
},
refineMyCaseTasksQuery: function(current, parent, level) {
var taskIds = [];
try {
var todoUtils = new sn_hr_core.hr_CaseChildTodoUtils(parent.sys_id);
taskIds = todoUtils.getCaseChildTaskTodos(true, level);
current.addQuery("sys_id", taskIds);
//Set display order based on LE config for tasks
if (parent && parent.hr_service && parent.hr_service.le_type && parent.hr_service.le_type.sort_activities_by == "display_order")
current.orderBy("sn_hr_le_activity.ref_sn_hr_le_activity.display_order");
else
current.orderBy("due_date");
} catch (ex) {
current.addQuery("sys_id", taskIds);
gs.error("HR Case My Todos error " + ex.message);
}
},
refineCaseOverdueTasksQuery: function(current, parent, level) {
var taskIds = [];
try {
var todoUtils = new sn_hr_core.hr_CaseChildTodoUtils(parent.sys_id);
taskIds = todoUtils.getCaseChildTaskTodosFiltered(sn_hr_core.hr_CaseChildTodoUtils.ALL_TODOS, level, true);
current.addQuery("sys_id", taskIds);
} catch (ex) {
current.addQuery("sys_id", taskIds);
gs.error("HR Case Overdue Todos error " + ex.message);
}
},
refineOtherCaseTasksQuery: function(current, parent, level) {
var taskIds = [];
try {
var todoUtils = new sn_hr_core.hr_CaseChildTodoUtils(parent.sys_id);
taskIds = todoUtils.getCaseChildTaskTodos(false, level);
current.addQuery("sys_id", taskIds);
} catch (ex) {
current.addQuery("sys_id", taskIds);
gs.error("HR Case Other Todos error " + ex.message);
}
},
refineMyCaseApprovalsQuery: function(current, parent, level) {
var taskIds = [];
try {
var todoUtils = new sn_hr_core.hr_CaseChildTodoUtils(parent.sys_id);
taskIds = todoUtils.getCaseChildApprovalTodos(level);
current.addQuery("sys_id", taskIds);
} catch (ex) {
current.addQuery("sys_id", taskIds);
gs.error("HR Case Approvals error " + ex.message);
}
},
refineCaseOverdueApprovalsQuery: function(current, parent, level) {
var taskIds = [];
try {
var todoUtils = new sn_hr_core.hr_CaseChildTodoUtils(parent.sys_id);
taskIds = todoUtils.getCaseChildApprovalTodos(level, true);
current.addQuery("sys_id", taskIds);
} catch (ex) {
current.addQuery("sys_id", taskIds);
gs.error("HR Case Overdue Approvals error " + ex.message);
}
},
checkCaseCancellable: function(current) {
var optionsGr = new GlideRecord('sn_hr_core_service_option');
optionsGr.get('value', 'UserCannotCancel');
var optionSysId = String(optionsGr.sys_id);
if (current.opened_for == gs.getUserID() && current.active == true && current.hr_service.case_options.toString().indexOf(optionSysId) == -1)
return true;
else
return false;
},
skipTask: function(taskId) {
var gr = new GlideRecord("sn_hr_core_task");
if (gr.get(taskId)) {
if (gr.getValue('hr_task_type') == "take_survey") {
var gr2 = new GlideRecord("asmt_assessment_instance");
if (gr2.get(gr.getValue("survey_instance"))) {
//Setting the Survey instance to canceled state
gr2.setValue("state", "canceled");
gr2.update();
}
}
//Setting the HR Task to skipped state
gr.setValue("state", "9");
gr.update();
}
},
getHrTaskScreenId: function(grtask) {
if (grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_CHECKLIST)
return '99760a15737723002204e2596bf6a711';
else if (grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_MWC)
return '17c0a8be53ab23000ad0ddeeff7b12ad';
else if (grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_UPLOAD_DOC)
return 'f9836507732323005788e1e54cf6a7cb';
else if (grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_URL)
return '8e518987532323000ad0ddeeff7b120a';
else if (grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_VIDEO)
return '9208a08177bb23005c4204389a1061e5';
else if (grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_CATALOG_ITEM ||
grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_ORDER_GUIDE ||
grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_HR_SERVICE ||
grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_DOCUSIGN ||
grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_INTEGRATION_TASK)
return 'a3d8a98653a323000ad0ddeeff7b127b';
// Form screen to display the managed document for e_signature(old) or credential(old) or e-sign(new) task
else if ((grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_CREDENTIAL) ||
(grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_ESIGN) ||
(grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_E_SIGN && grtask.sn_esign_esignature_configuration.document_type == 'managed_document'))
return '0e060615737723002204e2596bf6a7ae';
// Form screen to display pdf template document for sign_document(old) or e-sign(new) task
else if ((grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_SIGN_DOC && grtask.parent.ref_sn_hr_core_case.pdf_template.sys_class_name == 'sn_hr_core_pdf_template') || (grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_E_SIGN && grtask.sn_esign_esignature_configuration.document_type == 'document_template' && grtask.parent.ref_sn_hr_core_case.pdf_template.sys_class_name == 'sn_hr_core_pdf_template'))
return '989ea9a453113300ea67ddeeff7b12da';
// Form screen to display html template document for sign_document(old) or e-sign(new) task
else if ((grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_SIGN_DOC && grtask.parent.ref_sn_hr_core_case.pdf_template.sys_class_name == 'sn_hr_core_document_template') ||
(grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_E_SIGN && grtask.sn_esign_esignature_configuration.document_type == 'document_template' && grtask.parent.ref_sn_hr_core_case.pdf_template.sys_class_name == 'sn_hr_core_document_template'))
return '0a07e05553ac33004d1dddeeff7b12c8';
// Form screen to display knowledge article for e-sign(new) task
else if (grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_E_SIGN &&
grtask.sn_esign_esignature_configuration.document_type == 'knowledge_article')
return '024760c1537723004d1dddeeff7b12b0';
// Form screen to display native surveys for Collect Employee Input and Take Survey task
else if (grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_COLLECT_INFO || grtask.hr_task_type == hr_CoreMobileUtils.TASK_TYPE_TAKE_SURVEY)
return '270ab11f53722010d493ddeeff7b1249';
},
getHrCaseScreenId: function(grcase) {
if (grcase.hr_service.fulfillment_type == 'lifecycle_event' && grcase.hr_service.le_type)
return '78dedf4f73f323005788e1e54cf6a796';
else
return 'cc8a66a8733323005788e1e54cf6a783';
},
getHrUserCaseScreenId: function(grcase, userId, isOnboardingApp) {
if (grcase.hr_service.fulfillment_type == 'lifecycle_event' && grcase.hr_service.le_type) {
if (isOnboardingApp || grcase.opened_for == userId || (grcase.subject_person == userId && grcase.hr_service.subject_person_access && grcase.hr_service.le_type.display_activity_set))
return hr_CoreMobileUtils.ONBOARD_CASE_SCREENID;
else
return hr_CoreMobileUtils.CASE_SCREENID;
} else
return hr_CoreMobileUtils.CASE_SCREENID;
},
isParentLeCase: function(hrTaskGr) {
var pluginManager = new GlidePluginManager();
var leInstalled = pluginManager.isActive('com.sn_hr_lifecycle_events');
if (!leInstalled)
return false;
// Encoded query to check if HR Case form screen with Timeline segment should be displayed
var filter = "parent.ref_sn_hr_core_case.opened_forDYNAMIC90d1921e5f510100a9ad2572f2b477fe^parent.ref_sn_hr_core_case.hr_service.fulfillment_type=lifecycle_event^parent.ref_sn_hr_core_case.hr_service.le_typeISNOTEMPTY^NQparent.ref_sn_hr_core_case.subject_personDYNAMIC90d1921e5f510100a9ad2572f2b477fe^parent.ref_sn_hr_core_case.hr_service.fulfillment_type=lifecycle_event^parent.ref_sn_hr_core_case.hr_service.le_typeISNOTEMPTY^parent.ref_sn_hr_core_case.hr_service.subject_person_access=true^parent.ref_sn_hr_core_case.hr_service.le_type.display_activity_set=true^EQ";
return GlideFilter.checkRecord(hrTaskGr, filter);
},
isPrimaryTaskLECase: function(urTicketGr) {
if (this.isPrimaryTaskCase(urTicketGr)) {
return this.isLeCase(urTicketGr);
} else
return false;
},
isPrimaryTaskCase: function(urTicketGr) {
if (GlideFilter.checkRecord(urTicketGr, 'primary_task.sys_class_nameINSTANCEOFsn_hr_core_case'))
return true;
else
return false;
},
isLeCase: function(urTicketGr) {
var pluginManager = new GlidePluginManager();
var leInstalled = pluginManager.isActive('com.sn_hr_lifecycle_events');
if (!leInstalled)
return false;
// Encoded query to check if HR Case form screen with Timeline segment should be displayed
var filter = "primary_task.ref_sn_hr_core_case.opened_forDYNAMIC90d1921e5f510100a9ad2572f2b477fe^primary_task.ref_sn_hr_core_case.hr_service.fulfillment_type=lifecycle_event^primary_task.ref_sn_hr_core_case.hr_service.le_typeISNOTEMPTY^NQprimary_task.ref_sn_hr_core_case.subject_personDYNAMIC90d1921e5f510100a9ad2572f2b477fe^primary_task.ref_sn_hr_core_case.hr_service.fulfillment_type=lifecycle_event^primary_task.ref_sn_hr_core_case.hr_service.le_typeISNOTEMPTY^primary_task.ref_sn_hr_core_case.hr_service.subject_person_access=true^primary_task.ref_sn_hr_core_case.hr_service.le_type.display_activity_set=true^EQ";
return GlideFilter.checkRecord(urTicketGr, filter);
},
isParentPartOfUR: function(hrTaskGr) {
if (GlideFilter.checkRecord(hrTaskGr, 'parent.universal_requestISNOTEMPTY'))
return true;
else
return false;
},
isParentHRCase: function(taskGr) {
if (GlideFilter.checkRecord(taskGr, 'parent.sys_class_nameINSTANCEOFsn_hr_core_case'))
return true;
else
return false;
},
acceptCase: function(sys_id) {
var result = {};
var casegr = new GlideRecord('sn_hr_core_case');
if (casegr.get(input.sys_id)) {
var universal_req = casegr.getValue('universal_request');
if (universal_req) {
var ur_gr = new GlideRecord('universal_request');
if (ur_gr.get(universal_req) && ur_gr.getValue('needs_resolution_review')) {
ur_gr.setValue('needs_resolution_review', 'false');
ur_gr.update();
}
}
casegr.setValue('state', '3');
casegr.update();
result.status = "success";
return result;
} else {
result.status = "error";
return result;
}
},
getHrURCaseScreenId: function(grcase) {
if (grcase.hr_service.fulfillment_type == 'lifecycle_event' && grcase.hr_service.le_type)
return '67a27c2373b200105788e1e54cf6a7f5';
else
return 'a2d674e373b200105788e1e54cf6a709';
},
canOpenTodoAbsPath: function(hrTask) {
var pattern = new RegExp('^(?:[a-z]+:)?//', 'i');
return (pattern.test(hrTask.url) && hrTask.active && (hrTask.assigned_to == gs.getUserID() || new sn_hr_mobile.hr_mobile_Delegation().getDelegatedTasks().includes(hrTask.sys_id)) && (hrTask.state == 10 || hrTask.state == 18));
},
canOpenTodoRelPath: function(hrTask) {
var pattern = new RegExp('^(?:[a-z]+:)?//', 'i');
return (!pattern.test(hrTask.url) && hrTask.active && (hrTask.assigned_to == gs.getUserID() || new sn_hr_mobile.hr_mobile_Delegation().getDelegatedTasks().includes(hrTask.sys_id)) && (hrTask.state == 10 || hrTask.state == 18));
},
//Returns the sys_id of the asmt_assessment_instance linked to the particular HR task
getSurveyInstanceId: function(hrTaskSysId) {
var taskHr = new GlideRecord("sn_hr_core_task");
taskHr.get(hrTaskSysId);
return taskHr.getValue('survey_instance');
},
// Returns the HR task's sys_id from survey instance sys_id
getHRTaskIdFromSurveyInstanceId: function(surveyInstanceSysId) {
var taskGr = new GlideRecord('sn_hr_core_task');
taskGr.addQuery('survey_instance.sys_id', surveyInstanceSysId);
taskGr.query();
if (taskGr.next())
return taskGr.sys_id;
return '';
},
//Returns whether the HR task is assigned or delegated to the user
isTaskAssignedOrDelegated: function(taskId) {
var taskGr = new GlideRecord('sn_hr_core_task');
taskGr.get(taskId);
return new sn_hr_mobile.hr_mobile_Delegation().isAssignedOrDelegated(taskGr);
},
//Returns the sys_id of the task if it is delegated to the user
getDelegatedTaskId: function(taskGr) {
if (new sn_hr_mobile.hr_mobile_Delegation().isDelegated(taskGr))
return taskGr.getValue('sys_id');
return '';
},
type: 'hr_CoreMobileUtils'
};
Sys ID
c1906d7f5332230081a7ddeeff7b1207