This commit is contained in:
Andrey Cunha
2026-05-06 23:19:49 -03:00
parent 4b465e54fe
commit 2bbc71eee2
12 changed files with 5822 additions and 4717 deletions
+142 -41
View File
@@ -3,71 +3,172 @@ function createDataset(fields, constraints, sortFields) {
dataset.addColumn("C8_FILIAL");
dataset.addColumn("C8_NUM");
dataset.addColumn("C8_NUMPRO");
dataset.addColumn("C8_ITEM");
dataset.addColumn("C8_PRODUTO");
dataset.addColumn("C8_QUANT");
dataset.addColumn("C8_PRECO");
dataset.addColumn("C8_TOTAL");
dataset.addColumn("C8_DATPRF");
dataset.addColumn("C8_EMISSAO");
dataset.addColumn("C8_FORNECE");
dataset.addColumn("C8_LOJA");
dataset.addColumn("C8_COND");
dataset.addColumn("C8_NUMSC");
dataset.addColumn("C8_ITEMSC");
dataset.addColumn("C8_NUMPED");
dataset.addColumn("C8_ITEMPED");
dataset.addColumn("C8_DATPRF");
dataset.addColumn("A2_NOME");
dataset.addColumn("A2_NREDUZ");
dataset.addColumn("B1_DESC");
dataset.addColumn("B1_UM");
dataset.addColumn("B1_TIPO");
dataset.addColumn("C8_DESCRI");
dataset.addColumn("STATUS");
dataset.addColumn("data_consulta");
dataset.addColumn("hora_consulta");
dataset.addColumn("sucesso");
dataset.addColumn("erro");
function emptyRow(sucesso, erro) {
return [
"", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "",
"", "", sucesso ? "true" : "false", erro || ""
];
}
function normalizeDoc(value) {
var v = String(value || "").trim();
return v.replace(/^0+/, "");
}
function consultarCotacao(clientService, numeroCot) {
var endpoints = [
"/UF_MATA130/" + numeroCot,
"/rest/UF_MATA130/" + numeroCot,
"/rest/uf_mata130/" + numeroCot
];
var ultimoErro = "";
for (var e = 0; e < endpoints.length; e++) {
try {
var data = {
companyId: "1",
serviceCode: "Postprod",
endpoint: endpoints[e],
method: "get",
timeoutService: "60000",
headers: {
"Content-Type": "application/json"
}
};
var response = clientService.invoke(JSON.stringify(data));
if (!response || !response.getResult()) {
ultimoErro = "Sem resposta da API";
continue;
}
var result = JSON.parse(response.getResult());
if (result && result.sucesso && result.cotacoes && result.cotacoes.length) {
return {
sucesso: true,
endpoint: endpoints[e],
result: result
};
}
if (result && !result.sucesso && result.message) {
ultimoErro = String(result.message);
} else {
ultimoErro = "Cotacao sem itens retornados";
}
} catch (errEndpoint) {
ultimoErro = String(errEndpoint);
}
}
return {
sucesso: false,
erro: ultimoErro || "Falha ao consultar cotacao"
};
}
try {
var numeroCot = null;
var numeroCot = "";
if (constraints) {
for (var i = 0; i < constraints.length; i++) {
if (constraints[i].fieldName == "numCotacao") {
numeroCot = constraints[i].initialValue;
numeroCot = String(constraints[i].initialValue || "").trim();
}
}
}
if (!numeroCot) {
dataset.addRow(emptyRow(false, "Numero da cotacao nao informado"));
return dataset;
}
var clientService = fluigAPI.getAuthorizeClientService();
var data = {
companyId: "1",
serviceCode: "Postprod",
endpoint: "/rest/uf_mata131", // sem número -> ele retorna todos
method: "get",
timeoutService: "60000"
};
var retorno = consultarCotacao(clientService, numeroCot);
if (!retorno.sucesso) {
dataset.addRow(emptyRow(false, retorno.erro));
return dataset;
}
var vo = clientService.invoke(JSON.stringify(data));
if (vo && vo.getResult()) {
var objData = JSON.parse(vo.getResult());
var itens = objData["solicitacoes"];
var result = retorno.result;
var cotacoes = result.cotacoes || [];
if (!cotacoes.length) {
dataset.addRow(emptyRow(false, "Cotacao sem itens retornados"));
return dataset;
}
if (itens && itens.length > 0) {
for (var i = 0; i < itens.length; i++) {
var item = itens[i];
var filtro = normalizeDoc(numeroCot);
var adicionados = 0;
for (var j = 0; j < cotacoes.length; j++) {
var item = cotacoes[j] || {};
// 🔎 se veio constraint, filtra pelo C8_NUM
if (numeroCot && item["C8_NUM"] != numeroCot) {
continue;
}
dataset.addRow([
item["C8_FILIAL"] || "",
item["C8_NUM"] || "",
item["C8_ITEM"] || "",
item["C8_PRODUTO"] || "",
item["C8_QUANT"] || "",
item["C8_PRECO"] || "",
item["C8_TOTAL"] || "",
item["C8_DATPRF"] || "",
item["C8_EMISSAO"] || "",
item["C8_NUMSC"] || "",
item["B1_DESC"] || "",
item["B1_UM"] || "",
item["B1_TIPO"] || ""
]);
}
var numeroItem = String(item.C8_NUM || "").trim();
if (filtro && normalizeDoc(numeroItem) !== filtro) {
continue;
}
dataset.addRow([
item.C8_FILIAL || "",
numeroItem,
item.C8_NUMPRO || "",
item.C8_ITEM || "",
item.C8_PRODUTO || "",
item.C8_QUANT || "",
item.C8_PRECO || "",
item.C8_TOTAL || "",
item.C8_FORNECE || "",
item.C8_LOJA || "",
item.C8_COND || "",
item.C8_NUMSC || "",
item.C8_ITEMSC || "",
item.C8_NUMPED || "",
item.C8_ITEMPED || "",
item.C8_DATPRF || "",
item.A2_NOME || "",
item.A2_NREDUZ || "",
item.B1_DESC || "",
item.B1_UM || "",
item.C8_DESCRI || "",
item.STATUS || "",
result.data_consulta || "",
result.hora_consulta || "",
"true",
""
]);
adicionados++;
}
if (adicionados === 0) {
dataset.addRow(emptyRow(false, "Numero da cotacao nao localizado no retorno"));
}
} catch (e) {
dataset.addRow(["Erro: " + e.message]);
dataset.addRow(emptyRow(false, "Erro ao consultar cotacao: " + e));
}
return dataset;