Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3068 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

ola estou precisando de uma ajuda ou dica.

preciso fazer um sistema que cobra horas e aquelas franquias que os pais deixam as ciranca no parque e depois paga

o pai pode comprar um pacote tipo 50 horas e ir descontando nele.. so que tentei fazer 50 horas pra exemplo descontar 15 minutos ou 1 horas nao da certo.. alguem ja fez isso ou algo parecido

tentei fazer 50 - 0,15(minutos) ate que vai so que quando vamos para 50-0,60(que seria 1 hora nao vai) e ainda teria por exemplo se pai deixa a crianca 14 horas por exemplo quando dar 14:01 o sistema tem jogar ja o pacote de 15 minutos e se der 14:21 (que passou os 5 de tolerancia ) ja jogaria mais 15 fechando 30 minutos 
.

o problema maior ai que estou entrando e como fazer essa base de horas
se eu pegar 50 horas e achar o minuto
50 x60 = 3000 minutos e usar 15 ficaria 2.985.00 minutos ate ai tudo bem mais se eu pegar 2985 / 60 da 49,75
o certo seria 49,45 .. matematicamente o calculo em cima esta certo agora o quebra cabeça e transformar em horas. porque nao pode ficar 49 horas e 75 minutos o certo seria 49,45 minutos

Postado

bom dia eu costumo fazer assim :

hCre := 50 * 60; transforma horas em minuto

mCre := 0; aqui é os minutos

TotalCre := hCre + mCre;

 

hDeb := 0 * 60; transforma horas em minuto

mDeb := 15; aqui é os minutos

TotalDeb := hDeb + mDeb;

   hh := 0;
   mm := TotalCre - TotalDeb;
   while mm > 59 do
    begin
     hh := hh + 1;
     mm := mm - 60;
    end;

  showmessage(formatfloat('000', hh) + ':'+ formatfloat('00', mm));
 

usei como exemplo o seus dados sendo 50:00 credito e 15 minutos de debito;

Postado

hum.. obrigado!!!!
a tolerância seria sempre 5 ou seja a cada 5 minutos 6 no caso adicionaria 15 exemplo pai chega e deixa o filha 14 horas quando passar 14.06 ja adiona 15 mintutos no comanda dele quando der 14.21 ja adiciona mais 15 e assim suscetivamente teria que descobrir por exemplo se pessoa fica 2.06  cobraria 2.15

Postado (editado)

faca uma regra pra verificar +/- assim

hh := //horas 

mm := minutos

if (mm > 6) and (mm < 15) then

 begin

hh := horas;

mm := 15;

end;

 

if (mm > 21) and (mm < 30) then

 begin

hh := horas;

mm := 30;

end;

 

if (mm > 36) and (mm < 45) then

 begin

hh := horas;

mm := 45;

end;

 

if (mm > 51) and (mm <= 59) then // atencao aqui

 begin

hh := horas + acrescida de 1;

mm := 0; os minutos é zero

end;

Editado por leandroaoa
Postado

basta usar assim

hh := 0; como você vai trabalhar so com minutos aqui é zero
   mm := 3000; aqui você passa os minutos 
   while mm > 59 do
    begin
     hh := hh + 1;
     mm := mm - 60;
    end;

  showmessage(formatfloat('000', hh) + ':'+ formatfloat('00', mm));

e depois aplicar a regra que te falei, e se você quiser converter pra minutos faca o seguinte

tMM := (hh * 60) + mm;

você esta usando o round aonde pra calcular o valor pois pra hora basta usar como te falei com variaveis interger; 

  • Este tópico foi criado há 3068 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.