Primeiro commit fluig

This commit is contained in:
2025-08-26 14:12:50 -03:00
commit 8b7a079235
726 changed files with 319231 additions and 0 deletions
@@ -0,0 +1,102 @@
function servicetask70(attempt, message) {
log.info("🚀 Iniciando servicetask70");
var fornecedores = {};
var qtdItens = hAPI.getChildrenIndexes("tabelaItens");
log.info("📦 Total de itens na tabela: " + qtdItens.length);
for (var i = 0; i < qtdItens.length; i++) {
var index = qtdItens[i];
log.info("🔄 Processando item índice: " + index);
var fornecedor = String(hAPI.getCardValue("fornecedorIndica___" + index)).trim();
if (!fornecedor) {
log.warn("⚠️ Item ignorado: fornecedor vazio no índice [" + index + "]");
continue; // Pula para o próximo item
}
var item = {
"produto": String(hAPI.getCardValue("itemCompraIndica___"+index)).trim(),
"qtdVen": Number(hAPI.getCardValue("quantidadeIndica___"+ index)),
"preco": Number(hAPI.getCardValue("precoIndica___" +index))
};
log.info("📌 Item coletado para fornecedor [" + fornecedor + "]: " + JSON.stringify(item));
// 🔍 Garante que o fornecedor tenha um array antes de adicionar itens
if (!(fornecedor in fornecedores)) {
fornecedores[fornecedor] = [];
log.info(" Novo fornecedor adicionado: " + fornecedor);
}
// 🔄 Adiciona o item ao fornecedor correspondente
fornecedores[fornecedor].push(item);
log.info("📌 Item adicionado ao fornecedor [" + fornecedor + "]: " + JSON.stringify(item));
}
log.dir(fornecedores);
var numBase = String(getValue("WKNumProces"));
log.info("📄 Número base do processo: " + numBase);
var contador = 0;
for (var fornecedor in fornecedores) {
var numeroPedido = numBase + (contador > 0 ? String.fromCharCode(65 + contador - 1) : "");
log.info("📝 Gerando pedido [" + numeroPedido + "] para fornecedor [" + fornecedor + "]");
var payload = {
"filial": String(hAPI.getCardValue("estabelecimento")),
"numero": numeroPedido,
"emissao": String(hAPI.getCardValue("dataAbertura")),
"fornece": fornecedor,
"loja": "01",
"contato": String(hAPI.getCardValue("userValidacaoCompras")),
"filialent": String(hAPI.getCardValue("estabelecimento")),
"tipofrete": "C",
"frete": 0,
"cond": String(hAPI.getCardValue("condPagamentoIndica___"+ index)),
"itens": fornecedores[fornecedor]
};
log.info("📦 Payload montado para envio:");
log.dir(payload);
var data1 = {
companyId: '1',
serviceCode: 'Integrador Pedido de compra',
endpoint: 'http://187.72.204.233:8089/rest/pedido/',
method: 'post',
timeoutService: '1000000',
params: payload,
headers: {
'Content-Type': 'application/json'
}
};
log.info("📡 Enviando requisição para o Protheus...");
log.dir(data1);
try {
var clientService = fluigAPI.getAuthorizeClientService();
var response = clientService.invoke(JSON.stringify(data1));
log.info("📬 Resposta da API Protheus:");
log.dir(response);
if (response && response.getResult()) {
log.info("✅ Pedido [" + numeroPedido + "] enviado com sucesso para [" + fornecedor + "]");
log.info("📬 Resposta: " + response.getResult());
} else {
log.warn("⚠️ API Protheus não retornou dados para fornecedor [" + fornecedor + "]");
}
} catch (e) {
log.error("❌ Erro ao enviar pedido [" + numeroPedido + "] para fornecedor [" + fornecedor + "]: " + e.message);
}
contador++;
}
log.info("🏁 Finalização da servicetask70");
}
@@ -0,0 +1,102 @@
function servicetask70(attempt, message) {
log.info("🚀 Iniciando servicetask70");
var fornecedores = {};
var qtdItens = hAPI.getChildrenIndexes("tabelaItens");
log.info("📦 Total de itens na tabela: " + qtdItens.length);
for (var i = 0; i < qtdItens.length; i++) {
var index = qtdItens[i];
log.info("🔄 Processando item índice: " + index);
var fornecedor = String(hAPI.getCardValue("fornecedorIndica___" + index)).trim();
if (!fornecedor) {
log.warn("⚠️ Item ignorado: fornecedor vazio no índice [" + index + "]");
continue; // Pula para o próximo item
}
var item = {
"produto": String(hAPI.getCardValue("itemCompraIndica___"+index)).trim(),
"qtdVen": Number(hAPI.getCardValue("quantidadeIndica___"+ index)),
"preco": Number(hAPI.getCardValue("precoIndica___" +index))
};
log.info("📌 Item coletado para fornecedor [" + fornecedor + "]: " + JSON.stringify(item));
// 🔍 Garante que o fornecedor tenha um array antes de adicionar itens
if (!(fornecedor in fornecedores)) {
fornecedores[fornecedor] = [];
log.info(" Novo fornecedor adicionado: " + fornecedor);
}
// 🔄 Adiciona o item ao fornecedor correspondente
fornecedores[fornecedor].push(item);
log.info("📌 Item adicionado ao fornecedor [" + fornecedor + "]: " + JSON.stringify(item));
}
log.dir(fornecedores);
var numBase = String(getValue("WKNumProces"));
log.info("📄 Número base do processo: " + numBase);
var contador = 0;
for (var fornecedor in fornecedores) {
var numeroPedido = numBase + (contador > 0 ? String.fromCharCode(65 + contador - 1) : "");
log.info("📝 Gerando pedido [" + numeroPedido + "] para fornecedor [" + fornecedor + "]");
var payload = {
"filial": String(hAPI.getCardValue("estabelecimento")),
"numero": numeroPedido,
"emissao": String(hAPI.getCardValue("dataAbertura")),
"fornece": fornecedor,
"loja": "01",
"contato": String(hAPI.getCardValue("userValidacaoCompras")),
"filialent": String(hAPI.getCardValue("estabelecimento")),
"tipofrete": "C",
"frete": 0,
"cond": String(hAPI.getCardValue("condPagamentoIndica___"+ index)),
"itens": fornecedores[fornecedor]
};
log.info("📦 Payload montado para envio:");
log.dir(payload);
var data1 = {
companyId: '1',
serviceCode: 'Integrador Pedido de compra',
endpoint: 'http://187.72.204.233:8089/rest/pedido/',
method: 'post',
timeoutService: '1000000',
params: payload,
headers: {
'Content-Type': 'application/json'
}
};
log.info("📡 Enviando requisição para o Protheus...");
log.dir(data1);
try {
var clientService = fluigAPI.getAuthorizeClientService();
var response = clientService.invoke(JSON.stringify(data1));
log.info("📬 Resposta da API Protheus:");
log.dir(response);
if (response && response.getResult()) {
log.info("✅ Pedido [" + numeroPedido + "] enviado com sucesso para [" + fornecedor + "]");
log.info("📬 Resposta: " + response.getResult());
} else {
log.warn("⚠️ API Protheus não retornou dados para fornecedor [" + fornecedor + "]");
}
} catch (e) {
log.error("❌ Erro ao enviar pedido [" + numeroPedido + "] para fornecedor [" + fornecedor + "]: " + e.message);
}
contador++;
}
log.info("🏁 Finalização da servicetask70");
}
@@ -0,0 +1,69 @@
/**
* 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 ###");
}
@@ -0,0 +1,21 @@
function beforeTaskSave(colleagueId,nextSequenceId,userList){
// Captura o ID do usuário logado
var usuarioLogado = getValue("WKUser");
// Busca os dados do dataset "colleague"
var c1 = DatasetFactory.createConstraint("colleagueId", usuarioLogado, usuarioLogado, ConstraintType.MUST);
var dataset = DatasetFactory.getDataset("colleague", null, [c1], null);
if (dataset && dataset.rowsCount > 0) {
// Obter informações do usuário logado
var nome = dataset.getValue(0, "colleagueName");
var email = dataset.getValue(0, "mail");
// Preenche os campos do formulário
hAPI.setCardValue("nome", nome);
hAPI.setCardValue("email", email);
} else {
log.error("Erro ao buscar os dados do dataset 'colleague'.");
}
}