Calcular Juros
Iniciado por ilanocf, Jun 11 2003 05:02 PM
11 respostas a este tópico
#1
Adicionado 11 June 2003 - 05:02 PM
Olá pessoal,
Tenho os seguintes campos:
DataDeCadastro
DataDoVencimento
DataDoPagamento
Atraso
ValorPago
Juros
ValorAPagar
Como faço para calcular o campo ValorAPagar se estiver em atraso?
Grato por sua atenção,
Ilano.
Tenho os seguintes campos:
DataDeCadastro
DataDoVencimento
DataDoPagamento
Atraso
ValorPago
Juros
ValorAPagar
Como faço para calcular o campo ValorAPagar se estiver em atraso?
Grato por sua atenção,
Ilano.
#2
Adicionado 11 June 2003 - 05:10 PM
Ilano,
Uma idéia.
Uma idéia.
OnCalcFields if (TabelaDataDoVencimento.Value < Date) and (TabelaValorPago.IsNull) then
#3
Adicionado 11 June 2003 - 05:16 PM
Ilano, veja:
Var Data1, Data2 : TDateTime; Data1 := DataDoPagamento; Data2 := DataDoVencimento; Begin While Data1 > Data2 Do Begin ValorAPagar := ValorAPagar + JurosPorDia; End; End;
#4
Adicionado 12 June 2003 - 07:20 AM
Quote
While Data1 > Data2 Do Begin
ValorAPagar := ValorAPagar + JurosPorDia;
End;
ValorAPagar := ValorAPagar + JurosPorDia;
End;
Acrescentando que, para que isto não gere um Loop infinito, é necessário incrementar a Data1 a cada iteração...
Poderia também ser algo assim:
ValorAPagar := ValorAPagar + (JurosPorDia * IfThen(Data2 > Data1, Trunc(Data2 - Data1)));
#5
Adicionado 12 June 2003 - 08:00 AM
Putz... Esqueci do mais importante... Obrigado pela correção Rodrigo. Você pode fazer assim...
Quote
Var Data1, Data2 : TDateTime;
Data1 := DataDoPagamento;
Data2 := DataDoVencimento;
Begin
While Data1 > Data2 Do Begin
ValorAPagar := ValorAPagar + JurosPorDia;
Data2 := Data2 + 1;
End;
End;
Data1 := DataDoPagamento;
Data2 := DataDoVencimento;
Begin
While Data1 > Data2 Do Begin
ValorAPagar := ValorAPagar + JurosPorDia;
Data2 := Data2 + 1;
End;
End;
#6
Adicionado 12 June 2003 - 08:20 AM
Você sabe que quando começamos uma frase assim ...
Primeiro, é preciso fazer algumas considerações - o campo ATRASO não deve existir fisicamente, deve ser definido como campo calculado, ou nem isso, basta ser usado como variável, pois sabemos que ATRASO = DATAPAGAMENTO - DATAVENCIMENTO. ATRASO, então pode ser :
< 0 - pagamento antecipado;
= 0 - pago no dia;
> 0 - aí sim está atrasado.
Vale a mesma observação para o campo VALORPAGO - que pode ser calculado.
Faltam mais informações no seu arquivo : o valor do juros é diário? (suponho que sim) ou mensal?. Se você olhar nos boletos verá que há ainda um juro mensal, além do diário. Você contemplou esta possibilidade ?
Os colegas fizeram cálculos sobre juros compostos (juro sobre juro), mas não sei ao certo se é assim que cobram (nunca confirmei), pois também podem cobrar juros simples.
Não resolvi sua questão - os colegas já o fizeram - mas alertei-o para algumas coisas importantes ...
#7
Adicionado 12 June 2003 - 08:25 AM
Quote
Os colegas fizeram cálculos sobre juros compostos (juro sobre juro), mas não sei ao certo se é assim que cobram (nunca confirmei), pois também podem cobrar juros simples.
Se você olhar bem vai ver que o cálculo que passamos é de juros simples. Se for juros compostos é outra história. Mas os juros cobrados no comércio, atualmente, são juros simples.
#8
Adicionado 12 June 2003 - 09:58 AM
Acho que é uma questão de nomenclatura.
Entendo por juros simples algo como : ValorComJuros=ValorAPagar+NumeroDeDias*TaxaDiária
e juros compostos como : ValorComJuros=ValorAPagar+TaxaUmDia, repetido quantos dias estiver em atraso.
Diferença entre o primeiro e o segundo caso na prática :
Atraso : 2 dias
Juros : 10% ao dia
ValorAPagar = R$ 100,00
simples : ValorComJuros = R$100,00+R$20,00=R$120,00 (R$20,00 = 2x10% de R$100,00)
composto(???) : ValorComJuros = R$100,00+R$10,00+R$11,00=R$121,00
Pelo que podem ver, a área financeira não é meu forte ....
#9
Adicionado 12 June 2003 - 10:09 AM
4_olho, está correto o que você entende por juros simples e compostos.
De qualquer forma o código que eu postei é exatamente o que você entende por juros simples (multiplica os juros diários pelo número de dias).
Já o código do Gabriel é um pouco diferente, mas se a variável JurosPorDia for um valor em reais, dá exatamente no mesmo.
Para se fazer um cálculo de juros compostos, o código dele deveria ser alterado da seguinte forma:
De qualquer forma o código que eu postei é exatamente o que você entende por juros simples (multiplica os juros diários pelo número de dias).
Já o código do Gabriel é um pouco diferente, mas se a variável JurosPorDia for um valor em reais, dá exatamente no mesmo.
Para se fazer um cálculo de juros compostos, o código dele deveria ser alterado da seguinte forma:
Var Data1, Data2 : TDateTime; Data1 := DataDoPagamento; Data2 := DataDoVencimento; Begin While Data1 > Data2 Do Begin ValorAPagar := ValorAPagar + (ValorAPagar*TaxaDeJurosPorDia); Data2 := Data2 + 1; End; End;
#10
Adicionado 12 June 2003 - 12:52 PM
Valeu pessoal,
Obrigado.
Obrigado.
#11
Adicionado 12 June 2003 - 01:41 PM
Por quê o cafezinho ? Porque esta é quente.
Juros simples : Juros = Valor x Taxa x Periodo, tomando o cuidado que período e taxa usem a mesma unidade (dia, ou mê, ou ano ...)
Juros compostos : Montante = Valor x (1 + Taxa)^Período, valendo a mesma observação anterior.
#12
Adicionado 12 June 2003 - 02:01 PM
Correto.
Então, refazendo o meu código para calcular juros simples a partir de uma taxa, e não de um valor de juros previamente calculado, ficaria assim:
Se o valor diário de juros já está previamente calculado (o que é bastante comum) a primeira fórmula que eu passei, assim como a do Gabriel, continua valendo.
Então, refazendo o meu código para calcular juros simples a partir de uma taxa, e não de um valor de juros previamente calculado, ficaria assim:
ValorAPagar := ValorAPagar + (ValorAPagar * TaxaJurosPorDia * IfThen(Data2 > Data1, Trunc(Data2 - Data1)));
Se o valor diário de juros já está previamente calculado (o que é bastante comum) a primeira fórmula que eu passei, assim como a do Gabriel, continua valendo.
1 usuário(s) esta(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)












