246 lines
8.2 KiB
JavaScript
246 lines
8.2 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");
|
|
dataset.addColumn("PEDIDO_JSON");
|
|
dataset.addColumn("PEDIDO_ERRO");
|
|
|
|
function emptyRow() {
|
|
return ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "false", "", "", "", ""];
|
|
}
|
|
|
|
function documentoValido(valor) {
|
|
var v = String(valor || "").trim().toUpperCase();
|
|
if (!v) return false;
|
|
if (/^0+$/.test(v)) return false;
|
|
if (/^X+$/.test(v)) return false;
|
|
if (v == "XXXX" || v == "XXXXXX") return false;
|
|
return true;
|
|
}
|
|
|
|
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"
|
|
};
|
|
}
|
|
|
|
function consultarPedido(clientService, pedido) {
|
|
var endpoints = [
|
|
"/UF_MATA120/" + pedido,
|
|
"/rest/UF_MATA120/" + pedido,
|
|
"/rest/uf_mata120/" + pedido
|
|
];
|
|
|
|
var ultimoErro = "";
|
|
for (var i = 0; i < endpoints.length; i++) {
|
|
try {
|
|
var dataPed = {
|
|
companyId: "1",
|
|
serviceCode: "Postprod",
|
|
endpoint: endpoints[i],
|
|
method: "get",
|
|
timeoutService: "60000",
|
|
headers: {
|
|
"Content-Type": "application/json"
|
|
}
|
|
};
|
|
|
|
var responsePed = clientService.invoke(JSON.stringify(dataPed));
|
|
if (!responsePed || !responsePed.getResult()) {
|
|
ultimoErro = "Sem resposta ao consultar pedido";
|
|
continue;
|
|
}
|
|
|
|
var resultPed = JSON.parse(responsePed.getResult());
|
|
if (resultPed && resultPed.sucesso && resultPed.pedidos && resultPed.pedidos.length > 0) {
|
|
return {
|
|
sucesso: true,
|
|
pedidos: resultPed.pedidos
|
|
};
|
|
}
|
|
|
|
if (resultPed && resultPed.message) {
|
|
ultimoErro = String(resultPed.message);
|
|
} else {
|
|
ultimoErro = "Pedido sem itens retornados";
|
|
}
|
|
} catch (ePed) {
|
|
ultimoErro = String(ePed);
|
|
}
|
|
}
|
|
|
|
return {
|
|
sucesso: false,
|
|
erro: ultimoErro || "Falha ao consultar pedido"
|
|
};
|
|
}
|
|
|
|
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 || "";
|
|
}
|
|
}
|
|
|
|
var pedido = String(sc.C1_PEDIDO || "").trim();
|
|
var pedidoJson = "";
|
|
var pedidoErro = "";
|
|
if (documentoValido(pedido)) {
|
|
var consultaPed = consultarPedido(clientService, pedido);
|
|
if (consultaPed.sucesso) {
|
|
pedidoJson = JSON.stringify(consultaPed.pedidos || []);
|
|
} else {
|
|
pedidoErro = consultaPed.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,
|
|
pedidoJson,
|
|
pedidoErro
|
|
]);
|
|
} else {
|
|
dataset.addRow(emptyRow());
|
|
}
|
|
} else {
|
|
dataset.addRow(emptyRow());
|
|
}
|
|
} catch (e) {
|
|
dataset.addRow(emptyRow());
|
|
}
|
|
|
|
return dataset;
|
|
}
|