Multa como Calcular
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.
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
Curtidas 0
Respostas
Maxadens
12/12/2004
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
[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
GOSTEI 0
Spooner
12/12/2004
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
GOSTEI 0
Rômulo Barros
12/12/2004
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]
GOSTEI 0
Spooner
12/12/2004
date = 13/12/2004
Se eu colocar desta forma ele me retorna o seguinte valor:
Valor:
Dias atrasado: 38333
Desta outra forma:
Retorno:
Dias atrasado: 10083670
O que eu queria que informasse a data desta forma:
E me retornasse a diferenca de 3 dias.
Muito Obrigado pela resposta, espero que possa me ajudar.
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.
GOSTEI 0
Spooner
12/12/2004
Boa Noite,
Consegui fazer do jeito que queria apenas fiz essa alteração:
Obrigado Undeclared Identifier por ter postado, e obrigado MaxAdens por tentar ajuda. :wink: :lol:
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:
GOSTEI 0
Rômulo Barros
12/12/2004
Boa Noite,
Consegui fazer do jeito que queria apenas fiz essa alteração:
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;
TotalDias := DaysBetween(StrToDate(´10/11/2004´), date) ;
GOSTEI 0