]> git.llucax.com Git - mecon/meconlib.git/blobdiff - lib/MECON/NovedadesDia.php
- Correccion de bugs
[mecon/meconlib.git] / lib / MECON / NovedadesDia.php
index 05cf08b4c93fc4efa98b922dc620d5d923002902..e652584a052ba17fdb28a39976733a67adf754ef 100644 (file)
@@ -28,140 +28,159 @@ require_once 'MECON/Tiempo/Hora.php';
  * @version $Rev: 380 $
  * @author  Gonzalo Merayo <gmeray@mecon.gov.ar>
  */
  * @version $Rev: 380 $
  * @author  Gonzalo Merayo <gmeray@mecon.gov.ar>
  */
-class NovedadesDia {
-
-  var $novedades = array();
-
-  var $licencia = null;
-
-  var $agente = null;
-
-  var $fecha = null;
-
-  var $_db = null;
-
-
-  function NovedadesDia($agente, $fecha)
-  {
-    #validar el tipo de $fecha
-    $this->agente = $agente;
-    $this->fecha = $fecha;
-    
-    #Ver de donde sacar esto bonito...
-    $dsn = "mysql://intranet:intranet@localhost/novedades";
-    $this->_db = DB::connect( $dsn , true);
-    if(DB::isError($this->_db))
-      die($this->_db->getMessage());
-    #Carga las novedades del agente/fecha en la lista de novedades
-    $this->BuscarLicencia();
-    $this->BuscarNovedadesTemporales();
-    $this->BuscarNovedadDiaria();
-  }
-
-  function enComicion()
-  {
-    foreach($this->novedades as $nov)
-      if($nov->codigo == 'com')
-        return true;
-    return false;
-  }
-
-  function esFranco()
-  {
-    foreach($this->novedades as $nov)
-      if($nov->codigo == 'Fran')
-        return true;
-    return false;
-  }
-
-  function debioVenir()
-  {
-    $ret = true;
-    echo $this->fecha->format("%Y%m%d")."=>".count($this->novedades)."\n";
-    foreach($this->novedades as $novedad)
-    {
-      if(!( preg_match("/^10/", $novedad->codigo)
-         or $novedad->codigo == 'Pat'
-         or $novedad->codigo == 'Adde'
-         or $novedad->codigo == 'Aden'
-         or $novedad->codigo == 'Ato'
-         or $novedad->codigo == 'Atp'))
-         $ret = false;         
+class MECON_NovedadesDia {
+
+    var $novedades = array();
+
+    var $agente = null;
+
+    var $fecha = null;
+
+    var $_db = null;
+
+
+    function MECON_NovedadesDia(&$db, $agente, $fecha) {
+#validar el tipo de $fecha
+        $this->agente = $agente;
+        $this->fecha = $fecha;
+
+#Ver de donde sacar esto bonito...
+
+        $this->_db = $db;
+        if(DB::isError($this->_db))
+            trigger_error($this->_db->getMessage(), E_USER_ERROR);
+#Carga las novedades del agente/fecha en la lista de novedades
+
+        $this->BuscarLicencia();
+        $this->BuscarNovedadesTemporales();
+        $this->BuscarNovedadDiaria();
+    }
+
+    function deLicencia() {
+        $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');
+        $anti_licencias = array('Interr/13a','Interr/9');
+        foreach($this->novedades as $nov) {
+            if(in_array($nov->codigo, $anti_licencias))
+                return false;
+            if(in_array($nov->codigo, $licencias))
+                return true;
+        }
+        return false;
     }
     }
-    return $ret;
-  }
-
-  function getAtos()
-  {
-    $atos = array();
-    foreach($this->novedades as $nov)
-      if($nov->codigo == 'ato')
-        array_push($atos, $nov);
-    return $atos;
-  }
-
-  function BuscarLicencia()
-  {
-    $fecha = $this->fecha->format("%Y%m%d");
-    $query = "SELECT codnov
-              FROM web018
-              WHERE docagente = $this->agente
-              AND diadesde <= $fecha
-              AND diahasta >= $fecha";
-    $result = $this->_db->query($query);
-    if(DB::isError($result))
-      die($result->getMessage());
-    while($r = $result->fetchRow())
-    {
-      $novedad = new Novedad();
-      $novedad->codigo = $r[0];
-      array_push($this->novedades, $novedad);
-      $this->licencia = $r[0];
+
+    function enComicion() {
+        foreach($this->novedades as $nov)
+        if($nov->codigo == 'com')
+            return true;
+        return false;
+    }
+
+    function esFranco() {
+        foreach($this->novedades as $nov)
+        if($nov->codigo == 'Fran')
+            return true;
+        return false;
     }
     }
-  }
-  
-  function BuscarNovedadesTemporales()
-  {
-    $fecha = $this->fecha->getYear()."-".
-             $this->fecha->getMonth()."-".
-             $this->fecha->getDay();
-    $query = "SELECT novedad, desde, hasta
-              FROM parciales
-              WHERE fecha = '$fecha'
-              AND  nrodoc = $this->agente";
-    $result = $this->_db->query($query);
-    if(DB::isError($result))
-      die($result->getMessage());
-    while($r = $result->fetchRow())
-    {
-      $novedad = new Novedad();
-      $novedad->codigo = $r[0];
-      $novedad->intervalo = new Intervalo(new Hora($r[1]), new Hora($r[2]));
-      array_push($this->novedades, $novedad);
+
+    function debioVenir() {
+        $ret = true;
+        foreach($this->novedades as $novedad) {
+            if(!($novedad->codigo == 'adde'
+                    or $novedad->codigo == 'aden'
+                    or $novedad->codigo == 'adden'
+                    or $novedad->codigo == 'ahp'
+                    or $novedad->codigo == 'anul'
+                    or $novedad->codigo == 'ato'
+                    or $novedad->codigo == 'atp'
+                    or $novedad->codigo == 'interr/13a'
+                    or $novedad->codigo == 'interr/9'
+                    or $novedad->codigo == 'interrup'
+                    or $novedad->codigo == 'lta'
+                    or $novedad->codigo == 'sinnov'
+                    or $novedad->codigo == 'tsj'
+                    or $novedad->codigo == '10a/c'
+                    or $novedad->codigo == '10b'
+                    or $novedad->codigo == '10e'
+                    or $novedad->codigo == '15a'
+                    or $novedad->codigo == '15b'
+                    ))
+                $ret = false;
+        }
+        return $ret;
+    }
+
+    function getAtos() {
+        $atos = array();
+        foreach($this->novedades as $nov)
+        if($nov->codigo == 'ato')
+            array_push($atos, $nov);
+        return $atos;
+    }
+
+    function BuscarLicencia() {
+        $fecha = $this->fecha->format("%Y%m%d");
+        $query = "SELECT codnov,descripcion
+                 FROM novedades.web018,novedades.webnov
+                 WHERE docagente = $this->agente
+                 AND diadesde <= $fecha
+                 AND diahasta >= $fecha
+                 AND codnov = codigo";
+        $result = $this->_db->query($query);
+        if(DB::isError($result))
+            trigger_error($result->getMessage(), E_USER_ERROR);
+        while($r = $result->fetchRow()) {
+            $novedad = new MECON_Novedad();
+            $novedad->codigo = $r[0];
+            $novedad->descripcion = $r[1];
+            array_push($this->novedades, $novedad);
+        }
+    }
+
+    function BuscarNovedadesTemporales() {
+        $fecha = $this->fecha->getYear()."-".
+                 $this->fecha->getMonth()."-".
+                 $this->fecha->getDay();
+        $query = "SELECT novedad, desde, hasta, descripcion
+                 FROM novedades.parciales,novedades.webnov
+                 WHERE fecha = '$fecha'
+                 AND  nrodoc = $this->agente
+                 AND novedad = codigo";
+        $result = $this->_db->query($query);
+        if(DB::isError($result))
+            trigger_error($result->getMessage(), E_USER_ERROR);
+        while($r = $result->fetchRow()) {
+            $novedad = new MECON_Novedad();
+            $novedad->codigo = $r[0];
+            $novedad->descripcion = $r[3];
+            $novedad->intervalo = new MECON_Tiempo_Intervalo(new MECON_Tiempo_Hora($r[1]), new MECON_Tiempo_Hora($r[2]));
+            array_push($this->novedades, $novedad);
+        }
+
     }
 
     }
 
-  }
-
-  function BuscarNovedadDiaria()
-  {
-    $mes = $this->fecha->getMonth();
-    $dia = $this->fecha->getDay() + 0; //el +0 hace que tome al dia como numero
-                                       //y no le agregue un 0 si es < que 10
-    $ano = $this->fecha->getYear();
-    $query = "SELECT novedad 
-              FROM web020
-              WHERE anio = $ano
-              AND   mes  = $mes
-              AND nrodoc = $this->agente
-              AND dia$dia = 1";
-    $result = $this->_db->query($query);
-    if($c = $result->fetchRow())
-    {
-      $codigo = $c[0];
-      $novedad = new Novedad();
-      $novedad->codigo = $codigo;
-      array_push($this->novedades, $novedad);
+    function BuscarNovedadDiaria() {
+        $mes = $this->fecha->getMonth();
+        $dia = $this->fecha->getDay() + 0; //el +0 hace que tome al dia como numero
+        //y no le agregue un 0 si es < que 10
+        $ano = $this->fecha->getYear();
+        $query = "SELECT novedad,descripcion
+                 FROM novedades.web020,novedades.webnov
+                 WHERE anio = $ano
+                 AND   mes  = $mes
+                 AND nrodoc = $this->agente
+                 AND dia$dia = 1
+                 AND novedad = codigo";
+        $result = $this->_db->query($query);
+        if(DB::isError($result))
+            trigger_error($result->getMessage(), E_USER_ERROR);
+        if($c = $result->fetchRow()) {
+            $codigo = $c[0];
+                       $descripcion = $c[1];
+            $novedad = new MECON_Novedad();
+            $novedad->codigo = $codigo;
+            $novedad->descripcion = $descripcion;
+            array_push($this->novedades, $novedad);
+        }
     }
     }
-  }
 
 }
 
 }