]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/NovedadesDia.php
Sigo buscando el bug
[mecon/meconlib.git] / lib / MECON / NovedadesDia.php
1 <?php
2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // |                          HORAS EXTRA                               |
5 // +--------------------------------------------------------------------+
6 // |    Sistema de Horas Extra - Ministerio de Economía - Argentina     |
7 // +--------------------------------------------------------------------+
8 // | Creado: lun abr 22 16:05:33 ART 2002                               |
9 // | Autor:  Gonzalo Merayo <gmeray@mecon.gov.ar>                    |
10 // +--------------------------------------------------------------------+
11 //
12 // $URL: http://portal.mecon.ar/svn/he/tronco/src/lib/he/HE/NovedadesDia.php $
13 // $Rev: 380 $
14 // $Date: 2003-05-08 18:40:47 -0300 (Thu, 08 May 2003) $
15 // $Author: gmeray $
16 //
17
18 require_once 'DB.php';
19 require_once 'Date.php';
20 require_once 'MECON/Novedad.php';
21 require_once 'MECON/Tiempo/Hora.php';
22
23 /**
24  * Representa un Intervalo entre 2 horas del mismo dia
25  *
26  * @package HE
27  * @abstract
28  * @version $Rev: 380 $
29  * @author  Gonzalo Merayo <gmeray@mecon.gov.ar>
30  */
31 class MECON_NovedadesDia {
32
33     var $novedades = array();
34
35     var $agente = null;
36
37     var $fecha = null;
38
39     var $_db = null;
40
41
42     function MECON_NovedadesDia($agente, $fecha) {
43 #validar el tipo de $fecha
44         $this->agente = $agente;
45         $this->fecha = $fecha;
46
47 #Ver de donde sacar esto bonito...
48
49         $dsn = "mysql://intranet:intranet@intranet-db.mecon.ar/novedades";
50         $this->_db = DB::connect( $dsn , true);
51         if(DB::isError($this->_db))
52             die($this->_db->getMessage());
53 #Carga las novedades del agente/fecha en la lista de novedades
54
55         $this->BuscarLicencia();
56         $this->BuscarNovedadesTemporales();
57         $this->BuscarNovedadDiaria();
58     }
59
60     function deLicencia() {
61         $licencias = array('Adp','Asa','Fal','Fran','FES/REL','Grem','Interrup','Sus','10a','10a/d','10c','10d','10g','10h','10i','10j','10j/c','13Ia','13Ia/s','13Ia/u','13Ib','13Ic','13Id','13Id/a','13Id/h','13Ie','13Ig','13IIa','13IIb','13IIc','13IId', '13IIe','1363/97-2','14a','14b','14b1','14b2','14c','14d','14f','14g','14h','15a', '15b','15c','9');
62         $anti_licencias = array('Interr/13a','Interr/9');
63         foreach($this->novedades as $nov) {
64             if(in_array($nov->codigo, $anti_licencias))
65                 return false;
66             if(in_array($nov->codigo, $licencias))
67                 return true;
68         }
69         return false;
70     }
71
72     function enComicion() {
73         foreach($this->novedades as $nov)
74         if($nov->codigo == 'com')
75             return true;
76         return false;
77     }
78
79     function esFranco() {
80         foreach($this->novedades as $nov)
81         if($nov->codigo == 'Fran')
82             return true;
83         return false;
84     }
85
86     function debioVenir() {
87         $ret = true;
88         foreach($this->novedades as $novedad) {
89             if(!($novedad->codigo == 'adde'
90                     or $novedad->codigo == 'aden'
91                     or $novedad->codigo == 'adden'
92                     or $novedad->codigo == 'ahp'
93                     or $novedad->codigo == 'anul'
94                     or $novedad->codigo == 'ato'
95                     or $novedad->codigo == 'atp'
96                     or $novedad->codigo == 'interr/13a'
97                     or $novedad->codigo == 'interr/9'
98                     or $novedad->codigo == 'interrup'
99                     or $novedad->codigo == 'lta'
100                     or $novedad->codigo == 'sinnov'
101                     or $novedad->codigo == 'tsj'
102                     or $novedad->codigo == '10a/c'
103                     or $novedad->codigo == '10b'
104                     or $novedad->codigo == '10e'
105                     or $novedad->codigo == '15a'
106                     or $novedad->codigo == '15b'
107                     ))
108                 $ret = false;
109         }
110         return $ret;
111     }
112
113     function getAtos() {
114         $atos = array();
115         foreach($this->novedades as $nov)
116         if($nov->codigo == 'ato')
117             array_push($atos, $nov);
118         return $atos;
119     }
120
121     function BuscarLicencia() {
122         $fecha = $this->fecha->format("%Y%m%d");
123         $query = "SELECT codnov,descripcion
124                  FROM web018,webnov
125                  WHERE docagente = $this->agente
126                  AND diadesde <= $fecha
127                  AND diahasta >= $fecha
128                  AND codnov = codigo";
129         $result = $this->_db->query($query);
130         if(DB::isError($result))
131             die($result->getMessage());
132         while($r = $result->fetchRow()) {
133             $novedad = new MECON_Novedad();
134             $novedad->codigo = $r[0];
135             $novedad->descripcion = $r[1];
136             array_push($this->novedades, $novedad);
137         }
138     }
139
140     function BuscarNovedadesTemporales() {
141         $fecha = $this->fecha->getYear()."-".
142                  $this->fecha->getMonth()."-".
143                  $this->fecha->getDay();
144         $query = "SELECT novedad, desde, hasta, descripcion
145                  FROM parciales,webnov
146                  WHERE fecha = '$fecha'
147                  AND  nrodoc = $this->agente
148                  AND novedad = codigo";
149         $result = $this->_db->query($query);
150         if(DB::isError($result))
151             die($result->getMessage());
152         while($r = $result->fetchRow()) {
153             $novedad = new MECON_Novedad();
154             $novedad->codigo = $r[0];
155             $novedad->descripcion = $r[3];
156             $novedad->intervalo = new MECON_Tiempo_Intervalo(new MECON_Tiempo_Hora($r[1]), new MECON_Tiempo_Hora($r[2]));
157             array_push($this->novedades, $novedad);
158         }
159
160     }
161
162     function BuscarNovedadDiaria() {
163         $mes = $this->fecha->getMonth();
164         $dia = $this->fecha->getDay() + 0; //el +0 hace que tome al dia como numero
165         //y no le agregue un 0 si es < que 10
166         $ano = $this->fecha->getYear();
167         $query = "SELECT novedad,descripcion
168                  FROM web020,webnov
169                  WHERE anio = $ano
170                  AND   mes  = $mes
171                  AND nrodoc = $this->agente
172                  AND dia$dia = 1
173                  AND novedad = codigo";
174         $result = $this->_db->query($query);
175         if(DB::isError($result))
176             die($result->getMessage());
177         if($c = $result->fetchRow()) {
178             $codigo = $c[0];
179                         $descripcion = $c[1];
180             $novedad = new MECON_Novedad();
181             $novedad->codigo = $codigo;
182             $novedad->descripcion = $descripcion;
183             array_push($this->novedades, $novedad);
184         }
185     }
186
187 }