Fórum Calcular Juros boleto (Diferença entre Delphi e Calculadora) #594692
05/06/2018
0
Temos um problema aqui na empresa... Quando o boleto do cliente vence, temos que fazer o cálculo via Delphi, só que no final sempre da diferença de centavos e o financeiro vive reclamando que tem que ficar lançando manualmente taxas para fechar os valores.
Por exemplo no Delphi o cálculo é feito da seguinte maneira:
Calculando o Juros:
Vou colocar os valores para ficar mais fácil: 0 := (3276,84*((9,9/30)/100)) = Resultado: 10,82
Ai no caso desse cliente ele atrasou 8 dias então o sistema faz mais um cálculo: 0 := (8*10,82) = 86,56 de Juros
Calculando a Multa: 0:= (3276,84*(2/100)) = Resultado: 65,54
E finalmente: Total := (3276,84+65,54+86,56) = Resultado: 3.428,94
O que acontece? O banco ele calcula que nem o financeiro faz na calculadora
Calculando o Juros:
3276,84*0,33%=*8=86,508576 Resultado: 86,51 (Fica 0,05 centavos diferente do cálculo do Delphi)
Calculando a Multa: 3276,84*2%=65,5368 Resultado: 65,54 (Bate com o Delphi)
Resultado Final: 3276,84+86,51+65,54 = 3.428,89
Desculpa o tamanho do texto, mas quis passar os detalhes para ficar melhor o entendimento.
Se alguém puder me ajudar fico grato.
Wagner Novaes
Curtir tópico
+ 0Post mais votado
05/06/2018
Jerson Boer
Gostei + 1
Mais Posts
05/06/2018
Wagner Novaes
Foi isso mesmo, eu estava arredondando o valor para Multiplicar*8 por isso estava dando a diferença.
Agora bateu, eu tinha que multiplicar * 10,813572
Foi uma falta de atenção,
Grato,
Wagner
Gostei + 0
05/06/2018
Raimundo Pereira
uses
Math,
var
Dias_Atraso :Real;
Valor_Original :Real;
Percet_Dia :Real;
Juros :Real;
Multa :Real;
Novo_Valor :Real;
begin
Dias_Atraso := 0;
Valor_Original := 0;
Percet_Dia := 0;
Juros := 0;
Multa := 0;
Novo_Valor := 0;
Dias_Atraso:=8;
Valor_Original:=3276.84;
// Se Percet_Dia:=0.33; apresenta erro
Percet_Dia:=0.3303;
Juros:=(Valor_Original)*(Percet_Dia)/100;
Juros:=RoundTo(Juros,-2)*Dias_Atraso;
Multa:=Valor_Original*2/100;
Multa:=RoundTo(Multa,-2);
Novo_Valor:=(Valor_Original)+(Juros)+(Multa);
Novo_Valor:=RoundTo(Novo_Valor,-2);
end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)