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