Ir para conteúdo
  • Cadastre-se

dev botao

Remessa diferença de um centavo e impressão torta


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

Recommended Posts

Pessoal bom dia,

Estou com um problema para resolver na minha primeira remessa em produção para o sicoob.

Foram enviados 300 boletos com diferença de um centavo na linha digitavel e valor do documento.

Eu queria uma sugestão de como corrigir a remessa, já que baixar e gerar novamente vai gerar custo para empresa.

Teria como enviar uma remessa de desconto de um centavo, o sicoob aceita? (Meu suporte no banco está muito fraco)

Ambiente Windows 10, Delphi Berlin, acbrboleto atualizado e  FRCE

O problema aparentemente coincidiu com a impressão torta, já que na homologação e testes não apresentou esse problema.

Segue anexo. Obrigado.

Capturar.PNG

Link para o comentário
Compartilhar em outros sites

8 minutos atrás, Antonio Gomes disse:

Isso nao é do componente, vc que mandou com dizima, coloca como vc alimentou o componente.

Já foi discutido outro dia, o rapaz esqueceu de reduzir a dizima da divisao de parcelas.

olha: 

 

 

Antônio, o valor está sendo preenchido direto da informação do banco de dados, campo com duas casas decimais.

Nos testes funcionou ok, o problema ocorreu juntamente com a impressão torta, aparentemente.

Codigo:

Titulo.ValorDocumento:=FDQDadosBoletoVALOR_DOCUMENTO.AsCurrency;
Titulo.Sacado.NomeSacado:=FDQDadosBoletoSACADO_NOME.AsString;

Link para o comentário
Compartilhar em outros sites

Sim, mas olha pelo banco de dados, desativa o modo grid formatada do ibexpert (Options, Environment Options -> Grid: Display Format, Float Fields> remove a mascara e desmarca "Use Field Scale"), para vc ver se  nao tem decimal perdida no seu banco, no brasil, nao se aceita mais de 2 decimais em remessa nem valor a cobrar. Recordo uma vez, de eu ter calculado a parcela, e gravado como as currency, porem, ascurrency aceita 4 decimais, quanto ao caso da linha torta, é muito estranho mesmo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solution
3 horas atrás, BigWings disse:

As linhas tortas também tem relação com arredondamento:

 

Realmente, você acertou.

Consegui reproduzir os erros chamando a função SetRoundMode(rmUP)  no preenchimento do titulo.

   SetRoundMode(rmUP);   //forçar o problema
   Titulo := aDM.ACBrBoleto.CriarTituloNaLista;
   .....
   .....
   Titulo.ValorDocumento:=FDQDadosBoletoVALOR_DOCUMENTO.AsCurrency;

O meu caso eu tinha a função RoundTo5 também na emissão da NFSe. por isso logo depois da emissão deu problema no boleto e não apresentou problemas nos testes.

Quem tiver com o problema procure no código alguma função que use SetRoundMode(rmUP); Retirei a RoundTo5 de todo sistema.

Segue uma função que sempre usei desde os primórdios da NFe para arredondamento e sempre funcionou bem.

Function TBRoundTo(Value: Extended; Decimals: integer): Extended;
var
  Factor, Fraction: Extended;
begin
  Factor := IntPower(10, Decimals);
  { A conversão para string e depois para float evita
    erros de arredondamentos indesejáveis. }
  Value := StrToFloat(FloatToStr(Value * Factor));
  Result := Int(Value);
  Fraction := Frac(Value);
  if Fraction >= 0.5 then
    Result := Result + 1
  else if Fraction <= -0.5 then
    Result := Result - 1;
  Result := Result / Factor;
end;

Agradeço o apoio de todos. 

att

Gustavo.

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Antonio Gomes disse:

Credo, funcao do capiroto entao.

mesmo com a proteção que ela tem, fica errado? olha a funcao.

image.thumb.png.676a3210e8ce2823e18518a337922290.png

Então, essa é a função RoundTo que usa SetRoundMode . Acredito que essa funciona sim por causa da proteção no finally.

A que eu estava usando é uma outra chamada RoundTo5 e estava nas minhas units.

Não faço ideia de onde baixei ela mas outro colega no tópico citado pelo Moderador

também a usava e teve o mesmo problema. De qualquer forma entendo que qualquer função que use essa SetRoundMode deve ficar atento a voltar ela para o estado anterior.

Valeu

 

 

 

 

 

 

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Em 16/05/2021 at 08:51, BigWings disse:

A RoundTo5 é do exemplo do ACBrNFSe, realmente estava desprotegida.

Enviei ajuste para o repositório, rev. 21853.

ó, credo, sem querer vc arrumou um pau na nota da ginfes, que hora calculava errado, hora certo ... recordo desse problema. Uma vez, que o percentual da NFS-e ser com fração no formato 0,03 ao invés de 3%...

Link para o comentário
Compartilhar em outros sites

  • 5 meses depois ...

boa tarde!!!

estou com esta diferença em alguns boletos...

mas vou compartilhar uma situação que ocorreu comigo.
* Faço o boleto e dá esta diferença...  
* mas se eu fechar meu sistema, abra novamente e tento gerar o mesmo boleto....   gera certinho.

alguém pode me dar uma ajuda? não vejo nenhum problema no meu sistema, será que fica em memória alguma variável do AcbrBoleto que faz esta diferença?

Att

Eduardo

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 885 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.