Name

sn_hr_sp.hr_TaskTicket

Description

No description available

Script

var hr_TaskTicket = Class.create();

hr_TaskTicket.hasConversation = function(taskId) {
  var gr = new GlideRecord('live_group_profile');
  gr.addQuery('document', taskId);
  gr.query();

  if (gr.next())
  	return true;
  
  return false;
};

hr_TaskTicket.prototype = {
  initialize: function() {
  	/* empty method */
  },

  getTasks: function(taskID, tableName) {
  	var hrPortalUtil = new sn_hr_sp.hr_PortalUtil();
  	tableName = tableName || sn_hr_core.hr.TABLE_TASK;
  	var gr = new GlideRecord(tableName);
  	gr.addQuery('sys_id',taskID);
  	gr.query();
  	gr.next();
  	
  	if(!gr.canRead()) {
  		return {};
  	}
  	
  	var now = new GlideDateTime();
  	var offset = now.getTZOffset();
  	now = now.getNumericValue() + offset;
  	var task = {};
  	task.sys_id = gr.getValue("sys_id");
  	task.class_name = gr.getValue("sys_class_name");
  	task.short_description = hrPortalUtil.getRecordShortDescription(gr);
  	task.description = hrPortalUtil.getRecordDescription(gr);
  	task.number = gr.getValue("number");
  	task.order = gr.getValue("order");
  	task.state = gr.getValue("state");
  	task.finished = gr.getValue("active") == "0";
  	task.opened_by = gr.getValue("opened_by");
  	task.assigned_to = {userId: gr.getValue("assigned_to"), name: gr.getDisplayValue("assigned_to")};
  	task.updated = gr.getValue("sys_updated_on");
  	task.due_date = gr.getValue("due_date");
  	task.closed_at = gr.getValue("closed_at");
  	task.created = gr.getValue("sys_created_on");
  	task.parent = gr.getValue("parent");
  	task.isOverDue = now > new GlideDateTime(gr.due_date).getNumericValue();
  	task.assigned_to_me = (gr.getValue("assigned_to") == gs.getUserID());
  	task.delegated_to_me = new sn_hr_core.hr_Delegation().isDelegated(gr);
  	task.assigned_or_delegated = task.assigned_to_me || task.delegated_to_me;
  	task.stateLabel = new sn_hr_sp.todoPageUtils().getStateLabel(gr);

  	if (tableName == sn_hr_core.hr.TABLE_TASK) {
  		task.case_id = gr.getValue("parent");
  		task.optional = this.isOptional(gr);
  		task.check_attached_by = gr.assigned_to.user_name + '';
  		task.hr_task_type = gr.getValue("hr_task_type");
  		task.hr_task_type_label = gr.getDisplayValue("hr_task_type");
  		task.survey = {id: gr.getValue("survey"), name: gr.getDisplayValue("survey")};
  		task.survey_instance = gr.getValue("survey_instance");
  		task.order_guide = {id: gr.getValue("order_guide"), name: gr.getDisplayValue("order_guide")};
  		task.hr_service = {id: gr.getValue("hr_service"), name: gr.getDisplayValue("hr_service"), cat_item: gr.hr_service.producer, subject_person_access: gr.hr_service.getDisplayValue('subject_person_access')};
  		task.sc_cat_item = {id: gr.getValue("sc_cat_item"), name: gr.getDisplayValue("sc_cat_item")};
  		task.record_producer = {id: gr.getValue("record_producer"), name: gr.getDisplayValue("record_producer")};
  		task.url = gr.getDisplayValue("url");
  		task.acknowledgment_text = gr.getValue('acknowledgment_text');
  		task.acknowledgmentDocument = gr.getValue('sn_esign_document');
  		task.acknowledgmentDocumentUrl = '/sys_attachment.do?view=true&sys_id=' + gr.getValue('sn_esign_document');

  		task.generated_table = gr.getValue("generated_table");
  		task.generated_id = gr.getValue("generated_id");
  		task.generated_name = this._getName(task.generated_table, task.generated_id);

  		var hrCase = new GlideRecordSecure("sn_hr_core_case");
  		if (hrCase.get(task.case_id))
  			task.subject_person = {id: hrCase.getValue("subject_person"), name: hrCase.getDisplayValue("subject_person")};

  		if (gr.hr_task_type == "sign_document") {
  			task.canSign = new sn_hr_core.hr_Task(gr).canSignGeneratedDocument();
  			task.hasDraftDoc = new sn_hr_core.hr_Task(gr).hasDraftDocument();
  			task.pdfTemplate = hrCase.getValue('pdf_template');
  		}

  		if (gr.hr_task_type == "e_sign") {
  			task.pdfTemplate = hrCase.getValue('pdf_template');
  			if(task.pdfTemplate){
  				var documentTemplate = new GlideRecord("sn_hr_core_document_template");
  				if(documentTemplate.get(task.pdfTemplate)){
  					task.acknowledgment_text = documentTemplate.getValue("acknowledgment_text");
  				}
  			}
  			else
  				task.acknowledgment_text = '';
  			var eSignConfigRec = new GlideRecord("sn_esign_configuration");
  			if(eSignConfigRec.get(gr.getValue("sn_esign_esignature_configuration"))){
  				task.eSignConfiguration = {};
  				task.eSignConfiguration.document_type = eSignConfigRec.getValue("document_type");
  				task.eSignConfiguration.signature_type = eSignConfigRec.getValue("signature_type");

  				if(task.eSignConfiguration.document_type == "document_template") {
  					task.canSign = new sn_hr_core.hr_Task(gr).canSignGeneratedDocument();
  					task.hasDraftDoc = new sn_hr_core.hr_Task(gr).hasDraftDocument();
  				}
  			}
  		}

  		if (gr.hr_task_type == 'collect_Information'){
  			task.employee_form = {};
  			task.employee_form.id = gr.getValue('employee_form');
  			task.employee_form.form_definition = gr.getElement('employee_form.form_definition');
  			task.employee_form.survey_instance = gr.getValue('survey_instance');
  			task.employee_form.table_Name = gr.getElement('employee_form.table')+'';
  			task.employee_form.condition = gr.getElement('employee_form.condition')+'';
  		}

  		if (new GlidePluginManager().isActive('com.sn_hr_lifecycle_events'))
              task.mappedValues = new sn_hr_le.hr_ActivityUtils().getDefaultCatalogValues(task.class_name, task.sys_id, "variable");
  	}

  	if(gr.hr_task_type == 'docusign_url'){
  		task.docusign_envelope_id = gr.getValue('docusign_envelope');
  		task.docusign_recipient_id = gr.getValue('docusign_recipient_id');
  	}

  	return task;
  },
  
  /*
  This function returns an object containing options as needed by esc-task-status widget
  @input: object - Containing hr_task_type and closed_at keys
  @return: object - 
  	{header: "Info message"
  	state: "Completed"
  	"time":"when this task was completed"
  	}
  */
  getTaskCompletionOptions: function (task) {

  	var taskCompletionOptions = {
  		state: task.state.toString() === "9" ? gs.getMessage('Skipped') : gs.getMessage('Completed'),
  		time: task.closed_at
  	};

  	if (task.state.toString() === "9") { // skipped tasks
  		taskCompletionOptions.header = gs.getMessage('You\'ve skipped this task');
  		taskCompletionOptions.icon = "fa fa-ban fa-2x";
  		taskCompletionOptions.success_icon = false;
  		taskCompletionOptions.skipped_task = true;
  	} else { // completed tasks
  		switch (task.hr_task_type) {
  			case "view_video": 
  				taskCompletionOptions.header = gs.getMessage('You\'ve completed this task'); 
  				break;
  			case "checklist":
  				taskCompletionOptions.header = gs.getMessage('Your checklist is completed'); 
  				break;
  			case "take_survey":
  			case "collect_Information":
  				taskCompletionOptions.header = gs.getMessage('Your information is submitted');
  				break;
  			case "hr_service":
  				taskCompletionOptions.header = gs.getMessage('Your request was submitted');
  				taskCompletionOptions.link = {
  					url: '?id=' + new sn_hr_sp.hr_TicketPageConfigUtil().getActiveTicketPageId() + '&sys_id=' + task.generated_case_id + '&table=' + task.generated_case_table,
  					text: gs.getMessage('View request details')
  				}
  				break;
  			case "upload_documents": 
  				taskCompletionOptions.header = gs.getMessage('You\'ve uploaded documents'); 
  				break;
  			case "url": 
  				taskCompletionOptions.header = gs.getMessage('You\'ve completed the task'); 
  				taskCompletionOptions.link = {
  					url : task.url,
  					text : gs.getMessage('Go to link')
  				};
  				break;
  			case "e_sign":
  				taskCompletionOptions.header = gs.getMessage('You\'ve signed the document'); 
  				break;	
  		}
  		taskCompletionOptions.success_icon = true;
  	}
  	
  	return taskCompletionOptions;	
  },

  _getName: function(table, id) {
  	if(table && id) {
  		var gr = new GlideRecordSecure(table);
  		if(gr.get(id))
  			return gr.getDisplayValue();
  	}
  	return '';
  },

  /*
  * Return true if HR Task is optional
  * and is in Ready or WIP state.
  */
  isOptional: function(task) {
  	if (!task.canRead())
  		return false;
  	var showButton = task.optional && (task.state==10 || task.state==18);
  	return showButton;
  },

  getTaskAttachment : function(sysId, type) {
  	var task = new GlideRecordSecure("sn_hr_core_task");
  	task.get(sysId);
  	var gr = new GlideRecord("dms_document_revision");
  	gr.addQuery("document", task.getValue("hr_task_document"));
  	gr.addQuery("stage", "published");
  	gr.query();

  	var attachmentInfo = {};
  	if (gr.next()) {
  		attachmentInfo.status = "success";
  		attachmentInfo.type = type;
  		attachmentInfo.document_name = gr.document.name.toString();
  		attachmentInfo.document_revision = gr.getUniqueValue();
  		attachmentInfo.attachment = this._getAttachmentInfo(gr.getUniqueValue());
  		attachmentInfo.attachmentUrl = '/sys_attachment.do?view=true&sys_id=' + attachmentInfo.attachment;
  		attachmentInfo.acknowledgeType = attachmentInfo.type;
  	} else
  		attachmentInfo.status = "error";

  	return attachmentInfo;
  },
  
  _getAttachmentInfo : function (tableSysId) {
  	var gr = new GlideRecord("sys_attachment");
  	gr.addQuery("table_name", "dms_document_revision");
  	gr.addQuery("table_sys_id", tableSysId);
  	gr.query();
  	if (gr.next() && gr.canRead())
  		return gr.getUniqueValue();
  	return '';
  },

  getProducerId : function(service){
  	var gr = new GlideRecord("sn_hr_core_service");
  	if(gr.get(service))
  		return gr.getValue("producer");
  	gs.addErrorMessage(gs.getMessage("Service not found"));
  	return false;
  },

  setTaskFinished : function(request) {
  	var sysId = request.sys_id;
  	var result = {};

  	if (request.sys_id && request.user_id) {
  		var completeState = new sn_hr_sp.hr_TaskTicketUtil().getClosedStateValue();
  		var gr = new GlideRecord("sn_hr_core_task");
  		if(gr.get(sysId) && gr.canWrite()) {
  			gr.setValue("state", completeState);
  			if (gr.update()) {
  				result.status = "success";
  				this.getTasks(sysId);
  				gs.addInfoMessage(gs.getMessage('The to-do "{0}" has been completed ', new sn_hr_sp.hr_PortalUtil().getRecordShortDescription(gr)));
  			} else
  				result.status = "error";
  		} else
  			result.status = "error";
  	}
  	return result;
  },

  setTaskSkipped : function(request){
  	var skippedState = new sn_hr_sp.hr_TaskTicketUtil().getSkippedStateValue();
  	var taskId = request.taskId;
  	var gr = new GlideRecord("task");
  	if (gr.get(taskId) && gr.canRead()) {
  		//Setting the HR Task to skipped state
  		gr.setValue("state", skippedState);
  		gr.update();
  		gs.addInfoMessage(gs.getMessage('"{0}" skipped.', gr.getValue('short_description')));

  	} else gs.addErrorMessage(gs.getMessage('Task not found'));
  },

  setSurveyCanceled : function(request) {
  	var grTask = new GlideRecordSecure('sn_hr_core_task');
  	if (grTask.get(request.taskId)) {
  		var gr2 = new GlideRecord("asmt_assessment_instance");
  		if (gr2.get(grTask.getValue("survey_instance"))) {
  			//Setting the Survey instance to canceled state
  			gr2.setValue("state", "canceled");
  			gr2.update();
  		} else gs.addErrorMessage(gs.getMessage('Survey instance not canceled'));
  	}
  },

  _saveAcknowlegementRecord : function (task_id, user_id, acknowlege_type, document_revision) {
  	var gr = new GlideRecord("sn_hr_core_document_acknowledgement");
  	gr.initialize();
  	gr.setValue("acknowledged", true);
  	gr.setValue("table_name", "sn_hr_core_task");
  	gr.setValue("table_sys_id", task_id);
  	gr.setValue("user", user_id);
  	gr.setValue("acknowledgement_type", acknowlege_type);
  	if (document_revision != "undefined")
  		gr.setValue("document_revision", document_revision);
  	if (gr.canCreate())
  		gr.insert();
  },

  saveDocumentAcknowlegement : function(task_id, user_id, acknowlege_type, document_revision, acknowledgment_text) {
  	var gr = new GlideRecord("sn_hr_core_document_acknowledgement");
  	gr.initialize();
  	gr.setValue("acknowledged", true);
  	gr.setValue("table_name", "sn_hr_core_task");
  	gr.setValue("table_sys_id", task_id);
  	gr.setValue("user", user_id);
  	gr.setValue("acknowledgement_type", acknowlege_type);
  	gr.setValue("acknowledgment_text", acknowledgment_text);

  	if (document_revision != "undefined")
  		gr.setValue("document_revision", document_revision);
  	if (gr.canCreate())
  		gr.insert();
  },

  getDocumentBody : function(taskId) {
  	var hrForm = new sn_hr_core.hr_CaseAjax().documentBody('sn_hr_core_task', taskId, 'sn_hr_core_task', taskId, 'false');
  	return hrForm.body;
  },

  setDocumentBody : function(taskSysId, documentBody) {
  	new sn_hr_core.hr_CaseAjax().setDocumentBody(documentBody, 'sn_hr_core_task', taskSysId, 'sn_hr_core_task', taskSysId, 'false');
  },

  scPostProcessing : function (taskId, scChildId) {
  	var childLink = '/hrportal?id=hrj_ticket_page&sys_id=';

  	// In case of ESC use M page
  	var scr = new sn_hr_sp.hr_TicketPageConfigUtil();
  	var portalSuffix  = scr.getActivePortalURLSuffix();
  	var ticketPageId = scr.getActiveTicketPageId();
  	if (portalSuffix != null && ticketPageId != null)
  		childLink = '/' + portalSuffix + '?id=' + ticketPageId + '&sys_id=';

  	var scChild = { id : scChildId, parent : taskId, link : childLink + scChildId };
  	var taskGr = new GlideRecord("sn_hr_core_task");
  	var LEInstalled = new GlidePluginManager().isActive('com.sn_hr_lifecycle_events');
  	if(!taskGr.get(taskId) || !taskGr.canRead() || !taskGr.canWrite()) 
  		return false;

  	var grChild;
  	//Setting up the parent and initiated_from
  	var gr = new GlideRecord('sn_hr_core_case');
  	if (gr.get(scChildId) && gr.canRead()) {
  		grChild = gr;
  		gr.setValue("parent", taskGr.parent);
  		gr.setValue("initiated_from", taskId);
  		gr.update();
  		if (!gs.nil(gr.template))
  			new sn_hr_core.hr_TemplateUtils().apply(gr.getValue('template'), gr, true);
  		scChild.number=gr.getValue('number');
  	} else {
  		var grTask = new GlideRecord('task');
  		if (grTask.get(scChildId) && grTask.canRead()) {
  			grChild = grTask;
  			grTask.setValue("parent", taskGr.parent);
  			if (LEInstalled)
  				grTask.setValue('sn_hr_le_activity', this._getActivity(taskId));
  			grTask.update();
  			scChild.number=grTask.getValue('number');
  		}
  	}

  	//Adding child record to activity status
  	if (LEInstalled && !gs.nil(grChild) && grChild.isValidRecord())
  		new sn_hr_le.hr_ActivityUtils().registerGeneratedRecord(taskId,grChild);

  	//Closing the task
  	taskGr.state = '3';	//Close Complete
  	if (!gs.nil(grChild) && grChild.isValidRecord())
  		taskGr.generated_table = grChild.sys_class_name;
  	taskGr.generated_id = scChildId;
  	taskGr.work_notes = gs.getMessage('Created {0}', [scChild.number]);
  	taskGr.update();

  	return scChild;
  },

  _getActivity: function(taskId) {
  	var activityStatus = new sn_hr_le.hr_ActivitySet().getActivityStatus(taskId);
  	if(activityStatus && activityStatus.activity)
  		return String(activityStatus.activity);
  	return '';
  },

  setTaskFinishedDocusign : function(request){
  	var sysId = request.sys_id;
  	var result = {};

  	if (request.sys_id && request.user_id) {
  		var completeState = new sn_hr_sp.hr_TaskTicketUtil().getClosedCompleteStateValue();
  		var gr = new GlideRecord("sn_hr_core_task");
  		if (gr.get(sysId) && gr.canWrite()) {
  			//Setting HR task status to Closed Complete
  			gr.setValue("state", completeState);
  			if (gr.update()) {
  				result.status = "success";
  				this.getTasks(sysId);
  				result.message = gs.getMessage('Your to-do is complete. Please close this tab to return to your to-dos.');
  			} else
  				result.status = "error";
  		} else
  			result.status = "error";
  	}
  	return result;
  },

  setTaskFinishIncompleteDocusign : function(request){
  	var taskId = request.sys_id;
  	var incompleteState = new sn_hr_sp.hr_TaskTicketUtil().getIncompleteStateValue();
  	var result = {};
  	var gr = new GlideRecord("sn_hr_core_task");
  	if (gr.get(taskId) && gr.canWrite()) {
  		//Setting the HR Task status to closed incomplete.
  		
  		gr.setValue("state", incompleteState);
  		gr.update();
  		result.message = gs.getMessage('You declined to sign the document. Please close this tab to return to your to-dos.');
  	}
  	else
  		result.message = gs.getMessage('Task not found or user does not have permission');
  	return result;
  },

  getPulledTodo: function(todoID) {
  	var todoObj = {description: "", url: "", finished: false, createdTime:""};
      var pullGr = new GlideRecord("sn_hr_integrations_todo_inbound");
      if (pullGr.get(todoID) && pullGr.canRead()) {
          todoObj.description = pullGr.getValue("description");
          todoObj.url = pullGr.getValue("todo_url");
          todoObj.finished = (pullGr.getValue("state") == 3);
  		todoObj.createdTime = pullGr.getValue("sys_created_on");
      }

  	return todoObj;
  }, 

  type: 'hr_TaskTicket'
};

Sys ID

aa749713539322003066a5f4a11c08de

Offical Documentation

Official Docs: