Ir para conteúdo
  • Cadastre-se

dev botao

Arquivo de Remessa com valor diferente do informado


Ver Solução Respondido por Antonio Gomes,
  • Este tópico foi criado há 1374 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá Amigos, 

Gerei um boleto para o Banco Bradesco (237), no valor de R$ 151,03; emiti o boleto, PDF em anexo, valor aparece correto. Logo em seguida gerei o arquivo de remessa, o valor no arquivo, aparece R$ 151,04; vide o arquivo de remessa em anexo, segundo título. 

A minha dúvida: há algum tipo de arredondamento diferente entre a impressão/PDF e a geração do arquivo de remessa?  

Desde já muito grato.

BOL_12480263000124_COCICAL _117445_001.pdf cb050202.rem

João Duarte de Azevedo
Utilsoft Soluções em Gestão Empresarial

Postado

Como vc repassou esse valor para  o componente?

.Value ou .AsCurrency ?

pq não gera isso, a menos que vc esteja fazendo calculo e vinculando ao compnente.

Eu gero boleto de valor já salvo na tabela de contas a receber, e isso não ocorre.

posta como gerou isso.

  • Curtir 1
Postado

Obrigado Antonio. 

Percebi que na minha tabela, o valor está com 4 decimais (153,0301) e foi passado para o componente como .AsFloat, sem ajuste de decimal; no boleto impresso o valor ficou (153,03) e no arquivo de remessa o valor ficou (153,04). 

João Duarte de Azevedo
Utilsoft Soluções em Gestão Empresarial

Postado

Boa tarde, João!

 

Conosco este caso acontece raramente, mais para resolver experimente alterar a unit ACBrBancoBradesco e trocar o Round pelo RoundABNT. Mesmo que aparente não precise pois no setValorDocumento da unit ACBrBoleto já foi ajustado o arredondamento com RoundABNT, acredito que a unit Round bagunce o arredondamento depois de setado o valor.

 

Olavo

  • Moderadores
Postado
14 horas atrás, OlavoJr disse:

Boa tarde, João!

 

Conosco este caso acontece raramente, mais para resolver experimente alterar a unit ACBrBancoBradesco e trocar o Round pelo RoundABNT. Mesmo que aparente não precise pois no setValorDocumento da unit ACBrBoleto já foi ajustado o arredondamento com RoundABNT, acredito que a unit Round bagunce o arredondamento depois de setado o valor.

 

Olavo

Por favor se tem a solução anexa o fonte para que possamos corrigir

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Solution
Postado
15 horas atrás, OlavoJr disse:

Boa tarde, João!

 

Conosco este caso acontece raramente, mais para resolver experimente alterar a unit ACBrBancoBradesco e trocar o Round pelo RoundABNT. Mesmo que aparente não precise pois no setValorDocumento da unit ACBrBoleto já foi ajustado o arredondamento com RoundABNT, acredito que a unit Round bagunce o arredondamento depois de setado o valor.

 

Olavo

Voce não pode alterar a unit para gerar o valor correto, vc precisa gravar ele certo, pois bancos não aceitam dados com mais de 4 decimais, no nosso país, são apenas 2 decimais, tanto, que ele vai na linha digitavel e no codigo de barras.

Penso que você precisa ajustar seu divisor de parcelas do sistema, para poder gravar isso certo, o componente é feito pra processar informações, não não pode corrigir, pois um local ou outro vai ocorrer esse problema.  @jdazevedo prefira trabalhar com valores no formato AsCurrency, e claro, acertar a quebra de caixa em alguma parcela, não deixando para o banco de dados resolver.

Como sugestão, eu lanço a quebra de caixa na 1a parcela, cabe do programador decidir. Ex: 100,00 de 3x, se deixar para o banco de dados, vai ficar 33,3333333333333...

 

17 horas atrás, jdazevedo disse:

Obrigado Antonio. 

Percebi que na minha tabela, o valor está com 4 decimais (153,0301) e foi passado para o componente como .AsFloat, sem ajuste de decimal; no boleto impresso o valor ficou (153,03) e no arquivo de remessa o valor ficou (153,04). 

Isso tem influencia no tipo de campo que você usa para armazenar valores, o decimal (15,2), era danado para acontecer isso, assim como aquele double precision. Eu particularmente, uso o numeric(18,2), fazendo o arredondamento dentro do programa.

  • Curtir 1
Postado

Obrigado Antonio, mais uma vez. Vou seguir a sua sugestão e ajustar a quantidade de decimais do valor na origem; e também vou passar a trabalhar com o formato .AsCurrency; hoje trabalho com Double.   

João Duarte de Azevedo
Utilsoft Soluções em Gestão Empresarial

Postado
3 horas atrás, Juliomar Marchetti disse:

Por favor se tem a solução anexa o fonte para que possamos corrigir

@Juliomar Marchetti Eu até já fiz isso em outro post, mais para gerar o problema só acontece em determinados clientes e com certos usuários, acho que tem a ver com o windows/configuração da máquina, ou seja, acontece "muito raramente".

 

A nossa proposta é trocar o Round() pelo RoundABNT() em todas as units do Boleto, visto que no setValorDocumento  vocês mesmo usam o RoubdABNT() mais como o problema só acontece "muito raramente" o @José M. S. Junior analisou o outro post e acho que ficou meio com pé atrás aceitar a correção e afetar os demais usuários de alguma forma.

 

Se der para o @jdazevedo fazer a troca do tipo de campo conforme foi orientado e ver se resolve e postar aqui o resultado aqui, caso persista o problema, ai sim volto a insistir na troca da função, senão permaneço com a minha solução só nos meus fontes mesmo, devido a não conseguir nem mesmo demonstrar o problema devido ao "muito raramente".

  • Curtir 1
  • 2 semanas depois ...
Postado
Em 09/02/2021 at 11:43, OlavoJr disse:

Se der para o @jdazevedo fazer a troca do tipo de campo conforme foi orientado e ver se resolve e postar aqui o resultado aqui, caso persista o problema, ai sim volto a insistir na troca da função, senão permaneço com a minha solução só nos meus fontes mesmo, devido a não conseguir nem mesmo demonstrar o problema devido ao "muito raramente".

Oi Olavo, ainda não troquei os tipos de dados, na minha base de dados; para dar uma solução imediata, apenas ajustei os valores para duas decimais antes de passar para o componente; por enquanto, não ocorreram mais diferenças. Qualquer outra ocorrência postarei aqui. 

  • Curtir 2

João Duarte de Azevedo
Utilsoft Soluções em Gestão Empresarial

  • Este tópico foi criado há 1374 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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.