ERP – WebServices – Resultado do processamento de WebService é retornado com valor incorreto para campos do tipo Double/Float (notação científica)
Incidente
Ao utilizar um WebService do Gestão Empresarial | ERP que tenha um campo do tipo Float ou Double com um tamanho muito grande ou muito pequeno, o resultado do valor é convertido para uma notação científica:
Exemplos:
1. Processamento da Exportação de uma Ordem de Compra
O correto seria:
2. Ao ser efetuada exportação da informação contida no campo CgcCpf via WebService, a informação é exportada da seguinte forma <cgcCpf>2.203014000138E12</cgcCpf>
- A mesma situação poderá ocorrer para exportação de outros campos que armazenam somente números com quantidade maior de algarismos;
- A situação só ocorre se a exportação for efetuada passando pelo GlassFish (ou outro servidor Web). Se a requisição for efetuada via MCDebug a situação não ocorre.
Causa
Esse incidente ocorre, porque o valor retornado no WebServices é muito grande e ocorre a conversão em uma notação científica.
Solução
Este comportamento da exportação do campo com notação científica é padrão do sistema, quando o campo é do tipo Double/Float. Quando é utilizado o tipo de dados Double/Float e o número possui uma quantidade muito maior ou uma quantidade muito menor de algarismos, o número é convertido para uma notação científica quando é exportado.
Sendo assim, execute os passos abaixo para tratar essa situação:
1. Valide que o valor retornado pelo WebService está correto, fazendo a conversão de notação científica para o valor decimal.
1.2. Abra a Calculadora do Windows;
1.3. Altere a mesma para a opção Calculadora Científica;
1.4. Efetue o teste de conversão do valor decimal para científico. Abaixo segue o exemplo do valor 0,0008 convertido para 8.0E-4:
2. Acesse o XSD do WebService que você está analisando;
2.1. Veja o exemplo de URL para acessar o XSD do WebService de Exportação de Cadastro de Fornecedor: http://<servidor>:<porta>/g5-senior-services/sapiens_Synccom_senior_g5_co_cad_fornecedor?xsd=1
2.2. Após acessar o XSD, verifique o formato do campo. Exemplo de visualização do XSD para o WebService de Cadastro de Fornecedor:
3. Após todas as validações acima, você poderá verificar no processo que está chamando o WebService do Gestão Empresarial | ERP (seja um processo personalizado ou até mesmo um sistema de terceiros), para que esse processo trate adequadamente a leitura desse valor como Double/Float, interpretando corretamente a informação que trafega em formato de notação científica..
Observação
- Podem existir campos com mesmo nome (exemplo CgcCpf) que em alguns WebService estejam definidos como Double/Float (onde ocorreria a situação descrita nesse artigo) e em outros WebService esteja definidos como String (onde a situação não ocorreria). Desta forma, é muito importante verificar o XSD do WebService;
- Para mais informações sobre os WebServices do Gestão Empresarial | ERP, consulte o artigoERP - WebServices - Onde é possível encontrar informações diversas sobre processo de integração via WebServices (índice).