Jump to content


- - - - -

Calcular Juros










11 respostas a este tópico

#1 ilanocf

    Membro - Senior 3

  • Membros
  • PipPipPipPipPipPipPipPipPip
  • 1580 posts
  • Sexo:Masculino
  • Estado:Other Countries

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.

#2 Aroldo Zanela

    Membro - Top

  • (*)Insigne
  • 3475 posts
  • Sexo:Masculino
  • Estado:Distrito Federal

Adicionado 11 June 2003 - 05:10 PM

Ilano,

Uma idéia.

OnCalcFields
if (TabelaDataDoVencimento.Value <  Date) and (TabelaValorPago.IsNull) then


#3 Gabriel Frones

    Memento Mori

  • (*)Insigne
  • 7315 posts

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 Rodrigo Bergmann

    Membro - Pleno 1

  • (*)Insigne
  • 675 posts
  • Estado:Santa Catarina

Adicionado 12 June 2003 - 07:20 AM

Quote

While Data1 > Data2 Do Begin
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 Gabriel Frones

    Memento Mori

  • (*)Insigne
  • 7315 posts

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;


#6 Frank

    Membro - Pleno 2

  • (*)Insigne
  • 405 posts

Adicionado 12 June 2003 - 08:20 AM

:( Não querendo complicar ... :(

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 Rodrigo Bergmann

    Membro - Pleno 1

  • (*)Insigne
  • 675 posts
  • Estado:Santa Catarina

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 Frank

    Membro - Pleno 2

  • (*)Insigne
  • 405 posts

Adicionado 12 June 2003 - 09:58 AM

:( :( Desculpem ! :( :(

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 ....
:blink: :blink: :blink: :blink: :blink:

#9 Rodrigo Bergmann

    Membro - Pleno 1

  • (*)Insigne
  • 675 posts
  • Estado:Santa Catarina

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:
Var Data1, Data2 : TDateTime;
Data1 := DataDoPagamento;
Data2 := DataDoVencimento;
Begin
While Data1 > Data2 Do Begin
   ValorAPagar := ValorAPagar + (ValorAPagar*TaxaDeJurosPorDia);
   Data2 := Data2 + 1;
End;
End;


#10 ilanocf

    Membro - Senior 3

  • Membros
  • PipPipPipPipPipPipPipPipPip
  • 1580 posts
  • Sexo:Masculino
  • Estado:Other Countries

Adicionado 12 June 2003 - 12:52 PM

Valeu pessoal,

Obrigado.

#11 Frank

    Membro - Pleno 2

  • (*)Insigne
  • 405 posts

Adicionado 12 June 2003 - 01:41 PM

:coffee:

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 Rodrigo Bergmann

    Membro - Pleno 1

  • (*)Insigne
  • 675 posts
  • Estado:Santa Catarina

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:

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)