]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/NovedadesDia.php
BugFix en Marco
[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 NovedadesDia {
32
33   var $novedades = array();
34
35   var $licencia = null;
36
37   var $agente = null;
38
39   var $fecha = null;
40
41   var $_db = null;
42
43
44   function NovedadesDia($agente, $fecha)
45   {
46     #validar el tipo de $fecha
47     $this->agente = $agente;
48     $this->fecha = $fecha;
49     
50     #Ver de donde sacar esto bonito...
51     $dsn = "mysql://intranet:intranet@localhost/novedades";
52     $this->_db = DB::connect( $dsn , true);
53     if(DB::isError($this->_db))
54       die($this->_db->getMessage());
55     #Carga las novedades del agente/fecha en la lista de novedades
56     $this->BuscarLicencia();
57     $this->BuscarNovedadesTemporales();
58     $this->BuscarNovedadDiaria();
59   }
60
61   function enComicion()
62   {
63     foreach($this->novedades as $nov)
64       if($nov->codigo == 'com')
65         return true;
66     return false;
67   }
68
69   function esFranco()
70   {
71     foreach($this->novedades as $nov)
72       if($nov->codigo == 'Fran')
73         return true;
74     return false;
75   }
76
77   function debioVenir()
78   {
79     $ret = true;
80     echo $this->fecha->format("%Y%m%d")."=>".count($this->novedades)."\n";
81     foreach($this->novedades as $novedad)
82     {
83       if(!( preg_match("/^10/", $novedad->codigo)
84          or $novedad->codigo == 'Pat'
85          or $novedad->codigo == 'Adde'
86          or $novedad->codigo == 'Aden'
87          or $novedad->codigo == 'Ato'
88          or $novedad->codigo == 'Atp'))
89          $ret = false;         
90     }
91     return $ret;
92   }
93
94   function getAtos()
95   {
96     $atos = array();
97     foreach($this->novedades as $nov)
98       if($nov->codigo == 'ato')
99         array_push($atos, $nov);
100     return $atos;
101   }
102
103   function BuscarLicencia()
104   {
105     $fecha = $this->fecha->format("%Y%m%d");
106     $query = "SELECT codnov
107               FROM web018
108               WHERE docagente = $this->agente
109               AND diadesde <= $fecha
110               AND diahasta >= $fecha";
111     $result = $this->_db->query($query);
112     if(DB::isError($result))
113       die($result->getMessage());
114     while($r = $result->fetchRow())
115     {
116       $novedad = new Novedad();
117       $novedad->codigo = $r[0];
118       array_push($this->novedades, $novedad);
119       $this->licencia = $r[0];
120     }
121   }
122   
123   function BuscarNovedadesTemporales()
124   {
125     $fecha = $this->fecha->getYear()."-".
126              $this->fecha->getMonth()."-".
127              $this->fecha->getDay();
128     $query = "SELECT novedad, desde, hasta
129               FROM parciales
130               WHERE fecha = '$fecha'
131               AND  nrodoc = $this->agente";
132     $result = $this->_db->query($query);
133     if(DB::isError($result))
134       die($result->getMessage());
135     while($r = $result->fetchRow())
136     {
137       $novedad = new Novedad();
138       $novedad->codigo = $r[0];
139       $novedad->intervalo = new Intervalo(new Hora($r[1]), new Hora($r[2]));
140       array_push($this->novedades, $novedad);
141     }
142
143   }
144
145   function BuscarNovedadDiaria()
146   {
147     $mes = $this->fecha->getMonth();
148     $dia = $this->fecha->getDay() + 0; //el +0 hace que tome al dia como numero
149                                        //y no le agregue un 0 si es < que 10
150     $ano = $this->fecha->getYear();
151     $query = "SELECT novedad 
152               FROM web020
153               WHERE anio = $ano
154               AND   mes  = $mes
155               AND nrodoc = $this->agente
156               AND dia$dia = 1";
157     $result = $this->_db->query($query);
158     if($c = $result->fetchRow())
159     {
160       $codigo = $c[0];
161       $novedad = new Novedad();
162       $novedad->codigo = $codigo;
163       array_push($this->novedades, $novedad);
164     }
165   }
166
167 }