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

Offical Documentation

Official Docs: