-
Total de ítens
10 -
Registro em
-
Última visita
Nemi vieira's Achievements
-
Valor do titulo arredondado na remessa errado
Nemi vieira replied to Nemi vieira's tópico in ACBrBoleto
essa foi a outra forma de resolver o problema, foi que eu fiz, sobre as alterações no ACBrBoleto seria para nao pegar essas alterçoes feita pelo usuário, claro tem que ver os pros e contra -
Valor do titulo arredondado na remessa errado
Nemi vieira replied to Nemi vieira's tópico in ACBrBoleto
Atualizei o componente e problema voltou, depois de alguns testes localizei fonte do problema O problema foi ocasionado por essa função SetRoundMode(rmUp); tive problemas com arrendamento quando a segunda casa decimal era 5 o sistema não arredondava para cima então incrementei essa função SetRoundMode(rmUp) resolveu meu problema de arredondamento mas como o componente ACBBoleto faz uso da função round na função TACBrBancoBrasil.MontarCodigoBarras ele faz o arredondamento errado x.4201 para x.423 quanto que na verdade deveria fica x.42 fonte Rotinas de arredondamento: Round, RoundTo, SimpleRoundTo, SetRoundMode e GetRoundMode (devmedia.com.br) Uma das soluções para manter a compatibilidade foi essa na função TACBrBancoBrasil.MontarCodigoBarras //Salva o modo de arredondamento utilizado pelo o usuário, caso não seja o modo default do delphi ModeRoundUser:=GetRoundMode(); Try //seta o modo default para evitar arredondamento errado tipo de "0.4201" para "0.423" SetRoundMode(rmNearest); CodigoBarras := IntToStrZero(Banco.Numero, 3) + '9' + FatorVencimento + IntToStrZero(Round(ACBrTitulo.ValorDocumento * 100), 10) + IfThen((Length(AConvenio) = 7), '000000', '') + ANossoNumero + IfThen((Length(AConvenio) < 7), PadLeft(OnlyNumber(Cedente.Agencia), 4, '0'), '') + IfThen((Length(AConvenio) < 7), IntToStrZero(StrToIntDef(OnlyNumber(Cedente.Conta),0),8), '') + ACBrTitulo.Carteira; Finally //Restabelece o arredondamento do usuário SetRoundMode(ModeRoundUser); end ACBrBancoABCBrasil.pas -
Valor do titulo arredondado na remessa errado
Nemi vieira replied to Nemi vieira's tópico in ACBrBoleto
se eu usar o AsCurrency do field ele devolver o valor 36.4201, depois que vi isso alterei no componente e deu certo, vou realizar alguns testes para confirmar -
Valor do titulo arredondado na remessa errado
Nemi vieira replied to Nemi vieira's tópico in ACBrBoleto
se eu usar o as AsCurrency do field ele devolver o valor 36.4201 -
Valor do titulo arredondado na remessa errado
Nemi vieira replied to Nemi vieira's tópico in ACBrBoleto
-
Valor do titulo arredondado na remessa errado
Nemi vieira replied to Nemi vieira's tópico in ACBrBoleto
-
Valor do titulo arredondado na remessa errado
Nemi vieira replied to Nemi vieira's tópico in ACBrBoleto
var ValorTitulo:Double; -
Valor do titulo arredondado na remessa errado
Nemi vieira replied to Nemi vieira's tópico in ACBrBoleto
ValorTitulo:=MyRoundDOS(DataSet.FieldByName('bol_valor').AsFloat,2) ValorTitulo=36.42 passo duas casa fixa nao sei como ele pega as 4 casas -
Erro ao compilar oACBrBoletoW_Credisis no delphi 7 [Resolvido]
um tópico no fórum postou Nemi vieira ACBrBoleto
unit ACBrBoletoW_Credisis; interface Uses Classes, SysUtils, DateUtils, ACBrBoletoWS, pcnConversao, pcnGerador, ACBrBoletoConversao, Soap.InvokeRegistry, << erro delphi 7 Soap.SOAPHTTPClient, << erro delphi 7 System.Types, << erro delphi 7 ACBrValidador, ACBrBoleto; Corrigido na At revision: 23636 -
Estou com um problema com arredondamento no valor do boleto na remessa Estou enviando um boleto ao banco do brasil com valor 36.42, mas por algum motivo está indo na remessa com um centavo a mais. ValorTitulo=36.42 Quando o processo chega na função MontarCodigoBarras do arquivo ACBrBancoBrasil.pas o valor do titulo é alterado para 36.4201 e ao passa na linha IntToStrZero(Round(ACBrTitulo.ValorDocumento * 100), 10) ele devolve o valor arredondado para 36.43 CodigoBarras = 0019881600000036430000002851442210020579117 Não sei onde ele localizou o valor 36.4201 por não tem em lugar algum esse valor com decimais 4201 mesmo assim não deveria arredonda para cima At revision: 23636