Folha de Ponto, com datas móveis como Carnaval Sexta-Feira Santa e Corpus Christi
Publicado por Herson Rodrigues 04/09/2007
[ Hits: 14.381 ]
Homepage: http://herson.objectis.net
Download folha_de_ponto_feriados_fixos_e_moveis.php
Precisei implementar uma folha de ponto para minha empresa onde não é preciso mais alterar aqueles doc's.
Então criei este código que através de cálculos muito chatos (pegou até as fases da lua) consegui que ele descobrisse quando cairá o CARNAVAL por exemplo, o código está totalmente comentado.
NÃO É NECESSÁRIO BANCO DE DADOS PARA VER ESTE SCRIPT, basta colocá-lo no seu diretório preferido e chamá-lo.
<h5>Para Testar basta Mudar o Mês ou Ano do seu relógio</h5><p> <? //########################################################################## //########################################################################## //########################################################################## //CREDITOS HERSON RODRIGUES - HERSONDF@HOTMAIL.COM //########################################################################## //########################################################################## //########################################################################## //########################################################################## //Convertendo Dia da SEMANA $dia_semana = date("l"); //L (Minusculo) pega o nome em ingles da semana if($dia_semana == "Monday") $dia_semana = "Segunda"; if($dia_semana == "Tuesday") $dia_semana = "Terça"; if($dia_semana == "Wednesday") $dia_semana = "Quarta"; if($dia_semana == "Thursday") $dia_semana = "Quinta"; if($dia_semana == "Friday") $dia_semana = "Sexta"; if($dia_semana == "Saturday") $dia_semana = "Sabádo"; if($dia_semana == "Sunday") $dia_semana = "Domingo"; //Recebendo o Ano Atual $ano_atual = date("Y"); //Y pega o ano no formato YYYY caso queira YY ponha y ... //Recebendo o Mes Atual para Nome $mes_atual = date("m"); //Recebendo Mes Atual para Numero $mes = date("m"); if($mes_atual == "01"){ $mes_atual = "Janeiro"; $time_left = 31; } //######################################################## //Vendo se é Fevereiro e se O ano é Bissexto //Recebendo o Ano Bissexto $bisexto = date("y"); if($mes_atual == "02"){ $mes_atual = "Fevereiro"; if ((($bisexto % 4) == 0 and ($bisexto % 100)!=0) or ($bisexto % 400)==0){ $time_left = 29; } else{ $time_left = 28; } } //########################################################## if($mes_atual == "03"){ $mes_atual = "Março"; $time_left = 31; } if($mes_atual == "04"){ $mes_atual = "Abril"; $time_left = 30; } if($mes_atual == "05"){ $mes_atual = "Maio"; $time_left = 31; } if($mes_atual == "06"){ $mes_atual = "Junho"; $time_left = 30; } if($mes_atual == "07"){ $mes_atual = "Julho"; $time_left = 31; } if($mes_atual == "08"){ $mes_atual = "Agosto"; $time_left = 31; } if($mes_atual == "09"){ $mes_atual = "Setembro"; $time_left = 30; } if($mes_atual == "10"){ $mes_atual = "Outubro"; $time_left = 31; } if($mes_atual == "11"){ $mes_atual = "Novembro"; $time_left = 30; } if($mes_atual == "12"){ $mes_atual = "Dezembro"; $time_left = 31; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Frequência de <?=$nome?></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <br> <table width="97%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="28%" height="60"><img src="../imagens/logo_iphan.jpg" width="264" height="60"></td> <td width="72%"><div align="left"><font size="2"><strong>Ministério da Cultura - MinC <br> Instituto do Patrimônio Histórico e Artístico Nacional<br> Departamento de Planejamento e Administração<br> Divisão de Capacitação e Desenvolvimento</strong></font></div></td> </tr> </table> <table width="97%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="67%"> </td> <td width="33%"> </td> </tr> <tr> <td><?=$sexo?> <?=$nome?></td> <td><div align="left">Mês<strong>:</strong> <?=$mes_atual?> de <?=$ano_atual?></div></td> </tr> <tr> <td>Lotação: <?=$lotacao?></td> <td> </td> </tr> <tr> <td>Carga Horária: <?=$carga_horaria?> horas semanais</td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> </table> <table width="97%" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000"> <tr> <td width="5%" bgcolor="#CCCCCC"><div align="center"><strong>DIA</strong></div></td> <td width="13%" bordercolor="#000000" bgcolor="#CCCCCC"><div align="center"><strong>HORA DE ENTRADA</strong></div></td> <td width="13%" bgcolor="#CCCCCC"><div align="center"><strong>HORA DE SAÍDA</strong></div></td> <td width="32%" bgcolor="#CCCCCC"><div align="center"><strong>RUBRICA DO ESTAGIÁRIO</strong></div></td> <td width="16%" bgcolor="#CCCCCC"><div align="center"><strong>OCORRÊNCIA</strong></div></td> <td width="21%" bgcolor="#CCCCCC"><div align="center"><strong>ABONO DA CHEFIA IMEDIATA</strong></div></td> </tr> <? //********FERIADOS MÓVEIS********************************************* //===>Carnaval //===>Corpus Christi //===>Sexta-Feira Santa //******************************************************************** //********FERIADOS FIXOS********************************************** // 01/01 - Confraternização universal // 21/04 - Tiradentes / Niver Brasília (Distrital) // 01/05 - Dia do Trabalhador // 07/09 - Dia da Independência do Brasil // 12/08 - Dia da Nossa Ser Aparecida // 02/11 - Dia de Finados // 15/11 - Ploclamação da Rep // 30/11 - Dia do Evangélico (Distrital) // 25/12 - Natal //******************************************************************** // Faixa de anos X Y, Servem para calcular a Pascoa e consectivamente feriados móveis... //è um cálculo que resgata as fases da lua... //Para pegar as fases da Lua depende do nosso Século... if($ano_atual >=1582 and $ano_atual <=1599){ $x= 22; $y= 2; } if($ano_atual >=1600 and $ano_atual <= 1699){ $x= 22; $y= 2; } if($ano_atual >=1700 and $ano_atual <= 1799){ $x= 23; $y= 3; } if($ano_atual >=1800 and $ano_atual <= 1899){ $x= 24; $y= 4; } if($ano_atual >=1900 and $ano_atual <= 1999){ $x= 24 ; $y=5; } if($ano_atual >=2000 and $ano_atual <= 2099){ $x= 24; $y=5; } if($ano_atual >=2100 and $ano_atual <= 2199){ $x= 24; $y= 6; } if($ano_atual >=2200 and $ano_atual <= 2299){ $x= 25; $y=7; } //Vamos ao cálculo da Páscoa $a = $ano_atual % 19; $b = $ano_atual % 4; $c = $ano_atual % 7; $d = (((19*$a)+$x) % 30); $e =(((2*$b)+(4*$c)+(6*$d)+$y)%7); if(($d+$e)<10){ $dia_de_hoje = ($d+$e+22); $mes_now = 3; } else{ $dia_de_hoje = ($d+$e-9); $mes_now = 4; } //Caso específico //Há dois casos particulares que ocorrem duas vezes por século //Quando o domingo de Páscoa cair em Abril e o dia for 26, corrige-se para uma semana antes, ou seja, vai para dia 19 if($dia_de_hoje==26 && $mes_now==4){ $dia_de_hoje=19; } //Quando o domingo de Páscoa cair em Abril e o dia for 25 e o termo "d" for igual a 28, simultaneamente com "a" maior que 10, então o dia é corrigido para 18. if($dia_de_hoje==25 && $mes_now==4){ $dia_de_hoje=18; } //####################################################################### //FUNÇÃO DE SOMA E SUBTRAÇÃO DE DATAS //####################################################################### function SomarData($data2, $dia_de_hoje2, $mes_nowe2, $oano2) { //passe a data no formato dd/mm/yyyy $data2 = explode("/", $data2); $newData2 = date("d/m/Y", mktime(0, 0, 0, $data2[1] + $mes_nowe2, $data2[0] + $dia_de_hoje2, $data2[2] + $oano2) ); return $newData2; } function SubtrairData($data3, $dia_de_hoje3, $mes_nowe3, $oano3) { //passe a data no formato dd/mm/yyyy $data3 = explode("/", $data3); $newData3 = date("d/m/Y", mktime(0, 0, 0, $data3[1] - $mes_nowe3, $data3[0] - $dia_de_hoje3, $data3[2] - $oano3) ); return $newData3; } //####################################################################### //Recebe a Pascoa deste Ano $data_pascoa = date("$dia_de_hoje/$mes_now/$ano_atual"); //Calcular o Carnaval - 47 Dias antes da Páscoa $carnaval = SubtrairData("$data_pascoa", 47, 0, 0); $carnaval = date($carnaval); //Calcular a Sexta-Feira Santa - 2 Dias antes da Páscoa $sexta_santa = SubtrairData("$data_pascoa", 2, 0, 0); //Calcular Corpus Christi - 60 Dias apos a Páscoa $corpus =SomarData("$data_pascoa", 60, 0, 0); //Agora o resto dos feriados $confraternizacao = date ("01/01/$ano_atual"); // 01/01 - Confraternização universal $tiradentes = date ("21/04/$ano_atual"); // 21/04 - Tiradentes / Niver Brasília (Distrital) $trabalhador = date ("01/05/$ano_atual"); // 01/05 - Dia do Trabalhador $independencia = date ("07/09/$ano_atual"); // 07/09 - Dia da Independência do Brasil $nsaparecida = date ("12/10/$ano_atual"); // 12/10 - Dia da Nossa Ser Aparecida $finados = date ("02/11/$ano_atual"); // 02/11 - Dia de Finados $replublica = date ("15/11/$ano_atual"); // 15/11 - Ploclamação da Republica //$dia_evangelho = date ("30/11/$ano_atual"); // 30/11 - Dia do Evangélico (Distrital) $natal = date ("25/12/$ano_atual"); // 25/12 - Natal //Inicio da Parte Fisica da Lista de frequencia ?> <? for($z=1;$z<=$time_left;$z++){ //EVITANDO ERROS 1 É != DE 01 if($z==1) $z="01"; if($z==2) $z="02"; if($z==3) $z="03"; if($z==4) $z="04"; if($z==5) $z="05"; if($z==6) $z="06"; if($z==7) $z="07"; if($z==8) $z="08"; if($z==9) $z="09"; //Recebe o Dia da Semana em Nome (Saturday or Sunday) $semana_nomeada[$z] = date("l", mktime(0, 0, 0, $mes, $z, $ano_atual)); $bgcolor[$z]="FFFFFF"; $aterisco[$z]=" "; //Recebe o Dia mes e Ano em que estamos $sendo_agora = date ("$z/$mes/$ano_atual"); //Ver se é sabao ou domingo if($semana_nomeada[$z]=="Saturday"){ $sabado_domingo = "<b>Sábado</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($semana_nomeada[$z]=="Sunday"){ $sabado_domingo = "<b>Domingo</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } else $sabado_domingo = " "; //Ver se é Feriado if($confraternizacao == $sendo_agora){ $sabado_domingo = "<b>Feriado - Confratenização</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($carnaval == $sendo_agora){ $sabado_domingo = "<b>Feriado - Carnaval</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($sexta_santa == $sendo_agora){ $sabado_domingo = "<b>Feriado - Sexta-Feira Santa</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($corpus == $sendo_agora){ $sabado_domingo = "<b>Feriado - Corpus Christi</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($tiradentes == $sendo_agora){ $sabado_domingo = "<b>Feriado - Tiradentes</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($trabalhador == $sendo_agora){ $sabado_domingo = "<b>Feriado - Dia do Trabalhador</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($independencia == $sendo_agora){ $sabado_domingo = "<b>Feriado - Independência</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($nsaparecida == $sendo_agora){ $sabado_domingo = "<b>Feriado - N. S. Aparecida</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($finados == $sendo_agora){ $sabado_domingo = "<b>Feriado - Dia de Finados</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($replublica == $sendo_agora){ $sabado_domingo = "<b>Feriado - Procl. da Rep</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($dia_evangelho == $sendo_agora){ $sabado_domingo = "<b>Fer. Dist. - Dia do Evangelho</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } elseif($natal == $sendo_agora){ $sabado_domingo = "<b>Feriado - Natal</b>"; $bgcolor[$z]="CCCCCC"; $aterisco[$z]="**********"; } //Recebe os Feriados echo"<tr> <td bgcolor=\"#$bgcolor[$z]\"><div align=\"center\"><center>$z</center></div></td> <td bordercolor=\"#000000\" bgcolor=\"#$bgcolor[$z]\"><center>$aterisco[$z]</center></td> <td bgcolor=\"#$bgcolor[$z]\"><center>$aterisco[$z]</center></td> <td bgcolor=\"#$bgcolor[$z]\"><center>$sabado_domingo</center></td> <td bgcolor=\"#$bgcolor[$z]\"><center>$aterisco[$z]</center></td> <td bgcolor=\"#$bgcolor[$z]\"><center>$aterisco[$z]</center></td> </tr>" ; } ?> </tr> </table> <table width="97%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="90%"><font size="2">Somatório de ausências, atrasos e saídas antecipadas não justificadas: _____</font></td> <td width="10%"> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Data: ____/____/____</td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> </td> <td> </td> </tr> </table> <table width="97%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="48%"><div align="center">______________________________________________</div></td> <td width="52%"><div align="center"> ____________________________</div></td> </tr> <tr> <td><div align="center"><?=$nome?></div></td> <td> <div align="center">Visto da Chefia Imediata</div></td> </tr> <tr> <td> </td> <td><div align="center"><font size="2">CARIMBO</font></div></td> </tr> </table> <p><font size="2"></font></p> </body> </html>
Monitoramento simples de servidores [versão 1.0] (corrigido)
Monitoramento de Temperatura do Servidor
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (14)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)