]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/NovedadesDia.php
BugFix.
[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(&$db, $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         $this->_db = $db;
50         if(DB::isError($this->_db))
51             trigger_error($this->_db->getMessage(), E_USER_ERROR);
52 #Carga las novedades del agente/fecha en la lista de novedades
53
54         $this->BuscarLicencia();
55         $this->BuscarNovedadesTemporales();
56         $this->BuscarNovedadDiaria();
57     }
58
59     function deLicencia() {
60         $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');
61         $anti_licencias = array('Interr/13a','Interr/9');
62         foreach($this->novedades as $nov) {
63             if(in_array($nov->codigo, $anti_licencias))
64                 return false;
65             if(in_array($nov->codigo, $licencias))
66                 return true;
67         }
68         return false;
69     }
70
71     function enComicion() {
72         foreach($this->novedades as $nov)
73         if($nov->codigo == 'com')
74             return true;
75         return false;
76     }
77
78     function esFranco() {
79         foreach($this->novedades as $nov)
80         if($nov->codigo == 'Fran')
81             return true;
82         return false;
83     }
84
85     function debioVenir() {
86         $ret = true;
87         foreach($this->novedades as $novedad) {
88             if(!($novedad->codigo == 'adde'
89                     or $novedad->codigo == 'aden'
90                     or $novedad->codigo == 'adden'
91                     or $novedad->codigo == 'ahp'
92                     or $novedad->codigo == 'anul'
93                     or $novedad->codigo == 'ato'
94                     or $novedad->codigo == 'atp'
95                     or $novedad->codigo == 'interr/13a'
96                     or $novedad->codigo == 'interr/9'
97                     or $novedad->codigo == 'interrup'
98                     or $novedad->codigo == 'lta'
99                     or $novedad->codigo == 'sinnov'
100                     or $novedad->codigo == 'tsj'
101                     or $novedad->codigo == '10a/c'
102                     or $novedad->codigo == '10b'
103                     or $novedad->codigo == '10e'
104                     or $novedad->codigo == '15a'
105                     or $novedad->codigo == '15b'
106                     ))
107                 $ret = false;
108         }
109         return $ret;
110     }
111
112     function getAtos() {
113         $atos = array();
114         foreach($this->novedades as $nov)
115         if($nov->codigo == 'ato')
116             array_push($atos, $nov);
117         return $atos;
118     }
119
120     function BuscarLicencia() {
121         $fecha = $this->fecha->format("%Y%m%d");
122         $query = "SELECT codnov,descripcion
123                  FROM novedades.web018,novedades.webnov
124                  WHERE docagente = $this->agente
125                  AND diadesde <= $fecha
126                  AND diahasta >= $fecha
127                  AND codnov = codigo";
128         $result = $this->_db->query($query);
129         if(DB::isError($result))
130             trigger_error($result->getMessage(), E_USER_ERROR);
131         while($r = $result->fetchRow()) {
132             $novedad = new MECON_Novedad();
133             $novedad->codigo = $r[0];
134             $novedad->descripcion = $r[1];
135             array_push($this->novedades, $novedad);
136         }
137     }
138
139     function BuscarNovedadesTemporales() {
140         $fecha = $this->fecha->getYear()."-".
141                  $this->fecha->getMonth()."-".
142                  $this->fecha->getDay();
143         $query = "SELECT novedad, desde, hasta, descripcion
144                  FROM novedades.parciales,novedades.webnov
145                  WHERE fecha = '$fecha'
146                  AND  nrodoc = $this->agente
147                  AND novedad = codigo";
148         $result = $this->_db->query($query);
149         if(DB::isError($result))
150             trigger_error($result->getMessage(), E_USER_ERROR);
151         while($r = $result->fetchRow()) {
152             $novedad = new MECON_Novedad();
153             $novedad->codigo = $r[0];
154             $novedad->descripcion = $r[3];
155             $novedad->intervalo = new MECON_Tiempo_Intervalo(new MECON_Tiempo_Hora($r[1]), new MECON_Tiempo_Hora($r[2]));
156             array_push($this->novedades, $novedad);
157         }
158
159     }
160
161     function BuscarNovedadDiaria() {
162         $mes = $this->fecha->getMonth();
163         $dia = $this->fecha->getDay() + 0; //el +0 hace que tome al dia como numero
164         //y no le agregue un 0 si es < que 10
165         $ano = $this->fecha->getYear();
166         $query = "SELECT novedad,descripcion
167                  FROM novedades.web020,novedades.webnov
168                  WHERE anio = $ano
169                  AND   mes  = $mes
170                  AND nrodoc = $this->agente
171                  AND dia$dia = 1
172                  AND novedad = codigo";
173         $result = $this->_db->query($query);
174         if(DB::isError($result))
175             trigger_error($result->getMessage(), E_USER_ERROR);
176         if($c = $result->fetchRow()) {
177             $codigo = $c[0];
178                         $descripcion = $c[1];
179             $novedad = new MECON_Novedad();
180             $novedad->codigo = $codigo;
181             $novedad->descripcion = $descripcion;
182             array_push($this->novedades, $novedad);
183         }
184     }
185
186 }