Cálculo de HORAS

Destinado ao auxílio e Troca de informações sobre a ferramenta Xmaker
wkarts
Mensagens: 17
Registrado em: Janeiro 30th, 2011, 3:34 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Cálculo de HORAS

Mensagempor wkarts » Março 13th, 2011, 3:37 pm

Olá estou com seguinte dúvida:

estou desemvolvendo um sistema para moteis e não sei como efetuar um determinado cálculo
seguinte:

tenho a tabela onde possuo os campos que informo data e hóra de entrada e data e hóra de saída
quero saber o tempo entre um e outro e quero pegar esse tempo e multiplica pelo valor da hóra e
também que quero determinar uma tolerância para ser calculada a prixima hora ex:

entrada 17/01/2011 16:00:00
saída 17/01/2011 16:00:00
resultado = 1:00 hs

agora se tenho tolerância de 15min

entrada 17/01/2011 16:00:00
saída 17/01/2011 16:14:59
resultado = 1:00 hs

agora se atinge a tolerância de 15min

e mutiplicar o resultado pelo valor da hora
entrada 17/01/2011 16:00:00
saída 17/01/2011 16:15:00
resultado = 2:00 hs

se alguém puder ajudar

Gustavo
Mensagens: 244
Registrado em: Dezembro 22nd, 2010, 1:05 am
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Re: Cálculo de HORAS

Mensagempor Gustavo » Março 14th, 2011, 3:56 pm

Olá,
existe uma função que retorna a diferença entre duas horas:

function DifHora(Inicio,Fim : String):String;
{Retorna a diferença entre duas horas}
var
FIni,FFim : TDateTime;
begin
Fini := StrTotime(Inicio);
FFim := StrToTime(Fim);
If (Inicio > Fim) then
begin
Result := TimeToStr((StrTotime('23:59:59')-Fini)+FFim)
end
else
begin
Result := TimeToStr(FFim-Fini);
end;
end;
----------------------------------------------

O usuário Gilberto já havia usado outras rotinas de cáculos com horas que são muito interessantes, e podem estar lhe ajudando:

//Retorna a diferença entre duas horas
function DIFTEMP(hora_i,hora_f: String): String; // Formato 99-99-99

//*********** transforma hora em minutos *************//
function HoraMinuto(valor : String):Integer;

//*********** transforma minutos em horas *************//
function MinutoHora(valor : integer):String;

//*********** transforma minutos em horas *************//
function MinutoHor(valor : integer):String;

//*********** transforma horas em centesimos *************//
function HorasCentesimo(hh,mm,ss : integer):Double;

--------------------------------------------------------------------------

function DifTempo(hora_i, hora_f: TTime): String;
var
totsegdia, hora1, hora2, final: Integer;
resultado: String;

function Segundos(tempo,inicio: String): Integer;
var
Horas, Minutos, s1, s2, Segs, Final: Integer;
begin
if inicio <> '' then
begin
Horas:=StrToInt(Copy(Tempo,01,2))-StrToInt(Copy(Inicio,1,2));
Minutos:=StrToInt(Copy(Tempo,4,2))-StrToInt(Copy(Inicio,4,2));
s1:=StrToInt(Copy(Tempo,7,2));
s2:=StrToInt(Copy(Inicio,7,2));
if s2<=s1 then
segs:=S1-S2
else
segs :=S1+(60-S2);
tempo:=FormatFloat('00',horas) + ':' + FormatFloat('00',minutos) + ':' + FormatFloat('00',segs);
end;
final:= StrToInt(Copy(tempo,01,2))*3600 + StrToInt(Copy(tempo,4,2))*60 +
StrToInt(Copy(tempo,7,2));
Segundos := final;
end;

begin
totsegdia:=86400; // total de segundos de 1 dia
hora1:=segundos(TimeToStr(hora_i),'');
hora2:=segundos(TimeToStr(hora_f),'');
if hora2<hora1 then // mudou de dia
hora2:=hora2+totsegdia;
final:=hora2-hora1;
Resultado := FormatFloat('00',Int((final div 3600) mod 24)) + ':' +
FormatFloat('00',Int((final div 60) mod 60)) +':' +
FormatFloat('00',Int(final mod 60));
DifTempo := Resultado;
end;

//*********** transforma hora em minutos *************//
function HoraMinuto(valor : String):Integer;
var minuto : integer;
begin
minuto:=strtoint(copy(valor,1,pos(':',valor)-1))*60;
minuto:=minuto+strtoint(copy(valor,pos(':',valor)+1,2));
result := minuto;
end;

//*********** transforma minutos em horas *************//
function MinutoHora(valor : integer):String;
var hora,minuto : integer;
begin
hora:=valor div 60;
minuto:=valor mod 60;
result := formatfloat('00',hora)+':'+formatfloat('00',minuto);
end;

//*********** transforma minutos em horas *************//
function MinutoHor(valor : integer):String;
var hora,minuto : integer;
begin
hora:=valor div 60;
minuto:=valor mod 60;
result := formatfloat('0000',hora)+':'+formatfloat('00',minuto);
end;

//*********** transforma horas em centesimos *************//
function HorasCentesimo(hh,mm,ss : integer):Double;
begin
result := ( ( (hh * 3600) + (MM * 60) + SS ) / 3600);
end;
Att,

Gustavo Barreto
;)

wkarts
Mensagens: 17
Registrado em: Janeiro 30th, 2011, 3:34 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Re: Cálculo de HORAS

Mensagempor wkarts » Março 14th, 2011, 4:22 pm

OK, porém essa função eu aplico dentro do campo calculado?

Suporte
Site Admin
Mensagens: 145
Registrado em: Dezembro 20th, 2010, 10:05 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Re: Cálculo de HORAS

Mensagempor Suporte » Março 14th, 2011, 4:30 pm

Olá,

Sim, Você pode estar usando elas em campo calculado.

Para essas funções estarem disponíveis você poderá acrescentá-las dentro de Rotinas.pas e invocá-las no campo
calculado, assim poderá mostrar os Totais em telas e relatórios. (verifique como fazer através das outras funções que você já encontrará lá)


Att,
Suporte - Equipe Xmaker
________________________
http://www.xmaker.com.br

Gustavo
Mensagens: 244
Registrado em: Dezembro 22nd, 2010, 1:05 am
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Re: Cálculo de HORAS

Mensagempor Gustavo » Março 17th, 2011, 4:11 pm

Está em anexo um projeto exemplo que mostra a diferença entre uma hora inicial e final.

Em Rotinas.pas se encontra a função DifHora que calcula a diferença entre as horas.

Na tabela CLIENTES do projeto exemplo existem 3 campos relacionados as horas:

Hora inicial, hora final e o campo calculado que contém o cálculo que chama a função para calcular a diferença entre os campos hora inicial e hora final.
Você não está autorizado a ver ou baixar esse anexo.
Att,

Gustavo Barreto
;)

wkarts
Mensagens: 17
Registrado em: Janeiro 30th, 2011, 3:34 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Re: Cálculo de HORAS

Mensagempor wkarts » Abril 5th, 2011, 4:53 pm

ok
Consegui efetuar o cálculo da Hora, porém, de saber como fazer para transformar a hora (resultado) em dinheiro
Tipo e:

Entrada: 10:45:00
Saída: 12:45:00
Total: 02:00:00

Valor Hora: R$15,00

Total a pagar: 30,00


Não estou conseguindo fazer isso acontercer.

Desde já agradeço a colaboração

Gustavo
Mensagens: 244
Registrado em: Dezembro 22nd, 2010, 1:05 am
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Re: Cálculo de HORAS

Mensagempor Gustavo » Abril 7th, 2011, 3:37 pm

Olá,
Criamos um sistema que calcula o total de horas a pagar.
Exemplo_valor_hora_pagar.JPG

No botão "Fechar Hora/Calculo Total" está a programação que calcula o total a pagar.

Para funcionar precisa converter a diferença entre horas em minutos, para depois fazer o cálculo.

Segue em anexo o sistema.
Você não está autorizado a ver ou baixar esse anexo.
Att,

Gustavo Barreto
;)

wkarts
Mensagens: 17
Registrado em: Janeiro 30th, 2011, 3:34 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Re: Cálculo de HORAS

Mensagempor wkarts » Abril 12th, 2011, 9:03 am

OK,

muito bom, muito bom mesmo compreendi legal, porém
não grava no banco de dados.

clico no botão para calcular, clico em salvar
porém não salva na base de dados

qual será o motivo?

tem como o cálculo ser efetuado no campo alutomaticamente? Ao invés de ter que clicar no botão para fazer o cálculo?

desde já muito grato

Gustavo
Mensagens: 244
Registrado em: Dezembro 22nd, 2010, 1:05 am
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Re: Cálculo de HORAS

Mensagempor Gustavo » Abril 12th, 2011, 10:52 am

Olá,

Sim tem como fazer automáticamente, basta acrescer no código, na saída da hora final(exit) informar o código do botão calcular.

Os campos não são gravados, pois não foram criados na Base, basta criar os mesmos na base e fazer a atribuição.
Att,

Gustavo Barreto
;)

wkarts
Mensagens: 17
Registrado em: Janeiro 30th, 2011, 3:34 pm
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Re: Cálculo de HORAS

Mensagempor wkarts » Abril 14th, 2011, 10:17 am



[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1236: count(): Parameter must be an array or an object that implements Countable

Voltar para “Xmaker”

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 79 visitantes