_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; } } ?>