]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/NovedadesDia.php
6a9aeef63282cb2e2857a2e3537e3d353d4edad8
[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@localhost/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 == 'Ato'
92                     or $novedad->codigo == 'Atp'))
93                 $ret = false;
94         }
95         return $ret;
96     }
97
98     function getAtos() {
99         $atos = array();
100         foreach($this->novedades as $nov)
101         if($nov->codigo == 'ato')
102             array_push($atos, $nov);
103         return $atos;
104     }
105
106     function BuscarLicencia() {
107         $fecha = $this->fecha->format("%Y%m%d");
108         $query = "SELECT codnov
109                  FROM web018
110                  WHERE docagente = $this->agente
111                  AND diadesde <= $fecha
112                  AND diahasta >= $fecha";
113         $result = $this->_db->query($query);
114         if(DB::isError($result))
115             die($result->getMessage());
116         while($r = $result->fetchRow()) {
117             $novedad = new MECON_Novedad();
118             $novedad->codigo = $r[0];
119             array_push($this->novedades, $novedad);
120         }
121     }
122
123     function BuscarNovedadesTemporales() {
124         $fecha = $this->fecha->getYear()."-".
125                  $this->fecha->getMonth()."-".
126                  $this->fecha->getDay();
127         $query = "SELECT novedad, desde, hasta
128                  FROM parciales
129                  WHERE fecha = '$fecha'
130                  AND  nrodoc = $this->agente";
131         $result = $this->_db->query($query);
132         if(DB::isError($result))
133             die($result->getMessage());
134         while($r = $result->fetchRow()) {
135             $novedad = new MECON_Novedad();
136             $novedad->codigo = $r[0];
137             $novedad->intervalo = new MECON_Tiempo_Intervalo(new MECON_Tiempo_Hora($r[1]), new MECON_Tiempo_Hora($r[2]));
138             array_push($this->novedades, $novedad);
139         }
140
141     }
142
143     function BuscarNovedadDiaria() {
144         $mes = $this->fecha->getMonth();
145         $dia = $this->fecha->getDay() + 0; //el +0 hace que tome al dia como numero
146         //y no le agregue un 0 si es < que 10
147         $ano = $this->fecha->getYear();
148         $query = "SELECT novedad
149                  FROM web020
150                  WHERE anio = $ano
151                  AND   mes  = $mes
152                  AND nrodoc = $this->agente
153                  AND dia$dia = 1";
154         $result = $this->_db->query($query);
155         if($c = $result->fetchRow()) {
156             $codigo = $c[0];
157             $novedad = new MECON_Novedad();
158             $novedad->codigo = $codigo;
159             array_push($this->novedades, $novedad);
160         }
161     }
162
163 }