]> git.llucax.com Git - mecon/yatta.git/commitdiff
Agrego un caso de prueba.
authorLeandro Lucarella <llucax@gmail.com>
Thu, 15 Apr 2004 19:06:16 +0000 (19:06 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Thu, 15 Apr 2004 19:06:16 +0000 (19:06 +0000)
test/casos/caso_3_protocolizacion.php [new file with mode: 0755]
test/casos/caso_3_protocolizacion/GenerarAuditoriaCompleta.php [new file with mode: 0755]
test/casos/caso_3_protocolizacion/clase.php [new file with mode: 0755]
test/casos/caso_3_protocolizacion/constantes.php [new file with mode: 0644]
test/casos/caso_3_protocolizacion/informe_auditoria.php [new file with mode: 0755]
test/casos/caso_3_protocolizacion/tmp.php [new file with mode: 0755]

diff --git a/test/casos/caso_3_protocolizacion.php b/test/casos/caso_3_protocolizacion.php
new file mode 100755 (executable)
index 0000000..ae1e8c3
--- /dev/null
@@ -0,0 +1,68 @@
+#!/usr/bin/php4 -qC
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80 foldmethod=marker:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    YATTA!
+-------------------------------------------------------------------------------
+This file is part of YATTA!.
+
+YATTA! is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+YATTA! is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado: jue abr 15 15:36:32 ART 2004
+Autor:  Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-------------------------------------------------------------------------------
+Descripción: 
+Prueba con el script de protocolizacion que genera los pdf's.
+-----------------------------------------------------------------------------*/
+
+//{{{Require Once
+require_once './caso_3_protocolizacion/constantes.php';
+require_once 'YATTA/Controlador.php';
+require_once 'DB.php';
+require_once 'PEAR.php';
+//}}}
+
+//{{{Creo una conexion mysql al servidor
+$db =& DB::connect('mysql://intranet:intranet@unix(/var/run/mysqld/mysqld.sock)/yatta', true);
+if (DB::isError($db)) {
+     trigger_error($db->getMessage(), E_USER_ERROR);
+}
+//}}}
+
+//{{{Identificador del sistema al cual pertenecen los procesos.
+$id_sistema = PROTOCOLIZACIóN_PERM;
+//}}}
+
+//{{{Proceso con array de datos obligatorios solamente.
+$datos = array (
+            'script' =>
+            '/var/www/sistemas/yatta/test/casos/caso_3_protocolizacion/clase.php',
+            'id_sistema' => $id_sistema,
+            'descripcion' => 'Script de auditoria para protocolización.',
+            'owner' => 'mmarre@mecon',
+            'destinos' => 'msklar@mecon',
+            'resultado' => 'Informe Auditoria.zip',
+            'parametros' => array ('base'=>'normas', 'anio'=>'2003')
+        );
+$controlador =& new YATTA_Controlador;
+$res = $controlador->agregarProceso($db, $datos);
+if (PEAR::isError($res)) {
+    trigger_error('Error: ' . $res->getMessage() . "\n", E_USER_ERROR);
+}
+//}}}
+
+var_dump($res);
+?>
diff --git a/test/casos/caso_3_protocolizacion/GenerarAuditoriaCompleta.php b/test/casos/caso_3_protocolizacion/GenerarAuditoriaCompleta.php
new file mode 100755 (executable)
index 0000000..e6aef79
--- /dev/null
@@ -0,0 +1,68 @@
+#!/usr/bin/php4 -qC
+<?php 
+/* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80 foldmethod=marker:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    Protocolizacion
+-------------------------------------------------------------------------------
+This file is part of Protocolizacion.
+
+Protocolizacion is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+Protocolizacion is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado: mar nov 18 10:46:28 ART 2003
+Autor:  Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+
+//Las posibles bases son:
+// normas (para MECON)
+// normas_miplan (para MIPLAN)
+
+require_once 'DB.php';
+
+require_once 'Console/Getopt.php';
+$con  = new Console_Getopt;
+$args = $con->readPHPArgv();
+$options = $con->getopt($args, $so);
+$base = (@$options[1][0]) ? @$options[1][0] : 'normas';
+$periodo = (@$options[1][1]) ? @$options[1][1] : '2003';
+
+$db = DB::connect("mysql://intranet:intranet@intranet-db/".$base,
+        "persistent=true");
+if (DB::isError($db)) {
+    die ($db->getMessage());
+}
+
+//FIXME Hay que cambiar el nombre de la base segun el ministerio 
+$sql = 'SELECT DISTINCT id_firmante AS id_firmante '.
+        'FROM '.$base.'.firmante '.
+        'ORDER BY id_firmante';
+
+$dbh = $db->prepare($sql);
+$res = $db->execute($dbh);    
+
+while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
+    print "Procesando id_firmante: ".$re['id_firmante']."\n";
+    $txt = './informe_auditoria.php '.$periodo.' '.$re['id_firmante'] 
+        .' '. $base
+        . ' > '.$re['id_firmante'].'.pdf';
+    system ($txt);
+}
+$res->free();
+
+print "Comprimiendo archivos.\n";
+system ('find . -name "*.pdf" -print | zip '.$base.' -@');
+system ('rm *.pdf -f');
+?>
diff --git a/test/casos/caso_3_protocolizacion/clase.php b/test/casos/caso_3_protocolizacion/clase.php
new file mode 100755 (executable)
index 0000000..fece5f7
--- /dev/null
@@ -0,0 +1,217 @@
+<?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
+-----------------------------------------------------------------------------*/
+
+//{{{Require Once
+require_once 'DB.php';
+require_once 'Date.php';
+//{{{YATTA
+require_once 'YATTA/Proceso.php';
+//}}}
+//{{{MECON
+require_once 'MECON/HTML/TablaDB.php';
+require_once 'MECON/PDF/Marco.php';
+require_once 'MECON/PDF/Tabla.php';
+require_once 'MECON/PDF/Texto.php';
+require_once 'MECON/PDF/Separador.php';
+//}}}
+//}}}
+
+//{{{Funcion create_process
+function create_process() {
+    return new Caso_03_Protocolizacion;
+}
+//}}}
+
+//Clase Caso_03_Protocolizacion
+class Caso_03_Protocolizacion extends YATTA_Proceso {
+
+    /**
+     * Conexion a la base de datos.
+     */
+    var $_db = null;
+    
+    /**
+     * Obtengo los firmantes que hay en la base.
+     */
+    function _obtenerFirmantes($param) {
+        $sql =  "
+            SELECT DISTINCT id_firmante AS id_firmante
+            FROM ". $param['base'] .".firmante
+            ORDER BY id_firmante
+            ";
+        $res = $this->_db->query($sql);    
+        
+        if (PEAR::isError($res)) {
+            $this->error = $res->getMessage();
+            return;
+        }
+        
+        while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
+            $result[] = $re['id_firmante'];
+        }
+
+        return $result;
+    }
+   
+    /**
+     * Obtengo el pdf del firmante pasado por parametro
+     */
+    function _obtenerPdfFirmante($param, $id_fimante) {
+        //CONSULTAS
+        $sql_normas = '
+            SELECT n.id_norma as id_norma, n.n_norma AS n_norma, n.bis AS bis,
+            n.fecha_norma AS fecha_norma, n.tema AS tema, n.proesgral AS proesgral,
+            n.expediente AS expediente, n.pasado_a_sge AS pasado_a_sge, n.reserva AS
+            reserva,n.id_firmante AS id_firmante, n.id_usuario_ult_modif AS
+            id_usuario_ult_modif, n.n_norma2 AS n_norma2, n.depende2 AS depende2,        
+            n.n_norma3 AS n_norma3, n.depende3 AS depende3, n.id_destino as id_destino,
+            n.comentario AS comentario, n.interinato AS interinato, n.sale_por_exp AS
+            sale_por_exp, n.activo as activo, n.fecha_ult_modif AS fecha_ult_modif,
+            n.destino_nombre_breve AS destino_nombre_breve 
+            FROM '. $param['base'] .'.norma AS n 
+            WHERE n.activo = 1 AND n.id_firmante = '. $id_firmante .'
+            AND YEAR(n.fecha_norma) = '. $param['anio'] .' 
+            ORDER BY YEAR(n.fecha_norma), n.n_norma, n.bis';
+
+        $sql_firmante_activo = '
+            SELECT DISTINCT f.id_firmante AS id_firmante, f.t_doc AS t_doc,
+            f.doc AS doc, f.cargo as cargo, IFNULL(w.nombre,ff.nombre) AS nombre,
+            f.decreto AS decreto, f.fecha AS fecha, IFNULL(w.codep, ff.id_dependencia)
+            as codep, f.fecha_alta AS fecha_alta, f.fecha_baja AS fecha_baja, f.activo
+            AS activo 
+            FROM '. $base .'.firmante AS f left join novedades.web003 AS w on
+            (f.doc = w.nrodoc) left join CODEP.Dependencias as d on ( w.codep = 
+            d.codigo_actual), '. $base .'.firmante AS f2 left join '. $base .'.funcionario 
+            AS ff on (f2.doc = ff.doc) left join CODEP.Dependencias as dd on (
+            ff.id_dependencia = dd.codigo_actual) 
+            WHERE f.activo = 1 and f2.activo = 1 and f2.doc = f.doc 
+            AND f.id_firmante = '.$id_firmante; 
+
+        $sql_firmante_inactivo = '
+            SELECT DISTINCT f.id_firmante AS id_firmante, f.t_doc AS t_doc, f.doc AS
+            doc, f.cargo as cargo, IFNULL(w.nombre,ff.nombre) AS nombre, f.decreto AS
+            decreto, f.fecha AS fecha, IFNULL(w.codep, ff.id_dependencia) as codep,
+            f.fecha_alta AS fecha_alta, f.fecha_baja AS fecha_baja, f.activo AS activo
+            FROM '. $base .'.firmante AS f left join novedades.web003 AS w on (f.doc = 
+            w.nrodoc) left join CODEP.Dependencias as d on ( w.codep = d.codigo_actual),
+            '. $base .'.firmante AS f2 left join '. $base .'.funcionario AS ff on (f2.doc =
+            ff.doc) left join CODEP.Dependencias as dd on ( ff.id_dependencia =
+            dd.codigo_actual) WHERE f.activo = 0 and f2.activo = 0 and f2.doc = f.doc
+            AND f.id_firmante = '. $id_firmante;
+
+        //Obtengo los datos del firmante
+        $dbh = $this->_db->prepare($sql_firmante_activo);
+        $res = $this->_db->execute($dbh);    
+        if ($res->numRows()) {
+            $t_firmante =& new MECON_HTML_TablaDB ();
+            while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
+                $firmante = $re;
+            }    
+            $res->free();
+        }
+        else {
+            $dbh = $this->_db->prepare($sql_firmante_inactivo);
+            $res = $this->_db->execute($dbh);    
+            while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
+                $firmante = $re;
+            }    
+            $res->free();
+        }
+
+        //Obtengo las normas del firmante y las agrego a la tabla 
+        $dbh = $this->_db->prepare($sql_normas);
+        $res = $this->_db->execute($dbh);    
+        $t_normas =& new MECON_HTML_TablaDB ();
+        $t_normas->addRow(array('Res', 'Fecha', 'CNJ1', 'DEP1', 'CNJ2', 'DEP2',
+                    'Proyecto', 'Expediente', 'Tema', 'Destino', 'Int.'), 'cabecera');
+
+        while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
+            $n_norma = ($re['bis']) ? $re['n_norma'].' Bis' : $re['n_norma'];
+            $fecha =& new Date ($re['fecha_norma']);
+            $expediente = ucwords(strtolower($re['expediente']));
+            $tema = ucwords(strtolower($re['tema']));
+            $destino = ucwords(strtolower($re['destino_nombre_breve']));
+
+            $t_normas->addRow(array (
+                        $n_norma,
+                        $fecha->format("%d/%m/%Y"),
+                        $re['n_norma2'],
+                        $re['depende2'],
+                        $re['n_norma3'],
+                        $re['depende3'],
+                        $re['proesgral'],
+                        $expediente,
+                        $tema,
+                        $destino,
+                        $re['interinato']
+                        ));
+        }
+        $res->free();
+
+        $t_normas->updateColAttributes(0, 'width=8% align="center"');
+        $t_normas->updateColAttributes(1, 'width=10% align="center"');
+        $t_normas->updateColAttributes(2, 'width=10% align="center"');
+        $t_normas->updateColAttributes(3, 'width=10% align="center"');
+        $t_normas->updateColAttributes(4, 'width=10% align="center"');
+        $t_normas->updateColAttributes(5, 'width=10% align="center"');
+        $t_normas->updateColAttributes(6, 'width=20% align="center"');
+        $t_normas->updateColAttributes(7, 'width=20% align="center"');
+        $t_normas->updateColAttributes(8, 'width=25% align="center"');
+        $t_normas->updateColAttributes(9,'width=25% align="center"');
+        $t_normas->updateColAttributes(10,'width=5% align="center"');
+
+        //Genero el PDF
+        $PDF_MARCO =& new MECON_PDF_Marco ('legal', 'landscape');
+        $PDF_MARCO->seccion   = 'Registro de Resoluciones / Disposiciones ME';
+        $PDF_MARCO->subseccion = 'Direccion General de Despacho y Mesa de Entradas';
+        $PDF_MARCO->titulo    = $firmante['nombre'];
+        $PDF_MARCO->subtitulo = $firmante['cargo'];
+        $PDF_MARCO->fecha = 'Periodo: '.$param['anio'];
+        $PDF_MARCO->addContent(new MECON_PDF_Tabla ($t_normas, 'landscape'), false);
+        $PDF_TEXTO =& new MECON_PDF_Texto ('landscape');
+        $PDF_TEXTO->addContent('Director de Despacho');
+        $PDF_TEXTO->setEstilo(0,  array ('font'   => 'Helvetica-Bold', 'height' => 8,
+                    'align'  => 'right'));
+        $PDF_MARCO->addContent($PDF_TEXTO, true);
+        $PDF_MARCO->addContent(new MECON_PDF_Separador(9, true), false);
+        return $PDF_MARCO;
+    }
+    
+    /**
+     * Ejecución del script.
+     */
+    function run($param) {
+        
+        //Creo la conexion a la base de datos. 
+        $this->_db = DB::connect(
+                "mysql://intranet:intranet@intranet-db/". $base, "persistent=true");
+        if (PEAR::isError($this->_db)) {
+            $this->error = $this->_db->getMessage();
+            return;
+        }
+        
+        //Obtengo cada uno de los expedientes
+        foreach ($this->_obtenerFirmantes as $firmante) {
+            $pdfs[] =& $this->_obtenerPdfFirmante($param, $firmante);
+        }
+
+        //Genero los archivos con los PDF's.
+        $i = 0;
+        foreach ($pdfs as $pdf) {
+            //Aca deberia utilizar nombres aleatorios del sistema.
+            $fh = fopen ('/tmp/PROTOCOLIZACION_'.$i.'.pdf', 'w');
+            fwrite ($fh, $pdf->toPDF());
+        }
+
+        //Comprimo los archivos.
+        system ('find . -name "PROTOCOLIZACION_*.pdf" -print | zip
+                PROTOCOLIZACION_'.$base.' -@');
+        system ('rm *.pdf -f');
+
+        $this->error = null;
+        $this->archivo = '/tmp/PROTOCOLIZACION_'.$base.'.zip';
+        $this->notificar = 1;
+    }
+}
+
+?>
diff --git a/test/casos/caso_3_protocolizacion/constantes.php b/test/casos/caso_3_protocolizacion/constantes.php
new file mode 100644 (file)
index 0000000..d51bddc
--- /dev/null
@@ -0,0 +1,150 @@
+<?php
+// vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4 foldmethod=marker:
+// +----------------------------------------------------------------------+
+// | Ministerio De Economia                                               |
+// +----------------------------------------------------------------------+
+// | Archivo generado automaticamente por samurai.                        |
+// | Definicion de constantes para su uso en los sistemas.                |
+// +----------------------------------------------------------------------+
+// $Id$
+
+/** @file
+ * Definicion de Constantes del sistema  Protocolización
+ */
+
+/**
+ * Identificador del Sistema
+ */
+define('PROTOCOLIZACIóN_PERM', 72);
+
+/**
+ * Identificacion del permiso admin destinos alta
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_DESTINOS_ALTA', 128);
+
+/**
+ * Identificacion del permiso admin destinos baja
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_DESTINOS_BAJA', 129);
+
+/**
+ * Identificacion del permiso admin destinos listar
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_DESTINOS_LISTAR', 127);
+
+/**
+ * Identificacion del permiso admin destinos modificar
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_DESTINOS_MODIFICAR', 130);
+
+/**
+ * Identificacion del permiso admin firmantes alta
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_FIRMANTES_ALTA', 120);
+
+/**
+ * Identificacion del permiso admin firmantes ausentes alta
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_FIRMANTES_AUSENTES_ALTA', 124);
+
+/**
+ * Identificacion del permiso admin firmantes ausentes baja
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_FIRMANTES_AUSENTES_BAJA', 125);
+
+/**
+ * Identificacion del permiso admin firmantes ausentes listar
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_FIRMANTES_AUSENTES_LISTAR', 123);
+
+/**
+ * Identificacion del permiso admin firmantes ausentes modificar
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_FIRMANTES_AUSENTES_MODIFICAR', 126);
+
+/**
+ * Identificacion del permiso admin firmantes baja
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_FIRMANTES_BAJA', 121);
+
+/**
+ * Identificacion del permiso admin firmantes listar
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_FIRMANTES_LISTAR', 119);
+
+/**
+ * Identificacion del permiso admin firmantes modificar
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_FIRMANTES_MODIFICAR', 122);
+
+/**
+ * Identificacion del permiso admin firmantes reactivar
+ */
+define('PROTOCOLIZACIóN_PERM_ADMIN_FIRMANTES_REACTIVAR', 131);
+
+/**
+ * Identificacion del permiso informe auditoria
+ */
+define('PROTOCOLIZACIóN_PERM_INFORME_AUDITORIA', 116);
+
+/**
+ * Identificacion del permiso informe personal
+ */
+define('PROTOCOLIZACIóN_PERM_INFORME_PERSONAL', 117);
+
+/**
+ * Identificacion del permiso log
+ */
+define('PROTOCOLIZACIóN_PERM_LOG', 118);
+
+/**
+ * Identificacion del permiso normas alta
+ */
+define('PROTOCOLIZACIóN_PERM_NORMAS_ALTA', 113);
+
+/**
+ * Identificacion del permiso normas baja
+ */
+define('PROTOCOLIZACIóN_PERM_NORMAS_BAJA', 114);
+
+/**
+ * Identificacion del permiso normas listar
+ */
+define('PROTOCOLIZACIóN_PERM_NORMAS_LISTAR', 112);
+
+/**
+ * Identificacion del permiso normas modificar
+ */
+define('PROTOCOLIZACIóN_PERM_NORMAS_MODIFICAR', 115);
+
+/**
+ * Identificacion del permiso perfil alta
+ */
+define('PROTOCOLIZACIóN_PERM_PERFIL_ALTA', 58);
+
+/**
+ * Identificacion del permiso perfil baja
+ */
+define('PROTOCOLIZACIóN_PERM_PERFIL_BAJA', 59);
+
+/**
+ * Identificacion del permiso perfil modif
+ */
+define('PROTOCOLIZACIóN_PERM_PERFIL_MODIF', 60);
+
+/**
+ * Identificacion del permiso usuario alta
+ */
+define('PROTOCOLIZACIóN_PERM_USUARIO_ALTA', 61);
+
+/**
+ * Identificacion del permiso usuario baja
+ */
+define('PROTOCOLIZACIóN_PERM_USUARIO_BAJA', 62);
+
+/**
+ * Identificacion del permiso usuario modif
+ */
+define('PROTOCOLIZACIóN_PERM_USUARIO_MODIF', 63);
+
+?>
\ No newline at end of file
diff --git a/test/casos/caso_3_protocolizacion/informe_auditoria.php b/test/casos/caso_3_protocolizacion/informe_auditoria.php
new file mode 100755 (executable)
index 0000000..554a6c2
--- /dev/null
@@ -0,0 +1,197 @@
+#!/usr/bin/php4 -qC
+<?php 
+/* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80 foldmethod=marker:
+-------------------------------------------------------------------------------
+                             Ministerio de Economía
+                                    Protocolizacion
+-------------------------------------------------------------------------------
+This file is part of Protocolizacion.
+
+Protocolizacion is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+Protocolizacion is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+You should have received a copy of the GNU General Public License; if not,
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA  02111-1307  USA
+-------------------------------------------------------------------------------
+Creado: mar nov 18 10:46:28 ART 2003
+Autor:  Martin Marrese <mmarre@mecon.gov.ar>
+-------------------------------------------------------------------------------
+$Id$
+-----------------------------------------------------------------------------*/
+//require_once 'MECON/general.php';
+//prepend_include_path('/home/mmarrese/public_html/meconlib/lib/');
+
+
+//@TODO Hacer que se pueda elegir el tamanio de la pagina y si hay ganas el
+//ancho de las columnas.
+
+
+//REQUIRE ONCE {{{
+require_once 'DB.php';
+require_once 'Date.php';
+require_once 'MECON/HTML/TablaDB.php';
+require_once 'MECON/PDF/Marco.php';
+require_once 'MECON/PDF/Tabla.php';
+require_once 'MECON/PDF/Texto.php';
+require_once 'MECON/PDF/Separador.php';
+//}}}
+
+//Opcion 1: Obtengo las variables de las consultas del archivo.ini {{{
+//$options = parse_ini_file(dirname(__FILE__) . '/informe_auditoria.ini', true);
+//$filtros[] = intval($options['periodo']);
+//$id_firmante = intval($options['id_firmante']);
+//}}}
+//Opcion 2: Obtengo las variables de las consultas por linea de comando {{{
+require_once 'Console/Getopt.php';
+$con  = new Console_Getopt;
+$args = $con->readPHPArgv();
+$options = $con->getopt($args, $so);
+$filtros[] = @$options[1][0];
+$id_firmante = @$options[1][1];
+$base = @$options[1][2];
+//}}}
+//Opcion 3: Si se recibe por web {{{
+//$filtros = @split (',', $_REQUEST['filtros']);
+//$id_firmante = @$_REQUEST['id_firmante'];
+//}}}
+
+//Modifico parametros de configuracion de php {{{
+//setlocale (LC_ALL, 'es_AR');
+ini_set("memory_limit", "64M");
+ini_set('max_execution_time', 0);
+//}}}
+
+//DB {{{
+$db = DB::connect("mysql://intranet:intranet@intranet-db/".$base,
+        "persistent=true");
+if (DB::isError($db)) {
+    die ($db->getMessage());
+}
+//}}}
+
+//CONSULTAS FIXME Hay que cambiar el nombre de la base segun el ministerio {{{
+$sql_normas = 'SELECT n.id_norma as id_norma, n.n_norma AS n_norma, n.bis AS bis,
+    n.fecha_norma AS fecha_norma, n.tema AS tema, n.proesgral AS proesgral,
+    n.expediente AS expediente, n.pasado_a_sge AS pasado_a_sge, n.reserva AS
+    reserva,n.id_firmante AS id_firmante, n.id_usuario_ult_modif AS
+    id_usuario_ult_modif, n.n_norma2 AS n_norma2, n.depende2 AS depende2,
+    n.n_norma3 AS n_norma3, n.depende3 AS depende3, n.id_destino as id_destino,
+    n.comentario AS comentario, n.interinato AS interinato, n.sale_por_exp AS
+    sale_por_exp, n.activo as activo, n.fecha_ult_modif AS fecha_ult_modif,
+    n.destino_nombre_breve AS destino_nombre_breve FROM norma AS n WHERE
+    n.activo = 1 AND n.id_firmante = '.$id_firmante.' 
+    AND YEAR(n.fecha_norma) = '.$filtros[0].' ORDER BY YEAR(n.fecha_norma),
+    n.n_norma, n.bis';
+
+$sql_firmante_activo = 
+    'SELECT DISTINCT f.id_firmante AS id_firmante, f.t_doc AS t_doc,
+    f.doc AS doc, f.cargo as cargo, IFNULL(w.nombre,ff.nombre) AS nombre,
+    f.decreto AS decreto, f.fecha AS fecha, IFNULL(w.codep, ff.id_dependencia)
+    as codep, f.fecha_alta AS fecha_alta, f.fecha_baja AS fecha_baja, f.activo
+    AS activo FROM '.$base.'.firmante AS f left join novedades.web003 AS w on
+    (f.doc = w.nrodoc) left join CODEP.Dependencias as d on ( w.codep =
+    d.codigo_actual), '.$base.'.firmante AS f2 left join '.$base.'.funcionario 
+    AS ff on (f2.doc = ff.doc) left join CODEP.Dependencias as dd on (
+    ff.id_dependencia = dd.codigo_actual) WHERE f.activo = 1 and f2.activo = 1
+    and f2.doc = f.doc AND f.id_firmante = '.$id_firmante; 
+
+$sql_firmante_inactivo = 
+    'SELECT DISTINCT f.id_firmante AS id_firmante, f.t_doc AS t_doc, f.doc AS
+    doc, f.cargo as cargo, IFNULL(w.nombre,ff.nombre) AS nombre, f.decreto AS
+    decreto, f.fecha AS fecha, IFNULL(w.codep, ff.id_dependencia) as codep,
+    f.fecha_alta AS fecha_alta, f.fecha_baja AS fecha_baja, f.activo AS activo
+    FROM '.$base.'.firmante AS f left join novedades.web003 AS w on (f.doc = 
+    w.nrodoc) left join CODEP.Dependencias as d on ( w.codep = d.codigo_actual),
+    '.$base.'.firmante AS f2 left join '.$base.'.funcionario AS ff on (f2.doc =
+    ff.doc) left join CODEP.Dependencias as dd on ( ff.id_dependencia =
+    dd.codigo_actual) WHERE f.activo = 0 and f2.activo = 0 and f2.doc = f.doc
+    AND f.id_firmante = '.$id_firmante;
+//}}}
+
+// Obtengo los datos del firmante {{{
+$dbh = $db->prepare($sql_firmante_activo);
+$res = $db->execute($dbh);    
+if ($res->numRows()) {
+    $t_firmante =& new MECON_HTML_TablaDB ();
+    while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
+        $firmante = $re;
+    }    
+    $res->free();
+}
+else {
+    $dbh = $db->prepare($sql_firmante_inactivo);
+    $res = $db->execute($dbh);    
+    while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
+        $firmante = $re;
+    }    
+    $res->free();
+}
+//}}}
+
+//Obtengo las normas del firmante y las agrego a la tabla {{{
+$dbh = $db->prepare($sql_normas);
+$res = $db->execute($dbh);    
+$t_normas =& new MECON_HTML_TablaDB ();
+$t_normas->addRow(array('Res', 'Fecha', 'CNJ1', 'DEP1', 'CNJ2', 'DEP2',
+            'Proyecto', 'Expediente', 'Tema', 'Destino', 'Int.'), 'cabecera');
+
+while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
+    $n_norma = ($re['bis']) ? $re['n_norma'].' Bis' : $re['n_norma'];
+    $fecha = new Date ($re['fecha_norma']);
+    $expediente = ucwords(strtolower($re['expediente']));
+    $tema = ucwords(strtolower($re['tema']));
+    $destino = ucwords(strtolower($re['destino_nombre_breve']));
+
+    $t_normas->addRow(array (
+                $n_norma,
+                $fecha->format("%d/%m/%Y"),
+                $re['n_norma2'],
+                $re['depende2'],
+                $re['n_norma3'],
+                $re['depende3'],
+                $re['proesgral'],
+                $expediente,
+                $tema,
+                $destino,
+                $re['interinato']
+                ));
+}
+$res->free();
+
+$t_normas->updateColAttributes(0, 'width=8% align="center"');
+$t_normas->updateColAttributes(1, 'width=10% align="center"');
+$t_normas->updateColAttributes(2, 'width=10% align="center"');
+$t_normas->updateColAttributes(3, 'width=10% align="center"');
+$t_normas->updateColAttributes(4, 'width=10% align="center"');
+$t_normas->updateColAttributes(5, 'width=10% align="center"');
+$t_normas->updateColAttributes(6, 'width=20% align="center"');
+$t_normas->updateColAttributes(7, 'width=20% align="center"');
+$t_normas->updateColAttributes(8, 'width=25% align="center"');
+$t_normas->updateColAttributes(9,'width=25% align="center"');
+$t_normas->updateColAttributes(10,'width=5% align="center"');
+//}}}
+
+//Genero el PDF {{{
+$PDF_MARCO =& new MECON_PDF_Marco ('legal', 'landscape');
+$PDF_MARCO->seccion   = 'Registro de Resoluciones / Disposiciones ME';
+$PDF_MARCO->subseccion = 'Direccion General de Despacho y Mesa de Entradas';
+$PDF_MARCO->titulo    = $firmante['nombre'];
+$PDF_MARCO->subtitulo = $firmante['cargo'];
+$PDF_MARCO->fecha = 'Periodo: '.$filtros[0];
+$PDF_MARCO->addContent(new MECON_PDF_Tabla ($t_normas, 'landscape'), false);
+$PDF_TEXTO =& new MECON_PDF_Texto ('landscape');
+$PDF_TEXTO->addContent('Director de Despacho');
+$PDF_TEXTO->setEstilo(0,  array ('font'   => 'Helvetica-Bold', 'height' => 8,
+                        'align'  => 'right'));
+$PDF_MARCO->addContent($PDF_TEXTO, true);
+$PDF_MARCO->addContent(new MECON_PDF_Separador(9, true), false);
+$PDF_MARCO->display();
+//}}}
+?>
diff --git a/test/casos/caso_3_protocolizacion/tmp.php b/test/casos/caso_3_protocolizacion/tmp.php
new file mode 100755 (executable)
index 0000000..9d3e12d
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/php4 -qC
+<?php 
+require_once 'DB.php';
+$db = DB::connect(
+        "mysql://intranet:intranet@intranet-db/". $base, "persistent=true");
+if (PEAR::isError($db)) {
+    print '<PRE>';var_dump($db);print '</PRE>';
+}
+
+$base = 'normas';
+
+$sql =  "
+    SELECT DISTINCT id_firmante AS id_firmante
+    FROM $base.firmante
+    ORDER BY id_firmante
+    ";
+$res = $db->query($sql);    
+
+print '<PRE>';var_dump($res);print '</PRE>';
+
+while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
+    $result[]=$re['id_firmante'];
+}
+var_dump($result);
+?>