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