Calculo de horas extra para folha ponto

Boa tarde pessoal, estou com dificuldade para montar o código para calcular as horas extra desta folha ponto, alguém teria alguma dica?

Consegue mostrar a lógica do calculo?

1 Curtida

Então… Eu sei que são 6 horas trabalhadas por dia, se passar das 6 horas eu tenho que fazer essa soma para mostrar as horas extra.

Creio que consiga fazer isso de modo bem simples então, basta puxar os valores do banco, podendo fazer esse calculo no próprio select mesmo, mostrando no final o excedente/faltante e formatando condicionalmente. Quase um Excel com banco

Na verdade não sei se entendi, será feito alimentação manual? Tem alguma lógica/sistema prontos? Pois realmente parece só um Excel rebuscado hehe

Vou ver se consigo fazer pelo banco, não tenho nada pronto mesmo, estava pesquisando para ver como eu conseguiria fazer dentro do scriptcase.

Na verdade não sei se tu precisa do banco e SC, pode ser só complicar algo que não precisa, achei que esses dados estivessem em um banco e que tu fosse puxar dele, mas talvez não tenha porque salvar no banco só para puxar e usar o SC se a própria planilha contempla o que tu precisa.

Eu tenho o banco pronto, tenho as aplicações tudo certo, nesse pdf eu tenho que criar o código pra somar horas extras.

Nesse caso basta puxar do banco e subtrair as 6hrs, se for positivo vai pra extra, se não pra faltante. o calculo pode ser feito no próprio select ou usando php depois de usar o sc_lookup.

Contas com horas em php: https://pt.stackoverflow.com/questions/144247/cálculo-de-horas-com-php

Macros SC: https://www.scriptcase.com.br/docs/pt_br/v9/manual/14-macros/02-macros/#sc_select_order

1 Curtida

Vou tentar aqui, muito obrigado pela atenção!!

1 Curtida

No meu canal de telegram tinha deixado dicas sobre o assunto.

Se calcular as horas trabalhadas dia, horas extras fica fácil.

Calculando horas trabalhadas dia:

$data = date('Y-m-d');
$horaEntrada = '08:00:00';
$horaSaida = '17:30:00';
$horaIntervaloEnt = '12:00:00';
$horaIntervaloSai = '13:00:00';
$horasDia = 8;

//Instanciando hora de saída
$hrSaida = new DateTime( $data.' '. $horaSaida);

//Instancioando hora da saída do intervalo
$hrInt =  new DateTime($data . ' ' . $horaIntervaloSai);

//Calculando tempo de intervalo
$diffInt = $hrInt->diff( new DateTime( $data.' '.$horaIntervaloEnt ) );

//Montando parametro para descontar tempo de intervalo
$intervalo = "-{$diffInt->h} hours -{$diffInt->i} minutes -{$diffInt->s} seconds";

//Subtraindo tempo de intervalo na hora de saída
$hrSaida->modify($intervalo);

//Calculando tempo entre hora de entrada e hora de saída
$diff = $hrSaida->diff( new DateTime( $data.' '. $horaEntrada ) );

//Guardando horas trabalhadas no dia
$horasTrabalhadas = $diff->h .' horas e '. $diff->i .' minutos e '. $diff->s. ' segundos';

//Calculando horas extras ou horas devedora resultando em valor decimal
$hrDec = round($diff->h + ($diff->i/60) + ($diff->s/360) , 2) - $horasDia;
if ($hrDec < 0) 
{
   $horasDevedora = $hrDec * -1;
   $horasExtra = 0;
}else{
   $horasExtra = $hrDec;
   $horasDevedora = 0;
}

echo 'Horas Trabalhadas:'.$horasTrabalhadas, '<br>',
'Horas Extra/Devedora:'.$hrDec ;

Obs: Se não tiver intervalo, desconsiderar as linhas com comentário contendo intervalo

TAGS:: Haroldo, Ponto, Folha, Pagmento, DateTime, PHP, Cálculo, Horas, Extra

2 Curtidas

Opa, boa tarde Haroldo. Já consegui resolver mas de qualquer forma muito obrigado pela atenção!!

1 Curtida

Olá Aroldo, testei o código, só que depois de zero hora a quantidade de horas trabalhada não vem correta.
Exemplo: 22:00 as 02:00 retorna 21:00 horas trabalhadas. Sempre ocorre isso nos código que testei no Forum.

Se hora final menor que hora inicial tem que fazer duas contas

24 - 22
02 - 00

1 Curtida