Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function createDataset(fields, constraints, sortFields) {
- // Constantes
- var RESPONSE_FIELDS = { // Nomes dos campos possíveis da resposta da requisição
- records: "Registros",
- errorCode: "errorCode",
- errorMessage: "errorMessage"
- }
- var PROTHEUS = {
- company: "", // ID da empresa no Protheus
- branch: "" // ID da filial no Protheus
- }
- // Novo dataset
- var dataset = DatasetBuilder.newDataset();
- // Configuração global
- var config = getConfig();
- var services = config.getAsJsonObject("services");
- var consultas = services.getAsJsonObject("consulta");
- var consultaGenerica = consultas.getAsJsonObject("protheus");
- // Constraints
- var table = "";
- var cod = "";
- var comp = "";
- var loja = "";
- var fields = "";
- var where = '';
- // Autorização do cliente (fluig)
- var clientService = fluigAPI.getAuthorizeClientService();
- // JSON libs
- var gson = new com.google.gson.Gson();
- var parser = new com.google.gson.JsonParser();
- // Leitura e aplicação de constraints
- if (constraints && constraints.length) {
- for (var i = 0; i < constraints.length; i++) {
- var c = constraints[i];
- if (c.fieldName == "table") {
- table = c.initialValue;
- } else if (c.fieldName == "cod") {
- cod = c.initialValue;
- } else if (c.fieldName == "loja") {
- loja = c.initialValue;
- } else if (c.fieldName == "fields") {
- fields = c.initialValue;
- fields = fields.replace(' ', '');
- fields = fields.replace('[', '');
- fields = fields.replace(']', '');
- fields = fields.split(',');
- } else if (c.fieldName == "comp") {
- comp = c.initialValue;
- } else if (c.fieldName == "where") {
- where = c.initialValue + " AND ";
- } else if (c.fieldName == "branch") {
- PROTHEUS.branch = c.initialValue;
- } else if (c.fieldName == "company") {
- PROTHEUS.company = c.initialValue;
- }
- }
- }
- // Dados da requisição
- var data = {
- companyId: '' + getValue("WKCompany"),
- serviceCode: consultaGenerica.get("serviceCode").getAsString(),
- endpoint: consultaGenerica.get("endpoint").getAsString(),
- method: 'post',
- timeoutService: '100',
- params: {
- "CABECALHO": [{
- "EMPRESA": PROTHEUS.company,
- "FILIAL": PROTHEUS.branch
- }],
- "INFORMACOES": []
- }
- }
- try {
- // Testes gerais de erro
- checkTable(table);
- // Define o código de pesquisa no where pela tabela
- where += makeWhere(table, cod, loja, comp);
- // Informações da consulta
- var infoStr =
- '{ "TABELA": "' + table +
- '", "WHERE": "' + where +
- '", "CAMPOS": {';
- // Adiciona os campos exigidos na infoStr
- for (var i = 0; i < fields.length; i++) {
- if (i > 0) {
- infoStr += ', ';
- }
- infoStr += '"C' + i + '":"' + fields[i] + '"';
- }
- infoStr += '}}';
- // Transforma a string de fornecedor em formato JSON
- var infoObj = parser.parse(infoStr);
- // Coloca os produtos nos dados da requisição
- data.params["INFORMACOES"].push(infoObj);
- // Faz a requisição do data em JSON
- var vo = clientService.invoke(gson.toJson(data));
- // JsonObject de resposta
- var result = parser.parse(vo.getResult()).getAsJsonObject();
- // Se encontrou registros
- if (result.has(RESPONSE_FIELDS.records)) {
- var records = result.getAsJsonArray("Registros");
- for (var i = 0; i < records.size(); i++) {
- var record = records.get(i).getAsJsonObject();
- var entrySet = record.entrySet().toArray();
- var row = [];
- // Para cada par de valroes
- for (j = 0; j < entrySet.length; j++) {
- if (i == 0) {
- var column = entrySet[j].getKey();
- dataset.addColumn(column);
- }
- var value = entrySet[j].getValue().getAsString();
- row.push(value);
- }
- dataset.addRow(row);
- }
- } else if (result.has(RESPONSE_FIELDS.errorCode) && result.has(RESPONSE_FIELDS.errorMessage)) {
- dataset.addColumn(RESPONSE_FIELDS.errorCode);
- dataset.addColumn(RESPONSE_FIELDS.errorMessage);
- dataset.addRow([
- result.get(RESPONSE_FIELDS.errorCode).getAsString(),
- result.get(RESPONSE_FIELDS.errorMessage).getAsString()
- ]);
- } else {
- dataset.addColumn(RESPONSE_FIELDS.errorCode);
- dataset.addColumn(RESPONSE_FIELDS.errorMessage);
- dataset.addRow(["Erro", "Nenhum registro encontrado"]);
- }
- } catch (e) {
- dataset.addColumn('erro');
- dataset.addRow([e.message]);
- }
- return dataset;
- }
- function checkTable(table) {
- if (table == "") {
- throw "Tabela não informada";
- }
- }
- function makeWhere(table, cod, loja, comp) {
- if (cod == "" && comp == "") {
- return "D_E_L_E_T_=''";
- }
- var where = ' ';
- var idField = '';
- if (table == "SA1") {
- idField = "A1_COD";
- } else if (table == "SA2") {
- idField = "A2_COD";
- } else if (table == "SB1") {
- idField = "B1_COD";
- } else if (table == "SG1") {
- idField = "G1_COD";
- }
- if (cod != "") {
- where += idField + "=\'" + cod + "\'";
- }
- if (comp != "") {
- if (cod) where += " and ";
- where += "G1_COMP=\'" + comp + "\'";
- }
- if (loja != "") {
- if (comp || cod) where += " and ";
- where += "A2_LOJA=\'" + loja + "\'";
- }
- return where + " AND D_E_L_E_T_=\'\'";
- }
- function getConfig() {
- var CONFIG_DATASET = {
- name: "ds_ef_protheus_config",
- column: "config"
- };
- var configDataset = DatasetFactory.getDataset(CONFIG_DATASET.name, null, null, null);
- var configString = configDataset.getValue(0, CONFIG_DATASET.column);
- var parser = new com.google.gson.JsonParser();
- var configObj = parser.parse(configString).getAsJsonObject();
- // Gson -> JsonObject:
- // https://javadoc.io/doc/com.google.code.gson/gson/latest/com.google.gson/com/google/gson/JsonObject.html
- return configObj;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement