fluig/Ginseng_chamados/workflow/scripts/aberturadeChamado.afterTaskCreate.js
2025-08-26 14:12:50 -03:00

69 lines
2.6 KiB
JavaScript

/**
* Configura o prazo das atividades com base no SLA definido
*
* @param {string} colleagueId Matrícula do Usuário
*/
function afterTaskCreate(colleagueId) {
log.info("Brunote - ### Iniciando execução da função afterTaskCreate ###");
var proximaAtividade = getValue("WKNextState");
var atividades = getValue("WKNumState");
log.info("Brunote - Valor de proximaAtividade: " + proximaAtividade);
log.info("Brunote - Valor de atividades (WKNumState): " + atividades);
// Definição dos SLAs com horas fixas e minutos sempre 00
var slas = {
"Rádio Parada": 1,
"Câmera Parada": 2,
"Organização do Rack": 3,
"Formatar Computador": 4,
"Email sem acesso": 5,
"Internet sem funcionar": 6,
"Adquirir internet": 7,
"Resgatar Imagens": 8
};
log.info("Brunote - Objeto SLAs carregado com sucesso.");
// Verifica se a atividade é relevante para o SLA
if (atividades != 5) {
log.info("Brunote - Atividade não corresponde a 5. Função encerrada.");
return;
}
log.info("Brunote - Atividade corresponde a 5. Continuando processamento...");
// Obtendo o motivo do chamado do formulário
var motivodochamado = hAPI.getCardValue("motivodochamado");
log.info("Brunote - Motivo do chamado obtido: " + motivodochamado);
// Obtendo a hora baseada no SLA (default 1 hora se não houver correspondência)
var hours = slas[motivodochamado] || 1; // Se não encontrar no objeto, assume 1 hora
var minutes = 0; // Minutos sempre 00
log.info("Brunote - SLA definido com base no motivo do chamado: " + hours + " hora(s)");
// Obtendo o momento exato da execução da função
var now = new Date();
var dateString = now.toISOString(); // Formato ISO: "YYYY-MM-DDTHH:mm:ss.sssZ"
log.info("Brunote - Data atual capturada (dateString): " + dateString);
try {
var dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd");
var dueDate = dateFormat.parse(dateString.substring(0, 10)); // Obtém apenas a data (YYYY-MM-DD)
log.info("Brunote - Data limite extraída: " + dueDate);
var dueTimeInSeconds = ((hours * 60) + minutes) * 60; // Converte tempo para segundos
log.info("Brunote - Tempo limite calculado em segundos: " + dueTimeInSeconds);
// Definição do prazo da tarefa no Fluig
log.info("Brunote - Definindo prazo da tarefa no Fluig...");
hAPI.setDueDate(getValue("WKNumProces"), 0, colleagueId, dueDate, dueTimeInSeconds);
log.info("Brunote - Prazo configurado com sucesso para o processo " + getValue("WKNumProces"));
} catch (err) {
log.error("Brunote - Erro ao configurar Prazo de Conclusão. Detalhes: " + err);
}
log.info("Brunote - ### Finalizando execução da função afterTaskCreate ###");
}