]> git.llucax.com Git - mecon/yatta.git/blob - test/casos/caso_3_protocolizacion/informe_auditoria.php
BugFixes.
[mecon/yatta.git] / test / casos / caso_3_protocolizacion / informe_auditoria.php
1 #!/usr/bin/php4 -qC
2 <?php 
3 /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80 foldmethod=marker:
4 -------------------------------------------------------------------------------
5                              Ministerio de Economía
6                                     Protocolizacion
7 -------------------------------------------------------------------------------
8 This file is part of Protocolizacion.
9
10 Protocolizacion is free software; you can redistribute it and/or modify it under
11 the terms of the GNU General Public License as published by the Free
12 Software Foundation; either version 2 of the License, or (at your option)
13 any later version.
14
15 Protocolizacion is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
18  
19 You should have received a copy of the GNU General Public License; if not,
20 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
21 Boston, MA  02111-1307  USA
22 -------------------------------------------------------------------------------
23 Creado: mar nov 18 10:46:28 ART 2003
24 Autor:  Martin Marrese <mmarre@mecon.gov.ar>
25 -------------------------------------------------------------------------------
26 $Id$
27 -----------------------------------------------------------------------------*/
28 //require_once 'MECON/general.php';
29 //prepend_include_path('/home/mmarrese/public_html/meconlib/lib/');
30
31
32 //@TODO Hacer que se pueda elegir el tamanio de la pagina y si hay ganas el
33 //ancho de las columnas.
34
35
36 //REQUIRE ONCE {{{
37 require_once 'DB.php';
38 require_once 'Date.php';
39 require_once 'MECON/HTML/TablaDB.php';
40 require_once 'MECON/PDF/Marco.php';
41 require_once 'MECON/PDF/Tabla.php';
42 require_once 'MECON/PDF/Texto.php';
43 require_once 'MECON/PDF/Separador.php';
44 //}}}
45
46 //Opcion 1: Obtengo las variables de las consultas del archivo.ini {{{
47 //$options = parse_ini_file(dirname(__FILE__) . '/informe_auditoria.ini', true);
48 //$filtros[] = intval($options['periodo']);
49 //$id_firmante = intval($options['id_firmante']);
50 //}}}
51 //Opcion 2: Obtengo las variables de las consultas por linea de comando {{{
52 require_once 'Console/Getopt.php';
53 $con  = new Console_Getopt;
54 $args = $con->readPHPArgv();
55 $options = $con->getopt($args, $so);
56 $filtros[] = @$options[1][0];
57 $id_firmante = @$options[1][1];
58 $base = @$options[1][2];
59 //}}}
60 //Opcion 3: Si se recibe por web {{{
61 //$filtros = @split (',', $_REQUEST['filtros']);
62 //$id_firmante = @$_REQUEST['id_firmante'];
63 //}}}
64
65 //Modifico parametros de configuracion de php {{{
66 //setlocale (LC_ALL, 'es_AR');
67 ini_set("memory_limit", "64M");
68 ini_set('max_execution_time', 0);
69 //}}}
70
71 //DB {{{
72 $db = DB::connect("mysql://intranet:intranet@intranet-db/".$base,
73         "persistent=true");
74 if (DB::isError($db)) {
75     die ($db->getMessage());
76 }
77 //}}}
78
79 //CONSULTAS FIXME Hay que cambiar el nombre de la base segun el ministerio {{{
80 $sql_normas = 'SELECT n.id_norma as id_norma, n.n_norma AS n_norma, n.bis AS bis,
81     n.fecha_norma AS fecha_norma, n.tema AS tema, n.proesgral AS proesgral,
82     n.expediente AS expediente, n.pasado_a_sge AS pasado_a_sge, n.reserva AS
83     reserva,n.id_firmante AS id_firmante, n.id_usuario_ult_modif AS
84     id_usuario_ult_modif, n.n_norma2 AS n_norma2, n.depende2 AS depende2,
85     n.n_norma3 AS n_norma3, n.depende3 AS depende3, n.id_destino as id_destino,
86     n.comentario AS comentario, n.interinato AS interinato, n.sale_por_exp AS
87     sale_por_exp, n.activo as activo, n.fecha_ult_modif AS fecha_ult_modif,
88     n.destino_nombre_breve AS destino_nombre_breve FROM norma AS n WHERE
89     n.activo = 1 AND n.id_firmante = '.$id_firmante.' 
90     AND YEAR(n.fecha_norma) = '.$filtros[0].' ORDER BY YEAR(n.fecha_norma),
91     n.n_norma, n.bis';
92
93 $sql_firmante_activo = 
94     'SELECT DISTINCT f.id_firmante AS id_firmante, f.t_doc AS t_doc,
95     f.doc AS doc, f.cargo as cargo, IFNULL(w.nombre,ff.nombre) AS nombre,
96     f.decreto AS decreto, f.fecha AS fecha, IFNULL(w.codep, ff.id_dependencia)
97     as codep, f.fecha_alta AS fecha_alta, f.fecha_baja AS fecha_baja, f.activo
98     AS activo FROM '.$base.'.firmante AS f left join novedades.web003 AS w on
99     (f.doc = w.nrodoc) left join CODEP.Dependencias as d on ( w.codep =
100     d.codigo_actual), '.$base.'.firmante AS f2 left join '.$base.'.funcionario 
101     AS ff on (f2.doc = ff.doc) left join CODEP.Dependencias as dd on (
102     ff.id_dependencia = dd.codigo_actual) WHERE f.activo = 1 and f2.activo = 1
103     and f2.doc = f.doc AND f.id_firmante = '.$id_firmante; 
104
105 $sql_firmante_inactivo = 
106     'SELECT DISTINCT f.id_firmante AS id_firmante, f.t_doc AS t_doc, f.doc AS
107     doc, f.cargo as cargo, IFNULL(w.nombre,ff.nombre) AS nombre, f.decreto AS
108     decreto, f.fecha AS fecha, IFNULL(w.codep, ff.id_dependencia) as codep,
109     f.fecha_alta AS fecha_alta, f.fecha_baja AS fecha_baja, f.activo AS activo
110     FROM '.$base.'.firmante AS f left join novedades.web003 AS w on (f.doc = 
111     w.nrodoc) left join CODEP.Dependencias as d on ( w.codep = d.codigo_actual),
112     '.$base.'.firmante AS f2 left join '.$base.'.funcionario AS ff on (f2.doc =
113     ff.doc) left join CODEP.Dependencias as dd on ( ff.id_dependencia =
114     dd.codigo_actual) WHERE f.activo = 0 and f2.activo = 0 and f2.doc = f.doc
115     AND f.id_firmante = '.$id_firmante;
116 //}}}
117
118 // Obtengo los datos del firmante {{{
119 $dbh = $db->prepare($sql_firmante_activo);
120 $res = $db->execute($dbh);    
121 if ($res->numRows()) {
122     $t_firmante =& new MECON_HTML_TablaDB ();
123     while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
124         $firmante = $re;
125     }    
126     $res->free();
127 }
128 else {
129     $dbh = $db->prepare($sql_firmante_inactivo);
130     $res = $db->execute($dbh);    
131     while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
132         $firmante = $re;
133     }    
134     $res->free();
135 }
136 //}}}
137
138 //Obtengo las normas del firmante y las agrego a la tabla {{{
139 $dbh = $db->prepare($sql_normas);
140 $res = $db->execute($dbh);    
141 $t_normas =& new MECON_HTML_TablaDB ();
142 $t_normas->addRow(array('Res', 'Fecha', 'CNJ1', 'DEP1', 'CNJ2', 'DEP2',
143             'Proyecto', 'Expediente', 'Tema', 'Destino', 'Int.'), 'cabecera');
144
145 while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
146     $n_norma = ($re['bis']) ? $re['n_norma'].' Bis' : $re['n_norma'];
147     $fecha = new Date ($re['fecha_norma']);
148     $expediente = ucwords(strtolower($re['expediente']));
149     $tema = ucwords(strtolower($re['tema']));
150     $destino = ucwords(strtolower($re['destino_nombre_breve']));
151
152     $t_normas->addRow(array (
153                 $n_norma,
154                 $fecha->format("%d/%m/%Y"),
155                 $re['n_norma2'],
156                 $re['depende2'],
157                 $re['n_norma3'],
158                 $re['depende3'],
159                 $re['proesgral'],
160                 $expediente,
161                 $tema,
162                 $destino,
163                 $re['interinato']
164                 ));
165 }
166 $res->free();
167
168 $t_normas->updateColAttributes(0, 'width=8% align="center"');
169 $t_normas->updateColAttributes(1, 'width=10% align="center"');
170 $t_normas->updateColAttributes(2, 'width=10% align="center"');
171 $t_normas->updateColAttributes(3, 'width=10% align="center"');
172 $t_normas->updateColAttributes(4, 'width=10% align="center"');
173 $t_normas->updateColAttributes(5, 'width=10% align="center"');
174 $t_normas->updateColAttributes(6, 'width=20% align="center"');
175 $t_normas->updateColAttributes(7, 'width=20% align="center"');
176 $t_normas->updateColAttributes(8, 'width=25% align="center"');
177 $t_normas->updateColAttributes(9,'width=25% align="center"');
178 $t_normas->updateColAttributes(10,'width=5% align="center"');
179 //}}}
180
181 //Genero el PDF {{{
182 $PDF_MARCO =& new MECON_PDF_Marco ('legal', 'landscape');
183 $PDF_MARCO->seccion   = 'Registro de Resoluciones / Disposiciones ME';
184 $PDF_MARCO->subseccion = 'Direccion General de Despacho y Mesa de Entradas';
185 $PDF_MARCO->titulo    = $firmante['nombre'];
186 $PDF_MARCO->subtitulo = $firmante['cargo'];
187 $PDF_MARCO->fecha = 'Periodo: '.$filtros[0];
188 $PDF_MARCO->addContent(new MECON_PDF_Tabla ($t_normas, 'landscape'), false);
189 $PDF_TEXTO =& new MECON_PDF_Texto ('landscape');
190 $PDF_TEXTO->addContent('Director de Despacho');
191 $PDF_TEXTO->setEstilo(0,  array ('font'   => 'Helvetica-Bold', 'height' => 8,
192                         'align'  => 'right'));
193 $PDF_MARCO->addContent($PDF_TEXTO, true);
194 $PDF_MARCO->addContent(new MECON_PDF_Separador(9, true), false);
195 $PDF_MARCO->display();
196 //}}}
197 ?>