103 lines
3.8 KiB
JavaScript
103 lines
3.8 KiB
JavaScript
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");
|
||
}
|