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

Revision 903, 7.0 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
135# Feriados regionais ...
136# $this->prepara_feriados_regionais();
137}
138//************************************************************************************************
139function pega_feriados_do_mes()
140{
141$this->prepara_feriados();   
142return $this->feriados;
143}
144
145}
146// ************************************************************************************************
147// ****************************************  Fim da CLASSE  ***************************************
148// ************************************************************************************************
149//
150
151// INICIO ......
152// ************************************************************************************************
153//  Monta o arquivo de feriados de um determinado periodo
154// ************************************************************************************************
155
156$ano=date('Y');  // Ano corrente
157$dados='';
158$pAno = $ano-6; // Ano inicial   
159while ($pAno< $ano+20)
160{
161        $pMes = 1;
162        while ($pMes<13)
163        {
164                //$a = new calendario($pAno,$pMes,false);
165                $a = new calendario($pAno,$pMes);
166                $feriados = $a->pega_feriados_do_mes();
167                //  GERA O Arquivo de feriados
168                if($feriados)
169                {               
170                        // Ppercorre feriados...       
171                        foreach ($feriados  as $dia => $nome)
172                        { 
173                                if($nome)
174                                {
175                                        $dados .= "BR\t".$nome."\t".$dia."\t".$pMes."\t".$pAno."\t0\t0\n";     
176                                }
177                        }                 
178                }                                             
179                unset($feriados);
180                $pMes = $pMes + 1;
181        }
182        $pAno = $pAno + 1;
183 }
184//Grava O RESULTADO 
185//echo $dados;         
186$h = fopen ("holidays.BR.csv", "wb");
187fwrite($h,"$dados");
188echo '<br><b>Mover o arquivo gerado(holidays.BR.csv) para /var/www/expresso/calendar/egroupware</b><br>';
189echo '<br> O Arquivo é gerado na pasta em que este script foi colocado.<br>O usuário com o qual o script é executado deve ter permissao de escrita na pasta.';
190echo '<br><br><br>
191 &nbsp;&nbsp;&nbsp;&nbsp;Logado como "administrador":<br><br>
192
1931 - Clique no icone "administrador", no painel superior.<br>
1942 - No bloco "Agenda de Eventos", clique em "Configuração do servidor".<br>
1953 - Selecione "Sim" em "Deseja carregar automaticamente arquivos de feriados do Calendário dinâmicamente? " .<br>
1964 - Selecione "localhost" em "Local de onde carregar automaticamente:".<br>
1975 - Clique em "Salvar".<br>
1986 - Clique no icone "administrador", no painel superior.<br>
1997 - No bloco "Agenda de Eventos", clique em "Manutenção de feriados do Calendário"<br>
2008 - Na linha relativa ao pais "BR", clique em "remover". Confirme a remoção.<br><br>
201
202&nbsp;&nbsp;&nbsp;&nbsp;Pronto. <br>
203&nbsp;&nbsp;&nbsp;&nbsp;Na próxima vez que o calendário for consultado o novo arquivo de feriados vai ser carregado no bco.'
204?>
Note: See TracBrowser for help on using the repository browser.