Manual Cod Quipux

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 21

SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA

SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

QUIPUX-COMUNIDAD
Versión 4

SISTEMA QUIPUX

Secretaría de la Administración
Pública

2014-2015

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

1. INTRODUCCIÓN

Quipux está desarrollado con lenguaje de programación PHP, la mayoría de la parte funcional de
documentos está desarrollado con programación Orientada a Objetos la cual nos ha permitido
reutilizar el código en gran parte del sistema. Además utilizamos HTML, JAVASCRIPT, AJAX y
JSON.
El esquema de desarrollo está implementado de la siguiente manera:

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

Figura 1.- Esquema de Cambios sobre el SGDQ

El esquema de programación de Quipux, 528 directorios, 3414 archivos, vamos a describir a


continuación:

CARPETAS DESCRIPCIÓN
├── Administracion Administración del Sistema
│ ├── archivos Código de archivos adjuntos al sistema
│ ├── catalogos --
│ ├── ciudadanos Creación, combinación de ciudadanos
│ ├── ciudadanos_solicitud
│ ├── corregir_datos_usuarios Solicitudes de firma electrónica
│ ├── dependencias --
│ ├── instituciones_adscritas Creación de áreas o dependencias de Institución
│ ├── listas Creción de listas
│ ├── mensajes_alerta --
│ ├── migrar_bodega --
│ ├── notificaciones --
│ ├── subrogacion Subrogación
│ ├── tbasicas serialización de numeración de documentos
│ ├── usuarios usuarios, activación, llamada a servicio web
│ ├── usuarios_dependencias asignación de usuarios y ciudadanos
├── adodb módulo de conexión de Base de datos
├── anexos vínculo de anexos a los documentos.
├── archivo administración de archivos
├── asociar_documentos asociar documentos a carpetas
├── backup --
├── BDD --
├── bodega Bodega temporal de documentos
├── busqueda Búsqueda con código like (desahabilitada actualmente)
├── busquedaN Búsqueda exacta (habilitada actualmente)
├── cron Cron que ejecuta Quipux
├── envios --
Css del Software
├── estilos íconos
├── iconos imágenes
├── imagenes img
├── img La carpeta include tenemos 1 carpeta principal:
├── include query: en donde encontramos
│ ├── barcode Administracion: encontramos los select de las
│ ├── class instituciones.
│ ├── db
│ ├── js
│ ├── local
│ ├── query
│ │ ├── administracion
│ │ ├── tx
│ │ └── uploadFile
│ ├── tx
│ └── upload
├── interconexion Encontramos los servicios web configurados para la
├── interconexion_sistema creación de documentos.

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

├── js
├── menu librerias javascript utilizadas en el sistema
menu, menús, bandejas
├── metadatos
código de metadatos hoy en día llamado etiquetas.
├── plantillas plantillas de documentos
├── radicacion una de las carpetas más importantes del sistema, donde
se maneja todas las transacionalidades de la
├── recursivas documentación.
├── reportes utilizada para dependendias manejando recursividad
├── reportes_new --
├── seguridad Reporte del sistema
├── tareas Nivel de seguridad para documentos
├── tipo_documental tareas relacionadas con documentos
├── tx Tx, funcionalidades principales de transacciones
├── updates
├── uploadFiles

Tabla 1.- Directorios de Quipux


2. ARCHIVO DE CONFIGURACIÓN

Código Descripción
$version_light=false; Versión a desplegar
$config_numero_meses = 6; Configuración de fechas
$numeroCaracteresTexto = 0; Mínimo de número de caracteres para buscar
$config_bloquear_acceso_ciudadano = false; Bloqueo a ciudadanos al sistema

// Configuracion de la conexion con la BDD Configuración de conexión de base de datos


$usuario = "postgres"; transaccional.
$contrasena= "postgres";
$servidor = "127.0.0.1:5432";
$driver = "postgres";
$db = "quipux_comunidad";

$usuario_bodega = "postgres"; Configuración de base de datos documental


$contrasena_bodega = "postgres";
$servidor_bodega = "127.0.0.1:5432";
$db_bodega = "quipux_combodega";

Tabla 2.- Configuración Quipux

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

3. MANEJO DE SENTENCIAS SQL


Obtención de datos para varios registros
Código Descripción
$sql = "select usua_nombre, usua_apellido, usua_abr_titulo, Armando el query
usua_cargo
, usua_institucion, usua_area, inst_codi
from usuarios_radicado where
radi_nume_radi=$radicado and radi_usua_tipo=$tipo";
$rs=$db->conn->query($sql);
$cargo=""; Obtener datos del query
$usua_nombre=""; Si obtenemos varios datos y varios registros, manejamos
while($rs && !$rs->EOF) con While
{
$cargo.= $rs->fields["USUA_CARGO"]; en la variable carga lo obtenido query, en un bucle
$usua_nombre.= $rs->fields["USUA_NOMBRE"]; alimentando cada vez cargo y usua_nombre
$rs->MoveNext();
}

Tabla 3.- Obtención del result de una sentencia, varios registros

Obtención de datos para varios registros


Partiendo del mismo ejemplo
Código Descripción
$sql = "select usua_nombre, usua_apellido, usua_abr_titulo, Armando el query
usua_cargo
, usua_institucion, usua_area, inst_codi
from usuario where usua_codi = 234";
$rs=$db->conn->query($sql);
$cargo="";
Obtener datos del query
if (!$rs or $rs->EOF) { Si obtenemos varios datos

$cargo = $rs->fields["USUA_CARGO"]; en cada variabse carga lo que se obtiene del query


$usua_nombre = $rs->fields["USUA_NOMBRE"];

Tabla 4.- Obtención del result de una sentencia, un registro


4. MANEJO DE PERMISOS Y SESIONES

/var/www/html/quipux/session_orfeo.php

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

Permite el manejo de sesiones, expiración de la sesion y permisos, Si bien es cierto el manejo de las
sesiones tenemos configurado en apache en php.ini (15 minutos), también debemos controlar para
que el sistema caduque la sesion y se deslogue el usuario a continuación vemos el siguiente código
que permite ejecutar lo antes descrito.

Conexion a la Base de datos El archivo session_orfeo.php, es


llamado en todo el sistema para
controlar las sesiones y conexiones ala
base de datos
Código Descripción
Variable $ruta_raiz Es el path relativo para dirigirse a los archivos a utilizar

Conexion a Postgres
include_once ("$ruta_raiz/include/db/ConnectionHandler.php");
include_once ("$ruta_raiz/config.php");
include_once ("$ruta_raiz/config_replicacion.php"); Replicación de la base de datos, configurado en el
error_reporting(7); config.php

$db = new ConnectionHandler("$ruta_raiz"); Variable de conexión para Quipux, utilizada en todo el


$db->conn->SetFetchMode(ADODB_FETCH_ASSOC); sistema

Tabla 5.- Manejo de Conexiones

Código Descripción
$query = "select p.nombre, count(pc.id_permiso) as permiso Consulta a la tabla permiso y permiso_usuario,
from permiso p left outer join permiso_usuario pc on obteniendo antes el codigo de usuario.
p.id_permiso=pc.id_permiso
and pc.usua_codi=$usua_codi group by p.nombre";

$rs = $db->query($query);

while($rs && !$rs->EOF) {


$nom_perm = $rs->fields["NOMBRE"];
$_SESSION[$nom_perm] = $rs->fields["PERMISO"]; Se abre sesiones de acuerdo a los permisos configurados
$rs->MoveNext(); por el sistema.
}

Tabla 6.- Manejo de Sesiones Quipux


Además de las permisos que se asignan a sesiones tenemos las siguientes variables de sesion.

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

inst_codi, Id de Institución perteneciente al usuario logeado


usua_codi, Id del usuario perteneciente al usuario logeado

depe_codi, Id de la dependecia al usuario logeado


usua_nombre, nombre de usuario logeado
usua_codi_jefe, Id del jefe del usuario logeado

Sintáxis para variables enteras


Código Descripción
$_SESSION["usua_codi_jefe"] = (!$rsComp->EOF) ? 0+$rsComp->fields["USUA_CODI_JEFE"] : 0; este es un if si
existe el código
del jefe se asigna,
caso contrario se
asigna el valor de
0

Tabla 6.- Asignación de una variable a una sesion

5. CONFIGURACIÓN DESEABLE DEL APACHE


Por ejemplo podemos crear un archivo que contenga la siguiente información:
/etc/apache2/conf.d/quipux.conf, las siguientes variables tendrán acceso en el config.php de quipux,
también depende de la distribución de Quipux.
SetEnv DB_USER "postgres"
SetEnv DB_PASS "postgres"
SetEnv DB_SERVER "192.168.0.2:5432"
SetEnv DB_DRIVER "postgres"
SetEnv DB_NAME "quipux"

Configuración config.php Descripción


$usuario = $_SERVER['DB_USER']; Variables configurados en el quipux.conf
$contrasena = $_SERVER['DB_PASS'];
$servidor = $_SERVER['DB_SERVER'];
$driver = $_SERVER['DB_DRIVER'];
$db = $_SERVER['DB_NAME'];

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

Tabla 7.- Configuración deseable

De la tabla permisos tenemos los siguientes campos:


Esquema html del sistema (index_frame.php)

FRAME CABECERA
(Usuarios) f_top.php
FRAME MENU FRAME CUERPO
(Menu)correspondencia.ph (Contenido de Bandejas)
p cuerpo.php

Tabla 8.- Esquema de Interfáz


Interpretado en Html

Figura 2.- Esquema de interfáz


De cada archivo descrito se explicará las funciones principales para el mantenimiento del sistema.

El siguiente archivo nos permite administrar los menús a desplegar para los usuarios, dependiendo
del perfil, se desplegará cada item.
En esta carpeta se encuentra los menús de bandejas a desplegar:

quipux/menu/
La función crear_item_bandeja(posicion,leyenda, leyenda alterna,link) se encuentra en
quipux/menu/correspondencia.php
Por cada item generamos una fila y armamos el html, al final hacemos un return de la variable tr.

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

Configuración config.php Descripción


$tr = "<tr class='menu_fondo1' name='menu_tr$num' Se arma con php el código html a desplegar
id='menu_tr$num' onMouseOver='cambiar_fondo(this,1)'
onMouseOut='cambiar_fondo(this,0)'>
<td>&nbsp;&nbsp;
<a onclick=\"llamaCuerpo('$destino');
cambioMenu($num);\" class=\"menu_princ\"
target='mainFrame' title='$descripcion'
href='javascript:void(0);'>$nombre
</a>
$script
</td>
</tr> ";
al final de la función retornamos el tr
ejemplo de llamada a la función return $tr;
quipux/menu/menuPrimero.php
if($_SESSION["usua_prad_tp1"] == 1) {
echo crear_item_bandeja(0, "NUEVO", "Crear memorandos,
oficios, circulares, etc.", "radicacion/NEW.php?
&ent=1&accion=Nuevo&carpeta=0");
}

Tabla 9.- Esquema de Interfáz

Al final en el archivo quipux/menu/correspondencia.php, hacemos un include de todos los


archivos que escriben los menus.

Configuración config.php Descripción


<body onload="recargar_estadisticas(); init_menu();"> HTML
<center>
<div id="div_bloquear_menu" style="width: 100%; height: 0%; z-
index: 1000; position: fixed; top: 0; left: 0;"></div>
<br>
<table width="160px" border="0" cellpadding="0" cellspacing="3">

<?php
TIPO USUARIO =2 CIUDADANO TIENEN LOS PRIVILEGIOS
if ($_SESSION["tipo_usuario"]==2) {
if ($_SESSION["inst_codi"] == 1) {
include "$ruta_raiz/menu/nuevo_salida.php";
include "$ruta_raiz/menu/ciudadano_firma.php";
} else {

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

include "$ruta_raiz/menu/ciudadano.php";
}
} else {
if ($_SESSION["depe_codi"]!=0) { // Si no tiene un área no puede
realizar ninguna accion porque genera errores de secuencias. INCLUDES de los PHP que generan menús
include "$ruta_raiz/menu/nuevo_salida.php";
include "$ruta_raiz/menu/bandeja.php";
include "$ruta_raiz/menu/radicacion.php";
}
include "$ruta_raiz/menu/menuPrimero.php";
}
?>
</table>
<br>
<div id="div_estadisticas_menu" style="width: 160px;"></div>

Tabla 10.- menú de Quipux

/var/www/html/quipux/obtenerdatos.php, funciones principales


Código Descripción
$usua=ObtenerDatosUsuario($_SESSION["usua_codi"], Funciones reutilizables, a partir de del usua_codi, enviamos
$db,"U"); como parámetro, y obtenemos los siguientes datos:
$vector["usua_codi"] =trim($rs->fields["USUA_CODI"]); Retornamos el vector:
$vector["cedula"] =trim($rs->fields["USUA_CEDULA"]);
$vector["login"] =trim($rs->fields["USUA_LOGIN"]); así podemos hacer uso con la llamada a la función
$vector["nombre"] = $rs->fields["USUA_NOMBRE"];
$vector["usua_nombre"] =$rs->fields["USUA_NOMB"]; $usua=ObtenerDatosUsuario($_SESSION["usua_codi"],
$vector["usua_apellido"] =$rs- $db,"U");
>fields["USUA_APELLIDO"]; echo $usua["cedula"];//desplegará la cédula correspondiente al
$vector["inst_codi"] =trim($rs->fields["INST_CODI"]); usuario logeado.
$vector["institucion"] =$rs->fields["INST_NOMBRE"];
$vector["inst_estado"] =trim($rs-
>fields["INST_ESTADO"]);
$vector["usua_estado"] =trim($rs-
>fields["USUA_ESTA"]);
$vector["cargo"] = $rs->fields["USUA_CARGO"];
$vector["cargo_cabecera"] = $rs-
>fields["USUA_CARGO_CABECERA"];
$vector["titulo"] =$rs->fields["USUA_TITULO"];
$vector["abr_titulo"] =$rs-
>fields["USUA_ABR_TITULO"];
$vector["email"] =$rs->fields["USUA_EMAIL"];
$vector["dependencia"] =$rs->fields["DEPE_NOMB"];
$vector["depe_codi"] =$rs->fields["DEPE_CODI"];
$vector["tipo_usuario"] =$rs->fields["TIPO_USUARIO"];
$vector["direccion"] =$rs->fields["USUA_DIRECCION"];
$vector["telefono"] =$rs->fields["USUA_TELEFONO"];
$vector["ciudad"] =$rs->fields["USUA_CIUDAD"];

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

$vector["usua_firma_path"] =$rs-
>fields["USUA_FIRMA_PATH"];
$vector["tipo_certificado"] =$rs-
>fields["USUA_TIPO_CERTIFICADO"];
$vector["cargo_tipo"] =$rs->fields["CARGO_TIPO"];

Tabla 11.- obtener datos de un usuario

Código Descripción
function ObtenerDatosRadicado($radicado,$db) Obtener los datos de acuerdo al número de radicado
{//Obtiene datos del radicado en función del texto
if (trim($radicado)=="") return array();
$db->conn-
>SetFetchMode(ADODB_FETCH_ASSOC);
$isqlTEXT = "select r.*, e.esta_desc, tr.trad_descr,
radi_fech_asig::date - CURRENT_DATE as
num_dias
from radicado r left outer join estado e on
r.esta_codi=e.esta_codi
left outer join tiporad tr on r.radi_tipo =
tr.trad_codigo
where
r.RADI_NUME_RADI=".trim($radicado);

$rs=$db->query($isqlTEXT);
$vector["radi_nume_radi"] = $rs-
>fields["RADI_NUME_RADI"];
$vector["radi_nume_temp"] = $rs-
>fields["RADI_NUME_TEMP"];
....codigo de los campos de la tabla radicado
return $vector;

Tabla 12.- obtener datos de un documento

6. NUMERACIÓN DE DOCUMENTOS
2014000000000000001
2014 000000 000000001
año dígitos 0 9 dígitos secuenciales

Tabla 13.- numeración de documentos

términa en 0 cuando el documento pertenece al usuario remitente, o es generado en la institución,


termina en 1, cuando el documento pertenece al destinatario o copia,

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

termina en 2 si el documento está registrado como externo.

Generación de Documentos
En la generación de documentos tenemos el archivo
quipux/radicacion/NEW.php en donde se grafica la interfaz de la página.

Código Descripción
<form action="funciones_NEW.php?<?=$var_envio?>" ENCTYPE="multipart/form-data" method="post" Acción que registra
name="formulario" id="formulario"> <!--onChange="document.formulario.fl_modificar1.value=1;"--> la metadata del
documento

<input type="hidden" name="hidden_tipo_anterior" id="hidden_tipo_anterior" value="<?=$raditipo?>"/> Si el documento es


<input type="hidden" name="hidden_radi_actual" id="hidden_radi_actual" value=""/> reasignado o
<input type="hidden" name="hidden_actualiza_opciones" id="hidden_actualiza_opciones" value=""/> editado, se muestran
<input type="hidden" name="hidden_titulo_anterior" id="hidden_titulo_anterior" value=""/> estos valores
<input type="hidden" name="bandera_cambiarop" id="bandera_cambiarop" value="1"/>
<input type="hidden" name="txt_refeResponder" id="txt_refeResponder" value="<?
=$txt_refeResponder?>"/>
<input type="hidden" name="hidden_lista_modificada" id="hidden_lista_modificada" value="<?
=$lista_modificada?>"/>
<input type="hidden" name="txt_plugins_navegador" id="txt_plugins_navegador" value=""/>

Tabla 14.- formulario de nuevo documentos

El siguiente archivo es donde se ejecuta el guardado del documento, realizando algunas


validaciones:
quipux/radicacion/funciones_NEW.php

Código Descripción
function validar_html($html) Función que permite eliminar html en el cuerpo
{
$html = preg_replace(':<input (.*?)type=["\']?(hidden|submit|button| del documento.
image|reset|file)["\']?.*?>:i', '', $html);
$html = preg_replace(':<style.*?>.*?</style>:is', '', $html);
$html = preg_replace(':<img.*?/>:is', '', $html);
$html = preg_replace(':<!--.*?-->:is', '', $html);
$html = preg_replace(':<p .*?>:is', '', $html); //aumentado por SC
para evitar que se dañen las viñetas al pegar desde OOo
$html = preg_replace(':<col .*?>:is', '', $html); //aumentado por SC
para evitar que se dañen las tablas al pegar desde OOo
$html = str_replace("</p>", "<br />", $html);
$origen = array("á","é","í","ó","ú","ñ","Á","É","Í","Ó","Ú","Ñ");
$destino =

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

array("&aacute;","&eacute;","&iacute;","&oacute;","&uacute;","&ntilde
;","&Aacute;","&Eacute;","&Iacute;","&Oacute;","&Uacute;","&Ntilde;
");
$html = str_replace($origen, $destino, $html);
return $html;
}

Tabla 15.- Validación de Html

La función que obtiene el número de documento es:

Código Descripción
newRadicado($tpRad, $Dependencia, &$noRadText) Función
$newRadicado = date("Y") . str_pad($Dependencia,6,"0", Cadena de texto para recuperar el número de
STR_PAD_LEFT) . str_pad($secNew,9,"0", STR_PAD_LEFT) .
$tpRad; documento correspondiente

Tabla 16.- Numeración de Documentos


7. CARPETA tx
Las acciones que tenemos en cada bandeja son ejecutadas por javascript llamando a su vez a los php
que procesaran la información dependiendo de la opción realizada.

Figura 3.- Acciones de las Bandejas


Al seleccionar una de las opciones, ejecutamos el javascript enviando un código, cada boton de la
parte superior de arriba de la figura 3, tiene un código el cual es ejecutado por un solo php, el cual

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

describimos a continuación.
Para ejecutar una acción, es necesario seleccionar uno o varios documentos:

Los botones redondos de la Figura 3, son graficados de la siguiente manera:


Por ejemplo: para dibujar el boton eliminar tenemos:

Código Descripción
<td valign="bottom" id="btn_noeliminar" style='display:none'> A parte del html que grafica el boton y la imagen que despliega,
<a href="javascript:void(0);" tenemos la función changedepesel(codigoEjecutar), esta permite
onMouseOut="MM_swapImgRestore()" ejecutar la acción enviada.
onClick="seleccionBarra = 6;changedepesel(6);"
onMouseOver="MM_swapImage('Image3','','<?
=$ruta_raiz?>/imagenes/internas/overNoEliminar.gif',1)"
title="Shift+Ctrl+R">
<img src="<?=$ruta_raiz?
>/imagenes/internas/noEliminar.gif" name="Image3" border="0"
alt="Restaurar"></a>
</td>

function changedepesel(enviara) Como podemos ver esta función se encarga de alimentar


{ una caja de texto tipo hidden, también ejecutará la funcion
document.form1.codTx.value = enviara; envioTx();
envioTx();
}

Tabla 17.- Ejecución de acciones de las bandejas de Entrada y Salida

El archivo en donde se ejecutan las acciones es:


Si revisamos el código de la página cuerpo.php, podemos observar que se realiza un include a
txOrfeo.php

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

Figura 4.- dibujar botones


El php que ejecuta estas acciones dependiendo que botón presionamos, tenemos:
quipux/tx/realizarTx.php

Código Descripción
$chk_firma = $_POST['chk_firma']; Recibimos por Post, de las cajas de texto
$codTx = $_POST['codTx']; hidden
$observa = $_POST['observa'];
$fechaAgenda= $_POST['fechaAgenda'];
$checkValue = $_POST['checkValue'];
$fecha_doc = $_POST['fecha_doc'];
Luego
Dependiendo del código enviado por la función changedepesel(codigoEjecutar), tenemos el siguiente script
switch ($codTx) Se compone por un switch
{
case 2: //Eliminar Documentos
$nombTx = "Eliminar Documentos ";
$usCodDestino = $tx->eliminarDocumento( $radicadosSel,
$_SESSION["usua_codi"], $observa);
if($usCodDestino!='')
$MensajeTx="El/Los documento(s) est&aacute;n en la
bandeja &quot;Eliminados&quot;.";
else
echo "<br/><span><font color='Navy'>No se pudo realizar
esta acci&oacute;n. Solo los documentos en estado de
Elaboraci&oacute;n pueden ser eliminados.</b></font></span><br/>";
break;
case 6: //Sacar de eliminados
....sigue código

Tabla 18.- Ejecución de acciones de las bandejas de Entrada y Salida


De la misma manera podemos mencionar a los archivos: formEnvio.php y formEnvio_ajax.php
funcionan de la misma manera.
8. EJECUCIÓN DE CONSULTAS DE BANDEJAS
cuerpo.php, es el encargado de dibujar la parte frontal al usuario, en este mismo archivo ejecuta por
ajax el archivo cuerpo_paginador.php.
Para llamar al cuerpo_paginador.php tenemos el siguiente script:

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

$paginador = new ADODB_Pager_Ajax($ruta_raiz, "div_cuerpo", "cuerpo_paginador.php",


"txt_fecha_desde,txt_fecha_hasta,estado,busqRadicados,tipoLectura,slc_tarea_estado,radi_tipo",
"carpeta=$carpeta");
Por GET se envía a cuerpo_paginador las variables txt_fecha_desde,txt_fecha_hasta, etc, estas
variables son las que se toma por html de las cajas de texto.

quipux/cuerpo_paginador.php
Código Descripción
$txt_fecha_desde = trim(limpiar_sql($_GET['txt_fecha_desde'])); Recibimos lo que enviamos en la función
$txt_fecha_hasta = trim(limpiar_sql($_GET["txt_fecha_hasta"])); anterior
$estado = 0+$_GET["estado"];
$busqRadicados = trim(limpiar_sql($_GET["busqRadicados"]));
include "$ruta_raiz/include/query/queryCuerpo.php"; En este archivo está el query a ejecutar la
consulta.
echo "<br>";
$pager = new ADODB_Pager($db,$isql,'adodb', true,$orderNo, tenemos el componente
$orderTipo,true);
$pager->checkAll = false; algunas variables que dejamos por defecto
$pager->checkTitulo = true;
$pager->toRefLinks = $linkPagina;
$pager->toRefVars = $encabezado;
$pager->descCarpetasGen=$descCarpetasGen;
$pager->descCarpetasPer=$descCarpetasPer;
$pager->Render($rows_per_page=20,$linkPagina, Número de registros por página
$checkbox=chkAnulados);

Tabla 19.- Ejecución de acciones de las bandejas de Entrada y Salida


9. INSERT Y UPDATES EN EL SISTEMA
En Quipux, utilizamos la misma librería de conexión la cual nos permite usar la funcion REPLACE
que nos ayuda a ejecutar el insert o update en la base de datos del sistema.
Por ejemplo:

Código Descripción
$record["indi_codi"] = $repos_codi;
$record["esta_codi"] = $repos_estado;
$record["tamanio"] =
"pg_table_size(nombre_tabla)::numeric"; sería para un UPDATE
$ok = $dba->conn->Replace("indice", $record, Replace("indice", $record, "indi_codi", false, false, true,
"indi_codi", false, false, true, false); false);
indice: es la tabla a insertar o modificar
$record: es el array que contiene los datos y campos a

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

insertar o modificar.
UPDATE
indi_codi es el campo where si es un update a ejecutar
INSERT
indi_codi no va
sería para un INSERT
Replace("indice", $record, "", false, false, true, false);
los demás valores dejarlos por defecto, si necesitamos ver
el query que se ejecuta, el último parámetro ponerlo en
true

Tabla 20.- Ejecución de acciones de las bandejas de Entrada y Salida


10. EL ARCHIVO OSCURO tx.php
En este archivo se manejan las acciones que se realizan con los documentos, por lo general todas las
funciones tienen como parámetro radicados, el cual es un array de codigo de documentos para
ejecutar las acciones. De esta manera controlamos el check de las bandejas de documentos:

Código Descripción
foreach($radicados as $radi_nume)
{
//aquí ejecutamos las acciones que vamos a
realizar por cada documento seleccionado, claro
los documentos seleccionados deben tener la
misma acción para ejecutar.
}

Tabla 21.- foreach de un conjunto de documentos selecionados.

Este archivo es el más importante en todo el sistema, es recomendable si se va a cambiar una de las
funciones copiar y renombrarla con otro nombre para no afectar al sistema.

Por poner un ejemplo tenemos la función informar(radicados,usua_codi,usua_dest,observa)


radicados: id de radicados a modificar
usua_codi: usuario quien realiza la acción
usua_dest: usuario a quien va dirigida la acción
observa: observaciones que ingresa el usuario quien realiza la acción
Código Descripción

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

function informar($radicados, $usua_codi, $usua_dest, $observa) Ejemplo


{
include_once "../obtenerdatos.php"; //Consulta de datos de los usuarios y funcion que tenemos para reutilizarla
radicados
$usr_dest = ObtenerDatosUsuario($usua_dest,$this->db);

//$observa = "A: " . $usr_dest["login"] . " - $observa";


$mail_param["num_docs"] = 0; empieza el for para ejecutar el proceso
foreach($radicados as $radi_nume) a todos los radicados en el array dado.
{
# Asignar el valor de los campos en el registro
$record["RADI_NUME_RADI"] = $radi_nume;
$record["INFO_DESC"] = $this->db->conn->qstr($observa);
$record["INFO_FECH"] = $this->db->conn->sysTimeStamp;
$record["USUA_CODI"] = $usua_dest;
$record["USUA_INFO"] = $usua_codi;
//Insertamos los datos Insertamos en la tabla INFORMADOS
$informaSql = $this->db->conn->Replace("INFORMADOS",
$record,array('RADI_NUME_RADI','USUA_INFO','USUA_CODI'),false,false,true,false)
; Insertamos en Histórico
$this->insertarHistorico($radi_nume, $usua_codi, $usua_dest, $observa, 8);
++$mail_param["num_docs"];
}
$mail_param["enviado_por"] = "Informado por:";
$mail_param["bandeja"] = "Informados"; Si necesitamos enviar mail
if ($mail_param["num_docs"] == 1)
$this->enviarMail($usua_codi, $usua_dest, $radi_nume, "Documento Informado",
"0", $mail_param);
elseif ($mail_param["num_docs"] > 1)
$this->enviarMail($usua_codi, $usua_dest, $radi_nume, "Documento Informado",
"9", $mail_param);
return $usr_dest["nombre"];
}

Tabla 22.- foreach de un conjunto de documentos selecionados.

11. CARPETA INTERCONEXIÓN


En la carpeta interconexión tenemos los servicios web configurados, para explicar de manera
didáctia vamos a utilizar el servicio web que genera documentos:

Invocamos al archivo que tiene el servicio web a consumir


require_once $this->ruta_raiz."/interconexion/generar_pdf.php";

Llamamos al servicio web

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

$pdf = ws_generar_pdf_base64($this->documento_html, $this->plantilla_documento, $servidor_pdf, $this-


>registro_padre["estado"], $this->numero_documento, $this->fecha_documento, $this-
>registro_padre["ajust_texto"], $this->formato_pdf);

Código Descripción
function ws_generar_pdf_base64($html, $plantilla, $servidor,
$estado="", $numDocu="", $fechDocu = "", $numPag = "",
$orientPag="V")
{

try
{
$wsdl = "$servidor/html_a_pdf.php?wsdl"; //consumo de servicio web, hacemos referencia al servidor donde se
encuentra publicado el servicio
if(!@file_get_contents($wsdl)) {
throw new SoapFault('Server', 'No WSDL found at ' . $wsdl);
return "0";
}

//Lamado a la clase SOAP PHP para instanciar clienteSOAP


ini_set('soap.wsdl_cache_enabled', '0');
$archivo = "";
if (trim($plantilla) != "") {
if (is_file($plantilla))
$archivo = base64_encode(file_get_contents($plantilla)); Verificamos el documento
}
$oSoap = new SoapClient("$wsdl",array("trace" => 1, "exceptions"
=> 0));

$envioDatos=$oSoap->__soapcall('html_a_pdf', llamamos a la funcion html_a_pdf


array(
new SoapParam(base64_encode($html), "set_html"),
new SoapParam($archivo, "set_pdf"),
new SoapParam($estado, "set_estado"),
new SoapParam($numDocu, "set_num_docu"),
new SoapParam($fechDocu, "set_fech_docu"),
new SoapParam($numPag, "set_num_pag"),
new SoapParam($orientPag, "set_orient_pag")
)
);
//Comentar
/*
var_dump($envioDatos);

// Display the request and response


print "<pre>\n";
print "Request :\n".htmlspecialchars($oSoap-
>__getLastRequest()) ."\n";
print "Response:\n".htmlspecialchars($oSoap-
>__getLastResponse())."\n";
print "</pre>";
/**/
//Hasta aqui

if (strtoupper(substr(trim($envioDatos),0,4)) == "SOAP" or
strlen($envioDatos)<1000) {
throw new SoapFault('Server', 'Error SOAP: ' . $envioDatos);
return "0";
}
return $envioDatos; lo que recibimos es el pdf
} catch (SoapFault $e) { //Captura los errores
// var_dump($e);
printf("No se generó correctamente el archivo PDFs.");
return "0";

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

}
}

Tabla 23.- función de consumo de servicio web


12. TIPOS DE DOCUMENTOS
quipux/plantillas/generar_documento.php
La generación de documentos está realizado con configuraciones en la base de datos
exclusivamente de la tabla tiporad:

Figura 5.- configuración de oficio

Tal como tenemos la configuración del oficio, tenemos para todos los documentos, así
reemplazamos en php los valores del campo trad_formato.

Código Descripción
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_DESTINATARIO**", $this- Los campos entre **,
>datos_doc_destinatario, $this->documento_html); serán reemplazados por

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com
SECRETARÍA DE LA ADMINISTRACIÓN PÚBLICA
SUBSECRETARÍA NACIONAL DE GOBIERNO ELECTRÓNICO

$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_DESTINATARIO_AL_PIE**", los datos obtenidos de


$this->datos_doc_destinatario_al_pie, $this->documento_html); la clase.
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_LUGAR_DESTINATARIO**",
$this->datos_doc_lugar_destinatario, $this->documento_html);
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_REMITENTE**", $this-
>datos_doc_remitente, $this->documento_html);
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_ASUNTO**", $this-
>datos_doc_asunto, $this->documento_html);
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_CUERPO**", $this-
>datos_doc_cuerpo, $this->documento_html);
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_DESPEDIDA**", $this-
>datos_doc_despedida, $this->documento_html);
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_FRASE_REMITENTE**",
$this->datos_doc_frase_remitente, $this->documento_html);
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_FIRMA_DIGITAL**", $this-
>datos_doc_firma_digital, $this->documento_html);
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_LINEAS_ESPECIALES**",
$this->datos_doc_lineas_especiales, $this->documento_html);
$this->documento_html =
str_replace("**QUIPUX_DATOS_DOC_JUSTIFICAR_FIRMA_INICIO**", "&nbsp;<br>", $this-
>documento_html);
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_JUSTIFICAR_FIRMA_FIN**",
"&nbsp;<br>", $this->documento_html);
$this->documento_html = str_replace("**QUIPUX_DATOS_DOC_DADO_EN**", $this-
>datos_doc_dado_en, $this->documento_html);

Generación de clave de usuario:


Utilizamos md5, además a este realizamos un script:
Por ejemplo:
Para un usuario que tenga clave: 123
el md5('123')= "202cb962ac59075b964b07152d234b70"
la clave para quipux es: 02cb962ac59075b964b07152d2

Autor: José David Gamboa Vega


david.gamboa@administracionpublica.gob.ec
josedavo@gmail.com

También podría gustarte