fluig/compras_digital/datasets/ds_consultaSC.js
Andrey Cunha 2bbc71eee2 att
2026-05-06 23:19:49 -03:00

170 lines
5.6 KiB
JavaScript

function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("C1_FILIAL");
dataset.addColumn("C1_NUM");
dataset.addColumn("C1_ITEM");
dataset.addColumn("C1_PRODUTO");
dataset.addColumn("C1_DESCRI");
dataset.addColumn("C1_QUANT");
dataset.addColumn("C1_VUNIT");
dataset.addColumn("C1_TOTAL");
dataset.addColumn("C1_DATPRF");
dataset.addColumn("C1_CC");
dataset.addColumn("C1_CONTA");
dataset.addColumn("C1_SOLICIT");
dataset.addColumn("C1_EMISSAO");
dataset.addColumn("C1_APROV");
dataset.addColumn("C1_COTACAO");
dataset.addColumn("C1_PEDIDO");
dataset.addColumn("C1_ITEMPED");
dataset.addColumn("STATUS");
dataset.addColumn("data_consulta");
dataset.addColumn("hora_consulta");
dataset.addColumn("sucesso");
dataset.addColumn("COTACOES_JSON");
dataset.addColumn("COTACAO_ERRO");
function emptyRow() {
return ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "false", "", ""];
}
function consultarCotacao(clientService, cotacao) {
var endpoints = [
"/UF_MATA130/" + cotacao,
"/rest/UF_MATA130/" + cotacao,
"/rest/uf_mata130/" + cotacao
];
var ultimoErro = "";
for (var i = 0; i < endpoints.length; i++) {
try {
var dataCot = {
companyId: "1",
serviceCode: "Postprod",
endpoint: endpoints[i],
method: "get",
timeoutService: "60000",
headers: {
"Content-Type": "application/json"
}
};
var responseCot = clientService.invoke(JSON.stringify(dataCot));
if (!responseCot || !responseCot.getResult()) {
ultimoErro = "Sem resposta ao consultar cotacao";
continue;
}
var resultCot = JSON.parse(responseCot.getResult());
if (resultCot && resultCot.sucesso && resultCot.cotacoes && resultCot.cotacoes.length > 0) {
return {
sucesso: true,
cotacoes: resultCot.cotacoes
};
}
if (resultCot && resultCot.message) {
ultimoErro = String(resultCot.message);
} else {
ultimoErro = "Cotacao sem itens retornados";
}
} catch (eCot) {
ultimoErro = String(eCot);
}
}
return {
sucesso: false,
erro: ultimoErro || "Falha ao consultar cotacao"
};
}
try {
var numeroSC = null;
if (constraints != null) {
for (var i = 0; i < constraints.length; i++) {
if (constraints[i].fieldName == "numeroSCProtheus") {
numeroSC = constraints[i].initialValue;
}
}
}
if (!numeroSC) {
dataset.addRow(emptyRow());
return dataset;
}
var data = {
companyId: "1",
serviceCode: "Postprod",
endpoint: "/UF_MATA110/" + numeroSC,
method: "get",
timeoutService: "60000",
headers: {
"Content-Type": "application/json"
}
};
var clientService = fluigAPI.getAuthorizeClientService();
var response = clientService.invoke(JSON.stringify(data));
if (response && response.getResult()) {
var result = JSON.parse(response.getResult());
if (result.sucesso && result.solicitacoes && result.solicitacoes.length > 0) {
var sc = result.solicitacoes[0];
var cotacao = sc.C1_COTACAO || "";
if (cotacao == "000000" || cotacao == "000001") {
cotacao = "";
}
var cotacoesJson = "";
var cotacaoErro = "";
if (cotacao) {
var consultaCot = consultarCotacao(clientService, cotacao);
if (consultaCot.sucesso) {
cotacoesJson = JSON.stringify(consultaCot.cotacoes || []);
} else {
cotacaoErro = consultaCot.erro || "";
}
}
dataset.addRow([
sc.C1_FILIAL || "",
sc.C1_NUM || "",
sc.C1_ITEM || "",
sc.C1_PRODUTO || "",
sc.C1_DESCRI || "",
sc.C1_QUANT || "",
sc.C1_VUNIT || "",
sc.C1_TOTAL || "",
sc.C1_DATPRF || "",
sc.C1_CC || "",
sc.C1_CONTA || "",
sc.C1_SOLICIT || "",
sc.C1_EMISSAO || "",
sc.C1_APROV || "",
cotacao,
sc.C1_PEDIDO || "",
sc.C1_ITEMPED || "",
sc.STATUS || "",
result.data_consulta || "",
result.hora_consulta || "",
"true",
cotacoesJson,
cotacaoErro
]);
} else {
dataset.addRow(emptyRow());
}
} else {
dataset.addRow(emptyRow());
}
} catch (e) {
dataset.addRow(emptyRow());
}
return dataset;
}