Dataset para coleta de filiais e consumo em campo Zoom

Bom dia, tudo bem?

Criei um serviço REST que efetua a integração com o Protheus para consultar (GET) a relação de todas as filiais cadastradas no sistema. O mesmo esta retornando neste formato:

{“items”:[{“CDFILDESC”:“Empresa 1 Ltda.”,“CDFILIAL”:“010001”},{“CDFILDESC”:“Empresa 2 Ltda.”,“CDFILIAL”:“090001”}]}

Entretanto não estou conseguindo criar um Dataset para armazenar tais informações e posteriormente ser consumida por um campo Zoom do formulário. Conseguem me ajudar?

Criei neste formato o Dataset:

function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
dataset.addColumn(“CDFILIAL”);
dataset.addColumn(“CDFILDESC”);

try {
    // 1. Instancia o serviço cadastrado no Fluig
    var service = ServiceManager.getService("srv_rest_protheus");
    var serviceHelper = service.getBean();
    var clientService = serviceHelper.instantiate('com.totvs.technology.ecm.dm.ws.ServicoREST');

    // 2. Define o endpoint de filiais
    var endpoint = "/api/rh/v1/monitor-ng/filiais";

    // 3. Executa o GET
    var response = clientService.execute(endpoint, 'GET');

    // 4. Trata a resposta JSON
    var json = JSON.parse(response);
    var filiais = json.filiais;

    for (var i = 0; i < filiais.length; i++) {
        dataset.addRow([filiais[i].COD, filiais[i].DESC]);
    }
} catch (e) {
    dataset.addRow(["Erro", e.message]);
}
return dataset;

}

Erro sendo retornado:

Erro com.totvs.technology.foundation.dataservice.exception.ServiceProviderException:

Alguém consegue me ajudar pessoal?

Consegui resolver pessoal.

O código ficou desta forma:

function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();

// Adiciona as colunas no dataset
dataset.addColumn("CDFILDESC");
dataset.addColumn("CDFILIAL");

try {
    // 1. Configurar a chamada da API
    var clientService = fluigAPI.getAuthorizeClientService();
    var data = {
        companyId: getValue("WKCompany") + "",
        serviceCode: "srv_rest_protheus", // Nome do serviço REST configurado
        endpoint: "/api/rh/v1/monitor-ng/filiais", // Endpoint da sua API
        method: "get",
        options: {
            encoding: "UTF-8",
            mediaType: "application/json"
        }
    };

    // 2. Chamar a API
    var vo = clientService.invoke(JSON.stringify(data));

    if (vo.getResult() == null || vo.getResult().isEmpty()) {
        dataset.addRow(new Array("Erro", "Retorno vazio"));
    } else {
        // 3. Processar o JSON
        var json = JSON.parse(vo.getResult());
        var items = json.items; // Acessa o array "items"

        for (var i = 0; i < items.length; i++) {
            var item = items[i];
            // 4. Adicionar linha ao dataset
            dataset.addRow(new Array(
                item.CDFILDESC,
                item.CDFILIAL
            ));
        }
    }
} catch (e) {
    dataset.addRow(new Array("Erro", "Erro ao chamar API: " + e.message));
}

return dataset;

}

2 curtidas

Bacana ter compartilhado como conseguiu resolver!

1 curtida