Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Roberto_S_Luz

Calcular horas Extras com PHP

Recommended Posts

Olá...galera, bom dia a todos...aqui estou eu, mais uma vez e dinovo...rsss

 

Bom...gostaria de saber se...alguem pode me dar alguma dica de como calcular horas extras com php e se possivel JavaScript (AJAX).

 

Preciso calcular as horas extras de alguns funcionarios, só que, não sei muito sobre formatação e validação de datas e horas.

 

Bom...se alguem tiver pelo menos uma noçãozinha de como me ajudar...eu agradeço. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Abraços a todos... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

O cálculo vai ser em javascript?

Eu gosto de trabalhar em segundos quando se trata de horas, transformo em segundos, vejo a diferença de horas e transformo novamente em hora, para exibir ao usuário.

Para trabalhar com datas, existe a classe Date do javascript (http://www.criarweb.com/artigos/301.php).

 

Tente ser mais específico na sua dúvida, tente fazer um esboço de como você gostaria e caso tenha dúvida poste aqui ^_^

 

Guilherme Oenning.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me desculpe...realmentei não me expressei o quanto gostaria.

 

Bom...o calculo, pode ser em JavaScript ou PHP, tanto faz, eu estou com a ideia de fazer da seguinte maneira...

 

O sistema que estou a desenvolve é um controle de transporte coletivo, onde os motoristas saem de manhã com uma ficha de horario de saida, quantas viagens fizeram no dia e a hora que pararam no fim do dia ou de seu turno, fazem por volta de umas 15 viagens por dia cada motorista, cada um em turnos diferentes. Daí no final do dia, os motoristas entregam as rescpectivas fichas ào usuario do sistema e o mesmo irá digitar todos os dados necessários...Bom...agora e´que vem a minha ideia e duvida de como fazer.

Exe:

 

HoraInicio = 07:00

HoraFinal = 17:00

TotalHoras = 10:00

TotalHorasExtras = 02:00

 

Quando o usuario digitar a hora de entrada e saida, gostaria que fosse aparecendo em tempo real a quantidade de horas trabalhadas e horas extras daquela dia (daí o uso de JavaScript ( AJAX ).

 

Daí a quantidade de horas extram, iram acumulando e quando for ser acertado o salario no fim do mês do funcionario, deverá ser informado quanto o motorista deverá ganhar de horas extras.

 

Detalhe, o uso do JavaScritp, é apenas para deixar o sistema mais interativo, mas se for complicado, de primeiro irei está fazendo com PHP mesmo, e exibindo um relatorio ou consultas para que as horas extras possam está sendo analisadas.

 

Bom...basicamente, esta parte do sistema, é para ser feito isto, espero ter sido mais claro.

 

No momento, estou apenas com a ideia...e por não sacar muito de manipulação de datas em JavaScript ou em PHP, não pude postar aqui uma previa do codigo, mais assim que eu começar a fazer um esboço (com fé em Deus) eu irei postar aqui para tirar duvidas...e caso você ou alguem entendeu o meu objetivo e tiver como me dar umas dicas...será bem vindas.... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Desde já agradeço a você por sua atenção e boa vontade em relação ao meu problema, muito obrigado meu amigo!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

 

Abraço!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu sempre faço cálculos usando javascript, é muito mais rápido para usuário, não requer AJAX, muito menos refresh.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara...valeu pelos conselhos...irei acata-los...não entendo muito de JavaScript e nem de manipulação de horas, por isso pedi alguns exemplos para eu ter pelo menos a noção, mas...existem bons artigos espalhados pela net, portanto, irei continuar com mais pesquisas focando no que você me disse aki no forum... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

bom..muito obrigado por sua atenção...e assim que eu tiver uma prévia ou o proprio resultado, postarei aki para você ver como ficou e para que outros com duvidas semelhares possam está tendo-o como ponto de referencia. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Abraço meu amigo...e sucesso para ti!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então vamos fazer da seguinte maneira...

 

Quando eu achar a solução ("pois sou brasileiro e não desisto nunca ou pelo menos morrei tentando...rsss") eu posto aki para você tomar como exemplo.

e se você conseguir resolver primeiro, você posta aki para que eu faça a mesma coisa, pode ser??? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

beleza então...me aguarde pois te aguardarei... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Abraços... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhe só...não sei trabalhar muito com horas...tanto em javascript quanto em php, mas...andei fuçando numas paradas...e já criei algumas paradinhas...não é muita coisa...e tá bem bagunçado ainda, mas...já é um começo...

 

Confira mais abaixo... thumbsup.gif

 

 

CODE

 

<?php

 

$hora1 = "07:30";

$hora2 = "19:45";

 

$totalhorames = "220"; /*Exemplo de horas obrigatórias por mês, depende de cada empresa*/

$totalhoradia = "8"; /*Exemplo de quantidade de horas obrigatorias por dia*/

$salario = "753.00"; /*Exemplo de salario fixo*/

 

 

echo "Valor pago por hora extra trabalhada: ".$valorhora = "5.0 <br>";

 

 

/*Apenas imprimindo as horas iniciais e finais mesmo....nada demais*/

 

echo "Hora inicio: ".$hora1;

 

echo "<br>Hora Fim: ".$hora2;

 

 

$horaini = strtotime($hora1)."<br>"; /*Transformando as horas em segundos*/

$horafin = strtotime($hora2); /*Transformando as horas em segundos*/

$total = $horafin - $horaini; /*Resultado em segundos*/

 

echo "<br> Total de Horas trabalhadas por dia: ".$hora3 = ($total/60)/60; /*Convertendo os segundos para horas*/

/*Primeiro divide o $total por 60(dividindo por segundos, vai dar um total em minutos),

daí o resultado será dividido por 60(dividindo por minutos, vai dar um total em horas), e o resultado será um valor em horas*/

 

$extra = 0;

 

if($hora3 >= 10){

 

$hora3 = $hora3 - 2; /*As 2 horas no final, corresponde às duas horas de almoço*/

echo "<br> Total de horas extra diaria: ".$extra = $hora3 - $totalhoradia; echo " horas";

}

 

 

echo "<br>Valor a ser pago pelas horas extras trabalhadas: ".$valor = $extra * $valorhora; echo " reais <br>";

 

 

 

 

$extra2 = 0;

 

for($dia = 1; $dia <=27.5; $dia++){

 

if($hora3 >= 8){

 

echo "<br>$dia º dia = $extra2 + $extra = ".$extra2 = $extra2 + $extra;

echo " horas<br>";

}

else{

 

echo "<br>$dia º dia = $extra2 + $extra = ".$extra2; echo " Sem horas extra<br>";

 

}

 

}

echo "<br>Total de horas trabalhadas no mês: ".$totalhoras = $hora3 * 27.5; echo " horas";

echo "<br>Total de horas extras por mês : ".$extra2." horas";

 

echo "<br>Valor a ser pago pelas horas extras: ".$valor = $extra2 * $valorhora; echo " reais";

echo "<br>Salario fixo: $salario reais (Exemplo)<br>";

 

if($hora3 >= 8){

 

echo "<br><br><br>Salario total: ".$salariototal = $salario + $valor; echo " reais";

}

else{

 

echo "<br><br><br>Salario total: ".$salario; echo " reais";

}

echo "<br><br><br>Salario Secundario /*Apenas um exemplo para calcular o salario dividindo o total de horas por mÊs menos o valor de horas obrigatoria, neste caso, é 220*/<br>";

echo "<br> Horas Extra Subtraindo o total de horas ($totalhoras)<br> menos a quantidade de horas obrigatoria por mes ($totalhorames): ".$horatotal = $totalhoras - $totalhorames; echo" horas";

echo "<br> Salario : ".$valor = $horatotal * $valorhora; echo" reais";

echo "<br> Salario final: ".$salariototal = $salario + $valor; echo" reais";

?>

 

Um detalhe...é que...se caso eu colocar horas exatas...irá imprimir valores exatos, mas se eu colocar valores quebrados por exemplo 19:45, onde esses 45 vai dar um probleminha...em vez de aparecer os 45, aparece é 75, pois acho que são trabalhados em frações de horas....por exemplo:

 

15 min = 25;

30 min = 50;

45 min = 75;

60 min = 10 ou 1 h

 

Bom...suponho que seja isso...mas...o que eu não sei é como fazer com que...fique normal...rssss

 

Esse codigo é apenas um esboço...estarei trabalhando mais nele para melhora-lo e chegar ao meu objetivo, até porque, ele está meio precário e com pouquissimna logica....bom... e claro que...irei fuçar no seu codigo também e ver o que posso fazer para adapta-lo... joia.gif

 

Bom...um grande abraço e obrigado desde já...assim que tiver mais coisa...postarie aki... joia.gif

 

 

 

Segue abaixo um outro exemplo deixado pelo Guilherme Oenning, só que...é ue JavaScript...mais tá show de bola...e já dar pra ter uma boa noção

 

Confiram...

 

CODE

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>Untitled Page</title>

<script language="javascript" type="text/javascript">

function Hora(obj){

v = obj.value;

v=v.replace(/\D/g,"")

v=v.replace(/(\d{2})(\d)/,"$1:$2")

obj.value = v

}

 

function Calcula(){

txtHoraInicial = document.getElementById("txtHoraInicial");

txtHoraFinal = document.getElementById("txtHoraFinal");

 

SegundosInicial = (txtHoraInicial.value.substr(0,2) * 3600);

SegundosInicial += (txtHoraInicial.value.substr(3,2) * 60);

 

SegundosFinal = (txtHoraFinal.value.substr(0,2) * 3600);

SegundosFinal += (txtHoraFinal.value.substr(3,2) * 60);

 

HorasTotal = parseInt((SegundosFinal - SegundosInicial)/3600);

MinutosTotal = parseInt(((SegundosFinal - SegundosInicial)%3600)/60);

 

document.getElementById("txtHoraTotal").value = HorasTotal + ":" + MinutosTotal;

 

if ((HorasTotal == 8) && (MinutosTotal > 0) || (HorasTotal >= 8)){

document.getElementById("txtHoraExtra").value = HorasTotal - 8 + ":" + MinutosTotal;

}else{

document.getElementById("txtHoraExtra").value = "00:00";

}

}

</script>

</head>

<body>

Inicial: <input type="text" maxlength="5" id="txtHoraInicial" onkeyup="Hora(this);" /><br />

Final: <input type="text" maxlength="5" id="txtHoraFinal" onkeyup="Hora(this);" /><br />

Total: <input type="text" maxlength="5" id="txtHoraTotal" onkeyup="Hora(this);" /><br />

Extra: <input type="text" maxlength="5" id="txtHoraExtra" onkeyup="Hora(this);" />

<input type="button" id="txtCalcula" value="Calcula" onclick="Calcula();"/>

</body>

</html>

 

Bom galera...ainda não tenho a bagaça já pronta...mais estou caminhando no rumo...assim que eu conseguir o meu objetivo...estarei postando aqui beleza...e caso alguem que entenda melhor esse assunto e quiser colaborar...fiquei muito grato http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Desde já...muito obrigado e um abraço a todos... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.