Página 1 de 1
Calculo de valor por hora
Enviado: 11 Fev 2009 12:47
por rbonotto
Ola,
Estou com problema que é o seguinte:
Tenho um banco de dados onde é gravado o horario de entrada do funcionario e o horario de saida. Antes o chefe pagava a diaria e "sefini"...
Mas agora o cabra quer pagar por hora, crise né....estipulou um valor para cada 60 minutos e pagara os exatos MINUTOS trabalhados :-O
Me embananei porque os campos estão gravados no formato "99:99" tanto entrada quanto saida. Mas eles são campos texto !
Como poderia fazer esta rotina ? tipo hora de saida menos hora de entrada igual a X minutos....alguem poderia dar um help ?
Abraços,
Re: Calculo de valor por hora
Enviado: 11 Fev 2009 13:06
por Maligno
O ideal seria transformar tudo em minutos, fazer o cálculo do tempo trabalhado e, por fim, calcular o valor a pagar. Ou sua dificuldade está no código?
Re: Calculo de valor por hora
Enviado: 11 Fev 2009 13:18
por rbonotto
Sim a idéia é tranformar tudo em minutos e depois colocar o valor, mas como fazer isto se o campo é texto ?
A minha dificuldade esta no codigo....
Re: Calculo de valor por hora
Enviado: 11 Fev 2009 13:31
por Maligno
É só o caso de separar a string e transformar para o tipo numérico. Sabendo que o formato é sempre "99:99", as horas são sempre dois caracteres à esquerda e os minutos os dois caracteres à direita. Usando as funções de tratamento de strings, é só separar.
Código: Selecionar todos
nMins := Val( Left(cTempo,2)) * 60
nMins += Val(Right(cTempo,2)) // neste ponto, o total de minutos
Esse primeiro passo já dá pra ter uma idéia de como converter para minutos. Basta fazer isso para os tempos final e inicial e subtrair os valores para ter o total de minutos. Sabendo quanto custa por minuto, é só multiplicar.
Re: Calculo de valor por hora
Enviado: 11 Fev 2009 13:51
por Maligno
Lembrando que o cálculo muda se houver alguém que comece a trabalhar num dia pra terminar no dia seguinte. Se o tempo final for inferior ao inicial, significa que a jornada de trabalho terminou no dia seguinte. Pra resolver isso, basta deslocar essa "faixa de tempo" na quantidade igual ao tempo final, zerando esse tempo final. Assim, para ter o tempo trabalhado, basta subtrair 1440 (eq. a 24h) do tempo inicial. Exemplo prático:
Código: Selecionar todos
HoraIni = 16:30 --> 990 min
HoraFin = 01:30 --> 90 min
Deslocar a faixa de tempo em 90 minutos:
HoraIni = 15:00 --> 900 min
HoraFin = 00:00 --> 0 min
Minutos trabalhados: 1440 - 900 = 540 min.
Lembrando também que, de acordo com a convenção coletiva da categoria, pode haver uma fatia mínima de tempo a se considerar. Exemplo: costureira pode ter 15 min. Se trabalhar 1 min, ganha 15. Um açogueiro industrial pode ter fatia de 1 min. E assim por diante.
Re: Calculo de valor por hora
Enviado: 11 Fev 2009 15:56
por rbonotto
Valeu ! na mosca mesmo -:] é exatamente a solução. To devendo um churrasco =)
Abração