Versão atual:

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

Versões (4):

Ver a versão formatada

Retorno Serviço Protheus - Encoding

Comentário

new question