Fórum Multa como Calcular #261619

12/12/2004

0

Boa Noita,

Tenho o seguinte problema:

fiz um emprestimo de um livro no dia 10/12/2004 e a data de entrega desse livro seria 17/12/2004 se passar desse dia sera cobrado multa de 2¬ ao dia, gostaria de saber como fazer isso.

Obrigado.


Spooner

Spooner

Responder

Posts

13/12/2004

Maxadens

use esta função para calcular diferença de dias:

[b:fa69bbedda]function DifDias(DataDev:TDateTime; Hoje:TDateTime): integer;
Var Data: TDateTime;
dia, mes, ano: Word;
Dias: String;
begin
if Hoje < DataDev then begin
Result := 0;
end else begin
Data := Hoje - DataDev;
DecodeDate( Data, ano, mes, dia);
Dias := FloatToStr(Data);
Result := Trunc(StrToFloat(dias));
end;
end;[/b:fa69bbedda]

Com a função declarada vc faz o seguinte:

[b:fa69bbedda]var dias: integer;
Valor: currency;
begin
dias := Diasdifdias(DataDevolução, date) //Data devolução seria 17/12/2004
Valor := Valor * (0,02 * dias) //aqui seria o calculo de juros
.
.
.[/b:fa69bbedda]


Algumas adaptações serão necessárias e tem que ver se o juro é acumulativo ou não.

Espero ter ajudado


Responder

Gostei + 0

13/12/2004

Spooner

procedure TForm1.Button1Click(Sender: TObject);
var dias: integer;
  Valor: currency;
begin
  dias := DifDias(10/12/2004, date);
  ShowMessage(IntToStr(dias));
  Valor := (0.15 * dias); //aqui seria o calculo de juros
  ShowMessage(FloatToStr(valor));
end;

function TForm1.DifDias(DataDev:TDateTime; Hoje:TDateTime): integer;
var
  Data: TDateTime;
  dia, mes, ano: Word;
  Dias: String;
begin
  if Hoje < DataDev then begin
    Result := 0;
  end
  else
  begin
    Data := Hoje - DataDev;
    DecodeDate( Data, ano, mes, dia);
    Dias := FloatToStr(Data);
    Result := Trunc(StrToFloat(dias));
  end;
end;


Estou usando o codigo acima mas a diferença de datas esta vindo como 38333 mas o certo ceria:
Data atual: 13/12/2004 - Data Devolução: 10/12/2004
então a diferença seria 3 dias cada dia e cobrado 0.15 centavos então daria 0.45


Responder

Gostei + 0

13/12/2004

Rômulo Barros

Uses
  DateUtils;
...
Var
   TotalDias : Integer;
Begin
    TotalDias := DaysBetween(DataDeEntrega,DataAtual) ;
    If(TotalDias > 0)Then
    Begin
        Showmessage(´Total de Dias Atrasados: ´ + IntToStr(TotalDias) + Chr(10) + ´Valor a ser pago a mais : ´ + FloatToStr(0.15 * TotalDias));
    End;
End;


[u:3c6e320f49][i:3c6e320f49][b:3c6e320f49]Obs: [/i:3c6e320f49][/u:3c6e320f49]A função DaysBeteween retorna o número de dias entre duas datas;[/b:3c6e320f49]


Responder

Gostei + 0

13/12/2004

Spooner

date = 13/12/2004
Se eu colocar desta forma ele me retorna o seguinte valor:
    TotalDias := DaysBetween(10/12/2004, date) ;

Valor:
Dias atrasado: 38333
Desta outra forma:
    TotalDias := DaysBetween(10122004, date) ;

Retorno:
Dias atrasado: 10083670
O que eu queria que informasse a data desta forma:
    TotalDias := DaysBetween(10/12/2004, date) ;

E me retornasse a diferenca de 3 dias.

Muito Obrigado pela resposta, espero que possa me ajudar.


Responder

Gostei + 0

13/12/2004

Spooner

Boa Noite,

Consegui fazer do jeito que queria apenas fiz essa alteração:

    TotalDias := DaysBetween(StrToDate(´10/11/2004´), date) ;


Obrigado Undeclared Identifier por ter postado, e obrigado MaxAdens por tentar ajuda. :wink: :lol:


Responder

Gostei + 0

14/12/2004

Rômulo Barros

Boa Noite, Consegui fazer do jeito que queria apenas fiz essa alteração:
    TotalDias := DaysBetween(StrToDate(´10/11/2004´), date) ;
Obrigado Undeclared Identifier por ter postado, e obrigado MaxAdens por tentar ajuda. :wink: :lol: [quote=U.I.]Uses DateUtils; ... Var TotalDias : Integer; Begin TotalDias := DaysBetween(DataDeEntrega,DataAtual) ; If(TotalDias > 0)Then Begin Showmessage(´Total de Dias Atrasados: ´ + IntToStr(TotalDias) + Chr(10) + ´Valor a ser pago a mais : ´ + FloatToStr(0.15 * TotalDias)); End; End;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar