Ir para conteúdo
  • Cadastre-se

dev botao

CT-e Grupo Outros Documentos: Erro EConvertError referente a qtdRat quando informadas Unidades de Transporte ao ler o XML


Ver Solução Respondido por Leandro Araújo,

Recommended Posts

  • Solution

Boa tarde.

Ao informar Unidades de Transporte no grupo de Outros Documentos (infOutros), e tentar carregar o XML no componente novamente, através do LoadFromFile, é disparada uma exception "EConvertError", como na mensagem de erro abaixo:

Exception class EConvertError with message ''15,000</qtdRat></infUnidTransp>' is not a valid floating point value'.

No XML está assim por exemplo:

<infUnidTransp>
 <tpUnidTransp>1</tpUnidTransp>
 <idUnidTransp>1251</idUnidTransp>
<lacUnidTransp>
 <nLacre>54541</nLacre>
 </lacUnidTransp>
 <qtdRat>15.000</qtdRat>
 </infUnidTransp>

Olhando o código fonte da unit "\ACBr\Fontes\ACBrDFe\ACBrCTe\PCNCTe\pcteCTeR.pas" nas linhas 1026 e 1032 percebi que está um pouco diferente das declarações para os grupos anteriores acima (InfNF e InfNFe).

Na linha 1026 a atribuição a variável "len" está comentada.

Na linha 1032 está sendo passada a variável "pos3" como argumento no lugar de "len".

//...
//          len  := pos3 - pos2; (Linha 1026)

//          if (pos1 = 0) and (pos2 = 0) and (pos3 = 0) or (pos1 > pos3) then
//            qtdRat_UnidTransp := 0.0;

          if (pos1 < pos3) then
            qtdRat_UnidTransp := StringToFloatDef(Copy(sAux, pos2 + 8, pos3 -8), 0) // (Linha 1032)
          else
            qtdRat_UnidTransp := 0.0;
//...

Realizei um teste, removendo o comentário na linha 1026 e substituindo a variável "pos03" por "len" como argumento e parou de dar a exceção, além de que o valor ser atribuído corretamente na variável "qtdRat_UnidTransp" (antes ficava zerada).

Tem algum motivo das declarações nesse bloco do InfOutros estar diferente do outros grupos (InfNF e InfNFe)?

Obs.: Revisão do ACBr utilizada = 34383

Segue em anexo unit modificada com a qual fiz o teste.

Obrigado

pcteCTeR.pas

Leandro Araújo, Analista de Sistemas.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde @Leandro Araújo,

Muito obrigado pela colaboração, já inclui na minha lista de tarefas. TK-5735

O fato do grupo infOutros estar diferente pode ser que foi uma contribuição para fazer algum ajuste e esse ajuste não foi aplicado nos 3 grupos.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.