fluig/Ginseng_chamados/workflow/scripts/Solicitação de compras V2.servicetask70.js
2025-08-26 14:12:50 -03:00

103 lines
3.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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");
}