From: Leandro Lucarella Date: Thu, 15 Apr 2004 19:06:16 +0000 (+0000) Subject: Agrego un caso de prueba. X-Git-Tag: svn_import~13 X-Git-Url: https://git.llucax.com/mecon/yatta.git/commitdiff_plain/e28cf087ba9b1a85be37c4d767cda88619391050 Agrego un caso de prueba. --- diff --git a/test/casos/caso_3_protocolizacion.php b/test/casos/caso_3_protocolizacion.php new file mode 100755 index 0000000..ae1e8c3 --- /dev/null +++ b/test/casos/caso_3_protocolizacion.php @@ -0,0 +1,68 @@ +#!/usr/bin/php4 -qC + +------------------------------------------------------------------------------- +$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 index 0000000..e6aef79 --- /dev/null +++ b/test/casos/caso_3_protocolizacion/GenerarAuditoriaCompleta.php @@ -0,0 +1,68 @@ +#!/usr/bin/php4 -qC + +------------------------------------------------------------------------------- +$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 index 0000000..fece5f7 --- /dev/null +++ b/test/casos/caso_3_protocolizacion/clase.php @@ -0,0 +1,217 @@ +_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 index 0000000..d51bddc --- /dev/null +++ b/test/casos/caso_3_protocolizacion/constantes.php @@ -0,0 +1,150 @@ + \ 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 index 0000000..554a6c2 --- /dev/null +++ b/test/casos/caso_3_protocolizacion/informe_auditoria.php @@ -0,0 +1,197 @@ +#!/usr/bin/php4 -qC + +------------------------------------------------------------------------------- +$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 index 0000000..9d3e12d --- /dev/null +++ b/test/casos/caso_3_protocolizacion/tmp.php @@ -0,0 +1,25 @@ +#!/usr/bin/php4 -qC +';var_dump($db);print ''; +} + +$base = 'normas'; + +$sql = " + SELECT DISTINCT id_firmante AS id_firmante + FROM $base.firmante + ORDER BY id_firmante + "; +$res = $db->query($sql); + +print '
';var_dump($res);print '
'; + +while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) { + $result[]=$re['id_firmante']; +} +var_dump($result); +?>