Folha de Ponto, com datas móveis como Carnaval Sexta-Feira Santa e Corpus Christi
Publicado por Herson Rodrigues 04/09/2007
[ Hits: 14.693 ]
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 de processos - TOP
Cria gráficos para monitoramento de consumo de CPU e Memória a partir de arquivos [Atualização].
Mostra a quantidade dos dias da semana em intervalo
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático
Como impedir exclusão de arquivos por outros usuários no (Linux)
Alguém executou um rm e quase mata a Pixar! (6)
Formas seguras de instalar Debian Sid (9)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (12)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (5)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (6)









