Retorno Serviço Protheus - Encoding

Boa tarde !

Prezados,

Tenho um dataset que retorna os dados da tabela de Fornecedores do Protheus, porém quando o retorno tem acentuação o texto fica com caracteres estranhos, pois precisa ser codificado.

Alguém pode me passar um exemplo de como resolver isso?

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

    try{
        var empresa = obterParametro(constraints, "empresa");
        var filial = obterParametro(constraints, "filial");
        var tabela = "SA2"; 
        var cnpj = obterParametro(constraints, "CNPJ");
        var filtro = "A2_CGC"+"$"+cnpj;

        var endpointStr ="/rest/"+empresa+"/WSCONSULTA?FIL="+filial+"&TABELA="+tabela+"&FILTRO="+filtro;

        var clientService = fluigAPI.getAuthorizeClientService();
        var data = {
            companyId: '1', 
            serviceCode: 'Protheus', 
            endpoint: endpointStr, 
            method: 'get', 
            timeoutService: '100'
        }
        var vo = clientService.invoke(JSON.stringify(data));
        var resultado = JSON.parse(vo.getResult());    
        for each(item in resultado.SA2){
            dataset.addRow(new Array(                
                    item.A2_FILIAL,
                    item.A2_TIPO,
                    item.A2_CGC,
                    item.A2_COD,
                    item.A2_LOJA,
                    item.A2_NOME,
                    item.A2_NREDUZ,
                    item.A2_END,
                    item.A2_NR_END,
                    item.A2_ENDCOMP,
                    item.A2_BAIRRO,
                    item.A2_EST,
                    item.A2_COD_MUN,
                    item.A2_MUN,
                    item.A2_CEP,
                    item.A2_CONTATO,
                    item.A2_DDD,
                    item.A2_TEL,
                    item.A2_INCR,
                    item.A2_INCRM,
                    item.A2_PAIS,
                    item.A2_EMAIL,
                    item.A2_HPAGE,
                    item.A2_TELEX,
                    item.A2_CNAE,
                    item.A2_COMPLEM,
                    item.A2_MSBLQL,
                    item.A2_HOMOLOG,
                    item.A2_BANCO,
                    item.A2_NOMEBANCO,
                    item.A2_AGENCIA,
                    item.A2_DVAGE,
                    item.A2_NUMCON,
                    item.A2_DVCON,
                    item.A2_TIPORUR,
                    item.A2_TPESSOA,
                    item.A2_RECISS,
                    item.A2_RECINSS,
                    item.A2_RECPIS,
                    item.A2_RECCOFI,
                    item.A2_RECCSLL,
                    item.A2_CALCIRF,
                    item.A2_CONTRIB,
                    item.A2_TPISSRS,

                    item.A2_XAVID,
                    item.A2_XAVLINK,
                    item.A2_XAVQUAL,
                    item.A2_XAVVALI,
                    item.A2_XAVJUST,
                    item.A2_XAVGRUP,
                    item.A2_XAVCOME
                ));

            break; // break pq so é 1 mesmo
        }    
    }catch(e){
        var mensagemErro = "Erro na comunicação com o Serviço do Protheus " + e;
        log.error("dsFornecedorProtheus.createDataset: "+mensagemErro);

        dataset = DatasetBuilder.newDataset();
        dataset.addColumn("ERROR");
        dataset.addColumn("MESSAGE_ERROR");
        dataset.addRow(new Array(-1, mensagemErro));    
    } // try catch
    return dataset;
}

function criarEstrutura(dataset){
    dataset.addColumn("FILIAL", DatasetFieldType.STRING);
    dataset.addColumn("TIPO", DatasetFieldType.STRING);
    dataset.addColumn("CGC", DatasetFieldType.STRING);
    dataset.addColumn("CODIGO", DatasetFieldType.STRING);
    dataset.addColumn("LOJA", DatasetFieldType.STRING);
    dataset.addColumn("RAZAO", DatasetFieldType.STRING);
    dataset.addColumn("FANTASIA", DatasetFieldType.STRING);
    dataset.addColumn("ENDERECO", DatasetFieldType.STRING);
    dataset.addColumn("NUMERO", DatasetFieldType.STRING);
    dataset.addColumn("COMPLEMENTO", DatasetFieldType.STRING);
    dataset.addColumn("BAIRRO", DatasetFieldType.STRING);
    dataset.addColumn("UF", DatasetFieldType.STRING);
    dataset.addColumn("CODMUNICIPIO", DatasetFieldType.STRING);
    dataset.addColumn("MUNICIPIO", DatasetFieldType.STRING);
    dataset.addColumn("CEP", DatasetFieldType.STRING);
    dataset.addColumn("CONTATO", DatasetFieldType.STRING);
    dataset.addColumn("DDD", DatasetFieldType.STRING);
    dataset.addColumn("TELEFONE", DatasetFieldType.STRING);
    dataset.addColumn("INSC_ESTADUAL", DatasetFieldType.STRING);
    dataset.addColumn("INSC_MUNICIPAL", DatasetFieldType.STRING);
    dataset.addColumn("CODPAIS", DatasetFieldType.STRING);
    dataset.addColumn("EMAIL", DatasetFieldType.STRING);
    dataset.addColumn("HOMEPAGE", DatasetFieldType.STRING);
    dataset.addColumn("CELULAR", DatasetFieldType.STRING);
    dataset.addColumn("CNAE", DatasetFieldType.STRING);
    dataset.addColumn("COMPLEMENTOCNAE", DatasetFieldType.STRING);
    dataset.addColumn("BLOQUEADO", DatasetFieldType.STRING);
    dataset.addColumn("HOMOLOGADO", DatasetFieldType.STRING);
    dataset.addColumn("CODBANCO", DatasetFieldType.STRING);
    dataset.addColumn("NOMEBANCO", DatasetFieldType.STRING);
    dataset.addColumn("AGENCIA", DatasetFieldType.STRING);
    dataset.addColumn("DVAGENCIA", DatasetFieldType.STRING);
    dataset.addColumn("CONTA", DatasetFieldType.STRING);
    dataset.addColumn("DVCONTA", DatasetFieldType.STRING);
    dataset.addColumn("A2_TIPORUR", DatasetFieldType.STRING);
    dataset.addColumn("A2_TPESSOA", DatasetFieldType.STRING);
    dataset.addColumn("A2_RECISS", DatasetFieldType.STRING);
    dataset.addColumn("A2_RECINSS", DatasetFieldType.STRING);
    dataset.addColumn("A2_RECPIS", DatasetFieldType.STRING);
    dataset.addColumn("A2_RECCOFI", DatasetFieldType.STRING);
    dataset.addColumn("A2_RECCSLL", DatasetFieldType.STRING);
    dataset.addColumn("A2_CALCIRF", DatasetFieldType.STRING);
    dataset.addColumn("A2_CONTRIB", DatasetFieldType.STRING);
    dataset.addColumn("A2_TPISSRS", DatasetFieldType.STRING);

    dataset.addColumn("A2_XAVID", DatasetFieldType.STRING);
    dataset.addColumn("A2_XAVLINK", DatasetFieldType.STRING);
    dataset.addColumn("A2_XAVQUAL", DatasetFieldType.STRING);
    dataset.addColumn("A2_XAVVALI", DatasetFieldType.STRING);
    dataset.addColumn("A2_XAVJUST", DatasetFieldType.STRING);
    dataset.addColumn("A2_XAVGRUP", DatasetFieldType.STRING);
    dataset.addColumn("A2_XAVCOME", DatasetFieldType.STRING);
}

function obterParametro(constraints, campo){
    var valor = "";
    if ((constraints != null) && (constraints.length > 0)) {
        for each(con in constraints) {
            if (con.getFieldName().trim().toUpperCase() == campo.trim().toUpperCase()) {
                valor = con.getInitialValue();
                break;
            }
        }
    }
    return valor;
}

function trim(valorStr){
    if ((valorStr == null) || (valorStr == undefined)){
        return "";
    }
    return valorStr.trim();
}

function sleep(milliseconds) {
    var start = new Date().getTime();
    for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - start) > milliseconds){
            break;
        } 
    } 
} 

function formatarDataProtheus(data){
    //var dataFormatada = data.substr(8, 2) + "/" + data.substr(5, 2) + "/" + data.substr(0, 4);

    if (trim(data) == "/  /"){
        return "";
    }

    return data;
}

encoding.PNG

compartilhar
  • Jailson, compartilha o seu dataset customizado! Abs!

    Marcos Jahn   13 de Mar de 2018
  • @Marcos código adicionado!

    Jailson Cardoso Cajueiro   14 de Mar de 2018
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags encoding ou faça a sua própria pergunta.