source: companies/serpro/doc-expressolivre/scripts/gera_arquivo_com_feriados_para_o_expresso.php @ 903

Revision 903, 6.7 KB checked in by niltonneto, 15 years ago (diff)

Importacao inicial do Expresso do Serpro

Line 
1<?php
2 // *************************************************************************************************
3// **************************************** Inicio da CLASSE  ***************************************
4// *************************************************************************************************
5class Calendario
6{
7var $ano;
8var $ano_anterior;
9var $ano_proximo;
10var $mes;
11var $mes_anterior;
12var $mes_proximo;
13var $hoje;
14var $dia_na_semana;
15var $dias_no_mes;
16var $feriados=array();
17var $nome_mes = array();
18
19//************************************************************************************************
20function Calendario($ano,$mes)
21{
22if(!$ano){ $ano=date('Y');}
23if(!$mes){ $mes=date('n');}
24$this->ano = $ano;
25$this->mes = $mes;
26$this->hoje = date('j');
27$this->nome_mes[1]="Janeiro";
28$this->nome_mes[2]="Fevereiro";
29$this->nome_mes[3]="Março";
30$this->nome_mes[4]="Abril";
31$this->nome_mes[5]="Maio";
32$this->nome_mes[6]="Junho";
33$this->nome_mes[7]="Julho";
34$this->nome_mes[8]="Agosto";
35$this->nome_mes[9]="Setembro";
36$this->nome_mes[10]="Outubro";
37$this->nome_mes[11]="Novembro";
38$this->nome_mes[12]="Dezembro";
39$this->dia_na_semana = date(w, mktime(0, 0, 0, $this->mes, 1, $this->ano));
40$this->dias_no_mes = date("t", mktime(0, 0, 0, $this->mes, 1, $this->ano));
41//$this->prepara_feriados();
42}
43//************************************************************************************************
44function prepara_feriados_regionais()
45{
46    switch ($this->mes)
47        {
48            case 2: # Nossa Senhora dos Navegantes(2 de Fev.):
49                 $this->feriados[2]='Nossa Senhora dos Navegantes';
50                 break;
51            case 9: #  I#  Revolucao Farroupilha:
52                 $this->feriados[20]='Revolucao Farroupilha';
53                 break;
54            default:
55                 break;                         
56        }
57}
58//************************************************************************************************
59function prepara_feriados_nacionais()
60{
61  $a= $this->ano % 19;
62  $b= $this->ano % 4;
63  $c= $this->ano % 7;
64  $aux1=(19 * $a) + 24;
65  $d= $aux1 % 30;
66  $aux1= (2 * $b) + (4 * $c) + (6 * $d) + 5;
67  $e= $aux1 % 7;
68  $dia_pascoa= 22 + $d + $e;
69  $mes_pascoa= 3;
70  if($dia_pascoa > 31)
71     {
72          $mes_pascoa = 4;
73          $dia_pascoa = $dia_pascoa - 31;
74          if($dia_pascoa > 25)
75             {
76                  $dia_pascoa= $dia_pascoa - 7;
77             }
78      }
79  $pascoa =  strtotime("$this->ano/$mes_pascoa/$dia_pascoa");
80  $carnaval = strtotime("$this->ano/$mes_pascoa/$dia_pascoa -47 days");
81  $sexta_santa = strtotime("$this->ano/$mes_pascoa/$dia_pascoa -2 days");
82  $corpus = strtotime("$this->ano/$mes_pascoa/$dia_pascoa +60 days");
83   if($this->mes == strftime("%m",$pascoa))
84     {
85        $this->feriados[strftime("%d",$pascoa)*1] = 'Pascoa';
86        $this->feriados[strftime("%d",$sexta_santa)*1] ='Sexta-feira Santa';
87     }
88  if($this->mes == strftime("%m",$carnaval))
89     {
90        $this->feriados[(strftime("%d",$carnaval)*1)-1] = 'Carnaval';    // segunda-feira de carnaval
91        $this->feriados[strftime("%d",$carnaval)*1] = 'Carnaval';          // terca-feira de carnaval
92     }     
93  if($this->mes == strftime("%m",$corpus))
94     {
95        $this->feriados[strftime("%d",$corpus)*1] = 'Corpus Cristi';
96     }         
97    switch ($this->mes)
98        {
99            case 1: # Primeiro de Janeiro:
100                 $this->feriados[1]='Confraternização Universal';
101                 break;
102            case 4: # Tiradentes:
103                 $this->feriados[21]='Tiradentes';
104                 break;
105            case 5: #  Dia do trabalhador:
106                 $this->feriados[1]='Dia do Trabalho';
107                 break;
108            case 9: #  Indepndencia do Brasil:
109                 $this->feriados[7]='Dia da Independência';
110                 break;
111            case 10: #  Nossa Senhora Aparecida:
112                 $this->feriados[12]='Dia de Nossa Senhora Aparecida';
113                 break;
114            case 11: #  Finados/ Republica:
115                 $this->feriados[2]='Finados';
116                 $this->feriados[15]='Proclamação da República';
117                 break;
118            case 12: #  Natal:
119                 $this->feriados[25]='Natal';
120                 break;         
121            default:
122                 break;                         
123        }
124}
125 //************************************************************************************************ 
126function prepara_feriados()
127{
128for($i=1;$i<$this->dias_no_mes+1;$i++)
129  {
130    $this->feriados[$i] = '';
131  }
132# Feriados nacionais ...
133$this->prepara_feriados_nacionais();
134# Feriados regionais ...
135$this->prepara_feriados_regionais();
136}
137//************************************************************************************************
138function pega_feriados_do_mes()
139{
140$this->prepara_feriados();   
141return $this->feriados;
142}
143
144}
145// ************************************************************************************************
146// ****************************************  Fim da CLASSE  ***************************************
147// ************************************************************************************************
148//
149// ************************************************************************************************
150//  Monta o arquivo de feriados de um determinado periodo
151// ************************************************************************************************
152
153$ano=date('Y');  // Ano corrente
154$dados='';
155$pAno = $ano-6; // Ano inicial   
156while ($pAno< $ano+20)
157{
158        $pMes = 1;
159        while ($pMes<13)
160        {
161                //$a = new calendario($pAno,$pMes,false);
162                $a = new calendario($pAno,$pMes);
163                $feriados = $a->pega_feriados_do_mes();
164                //  GERA O Arquivo de feriados
165                if($feriados)
166                {               
167                        // Ppercorre feriados...       
168                        foreach ($feriados  as $dia => $nome)
169                        { 
170                                if($nome)
171                                {
172                                        $dados .= "BR\t".$nome."\t".$dia."\t".$pMes."\t".$pAno."\t0\t0\n";     
173                                }
174                        }                 
175                }                                             
176                unset($feriados);
177                $pMes = $pMes + 1;
178        }
179        $pAno = $pAno + 1;
180 }
181//Grava O RESULTADO 
182//echo $dados;         
183$h = fopen ("holidays.BR.csv", "wb");
184fwrite($h,"$dados");
185echo '<br><b>Mover o arquivo gerado(holidays.BR.csv) para /var/www/expresso/calendar/egroupware</b><br>';
186echo '<br>
187Logado como "administrador":<br>
188
1891 - Clique no icone "administrador", no painel superior.<br>
1902 - No bloco "Agenda de Eventos", clique em "Manutencao de feriados do Calendario"<br>
1913 - Na linha relativa ao pais "BR", clique em "remover". Confirme a remocao.<br>
1924 - Clique no icone "administrador", no painel superior.<br>
1935 - No bloco "Administrador", clique em "Configuracao do servidor".<br>
1946 - Selecione "Sim" em "Deseja carregar automaticamente arquivos de feriados do Calendário dinâmicamente? " .<br>
1957 - Selecione "localhost" em "Local de onde carregar automaticamente:".<br>
1968 - Clique em "Salvar".<br>
197
198 Pronto. Na proxima vez que o calendario for consultado o novo arquivo de feriados sera carregado.<br>';
199 
200?>
Note: See TracBrowser for help on using the repository browser.