programa

14
Programa para generar pantallas en base de datos 502 Paula espinosa bravo base de datos

Upload: pau

Post on 14-Nov-2014

577 views

Category:

Travel


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Programa

Programa para generar pantallas en base de datos 502Paula espinosa bravo base de datos

Page 2: Programa

Los Programas generadores de Pantalla, sirven para ayudar en la elaboración de otro programa. Así se evita consumir tiempo en diseñar la pantalla. Ayudan a la rapidez del prototipo. Son programas que se realizan en muy pocas horas.

Page 3: Programa

Pantallas de Contexto: En cada una de ellas se puede identificar la siguiente estructura básica:  

Encabezado (parte superior) , Pie (parte inferior) , Menú (parte izquierda) y Contenido (parte central y derecha) con las funciones que se especifican a continuación :  

Encabezado: Es el área destinada a la identificación institucional de la DIAN, a la identificación del usuario que accede a los servicios y a la presentación del menú temático del portal de la entidad.   

Pie: Es el área de la pantalla en la cual los usuarios deben prestar especial atención,  esta área se establece de acuerdo con el rol usado para “iniciar sesión”  en el portal de la DIAN, de manera que los servicios informáticos generarán y publicarán las alarmas o tareas correspondientes.   

En el pie se encuentran las siguientes opciones:    Alarmas (n): Enlace que envía al usuario a una página donde se muestran avisos o mensajes

importantes que debe conocer según su rol, relacionados principalmente con la proximidad de la caducidad del tiempo para la realización de tareas. Este enlace se conoce como “Bandeja de Alarmas” y el número (n) que acompaña al texto indica el número de alarmas que se tienen actualmente en la bandeja.   

Tareas (n): Enlace que envía a la persona a una página donde se presentan las tareas que ésta debe efectuar según su rol, dentro de las responsabilidades que tiene frente a la DIAN. Este enlace se conoce como "Bandeja de Tareas” y el número (n) que acompaña al texto indica el número de tareas que se tienen actualmente en la bandeja.   

La bandeja de tareas constituye la principal forma de cooperación y comunicación entre los usuarios y la DIAN.  A través de ella se lleva un control automático de la ejecución de las tareas y la interacción que sobre ellos realiza la DIAN.

  El contenido de la pantalla de la bandeja de tareas está conformado por un encabezado,  un

cuerpo y los botones de control de paginación.

Page 4: Programa

Encabezado de la Bandeja de Tareas: Provee un conjunto de herramientas de búsqueda que le permite a la persona encontrar la tarea de su interés.  

Cuerpo de la Bandeja de Tareas: Presenta una lista de tareas que satisfacen los criterios de búsqueda especificados por la persona. Dicha lista presenta las siguientes columnas de información:  

Código: Es un número identificador de la tarea enviada al persona. Para ejecutar la tarea, la persona debe dar clic en el código y el sistema le deberá presentar las pantallas relacionadas con el trámite específico.   

Descripción: En esta columna se describe el objetivo de la tarea.    Estado: Informa sobre el estado en el cual se encuentra una tarea, los cuales pueden

ser  (A)ctiva, (C)ancelada o (T)erminada.    Fecha de asignación: Es la fecha en la que el sistema envió la tarea a la persona.    Fecha final prevista: Es la fecha límite que tiene la persona para efectuar el trámite

especificado por la tarea.    Control de paginación: Son botones que permiten recorrer la lista de tareas cuando esta

supera el número de registros que pueden presentarse en la pantalla. Están ubicados en la parte inferior de la pantalla y se conocen como “Anterior”, “Siguiente” o combo numérico.  

Botón Anterior: Al presionar este botón, se realiza un desplazamiento a la página inmediatamente anterior.  

 

Botón Siguiente: Al presionar este botón, se avanza a la siguiente página en la lista de tareas. 

 

Combo numérico: Indica el número de página que la persona está viendo en pantalla. Al desplegar el combo y seleccionar un número diferente el sistema lo llevará a la página escogida

Page 5: Programa

Cerrar Sesión: Mediante esta opción se invalida la sesión actual de la persona y se presenta nuevamente la pantalla para el establecimiento de una nueva sesión. La captura de información que no haya sido grabada al momento del cierre de sesión no será guardada por el sistema. Si la persona desea continuar con los servicios, deberá reingresar nuevamente al portal.   

Las alarmas y tareas que aparecen en esta bandeja cuando la persona aún no se ha autenticado, son de interés general a todo visitante del portal de la DIAN. 

Menú: En ésta área se presentan el conjunto de servicios informáticos electrónicos disponibles  para el usuario. Este responde a una estructura de árbol que se va armando dependiendo de los trámites a los cuales el interesado autenticado tiene acceso.  Es también conocido como el menú de servicios MUISCA.   

  Contenido: Es el área en la cual se presentan las diferentes pantallas sobre las

cuales deben interactuar los interesados en ejercicio de sus funciones. También se emplea para presentar las opciones anidadas del menú con estructura de árbol junto con un texto informativo del contenido de dicha opción.   

Page 6: Programa
Page 7: Programa

Dependiendo del tipo de ventana seleccionado, el contenido de los ficheros será diferente. En el directorio igep/doc/plantillasTipo hay un modelo base a seguir de cada uno de los ficheros. En la siguiente tabla aparecen los diferentes patrones con los nombres de ficheros que deberemos buscar.

Patrónplantilla Patrón Tabular / Tabular sin búsqueda P1M2(FIL-LIS) / P1M1(LIS) Patrón Registro / Registro sin búsqueda P1M2(FIL-EDI) / P1M1(EDI) Patrón Tabular-Registro P1M2(FIL-LIS-EDI) MD Maestro Tabular Detalle Registro P2M2(FIL-LIS)M1(EDI) MD Maestro Registro Detalle Registro P2M2(FIL-EDI)M1(EDI) MD Maestro Registro Detalle Tabular P2M2(FIL-EDI)M1(LIS) MD Maestro Registro Detalle Tabular-Registro P2M2(FIL-EDI)M1(LIS-EDI)

Page 8: Programa

En primer lugar tenemos que crear tantos ficheros como paneles aparezcan en la pantalla. Si se trata de una ventana con varios paneles dependientes se debe consultar la página que indica como crear un maestro detalle. Si la ventana incluye un árbol, puedes consultar los pasos a seguir aquí. En caso contrario, lo que debemos hacer es crear un archivo php por cada panel (generalmente sólo uno) en la carpeta actions de nuestra estructura. En este archivo se creará una clase que heredará de gvHidraForm_DB que contiene el comportamiento general de un mantenimiento común (inserciones, modificaciones y borrados) contra un SGBD relacional. Un ejemplo tipo de esta clase podría ser el siguiente:<?php /* CLASE ESPECIFICA DEL PANEL Q MANEJA TINV_ESTADOS */ class TinvEstados extends gvHidraForm_DB { function TinvEstados() { /*manejador de conexión*/ $conf = ConfigFramework::getConfig(); $dsn = $conf->getDSN('dsn_id'); //Las tablas sobre las que trabaja $nombreTablas= array('tinv_estados'); parent::__construct($dsn,$nombreTablas); //La select que mostramos $this->setSelectForSearchQuery("SELECT cestado as \"codigoEstado\", destado as \"descEstado\" FROM tinv_estados"); //El orden de presentación de los datos $this->setOrderByForSearchQuery("1"); /* Añadimos los Matching - Correspondecias elemento TPL <-> campo de BD */ $this->addMatching("filCodigoEstado","cestado","tinv_estados"); $this->addMatching("filDescEstado","destado","tinv_estados"); $this->addMatching("codigoEstado","cestado","tinv_estados"); $this->addMatching("descEstado","destado","tinv_estados"); } } ?>

Page 9: Programa

El siguiente paso es indicarle a phrame que clase se va a encargar de realizar las distintas operaciones del panel y donde se debe ir dependiendo del resultado de la operación realizada. Para ello editamos el fichero mappings.php que se encuentra en el directorio include de la aplicación y añadimos las operaciones que correspondan a dicho panel. En primer lugar tenemos que utilizar la función _AddMapping que permite especificar que clase se encargará de gestionar que operación. De esta función los únicos parámetros importantes son los dos primeros. El primero indica el nombre de la operación. Éste está compuesto por el nombre del panel y, separado por dos subguiones, el nombre de la acción en si. El segundo parámetro de esta función _AddMapping indica el nombre de la clase que manejará estas operaciones (en el ejemplo TinvEstados). Por otro lado debemos indicarle a phrame donde debe volver (a que dirección) según el resultado de la operación. Para ello debemos utilizar la función _AddForward. Las acciones genéricas tienen unos retornos fijos que dependerán del resultado de la operación. Las acciones particulares tendran tantos retornos como el programador crea conveniente. A continuación mostramos la parte del mappings que correspondería a nuestro ejemplo:/*Estados*/ $this->_AddMapping('TinvEstados__operarBD', 'TinvEstados', '', 'IgepForm', 0); $this->_AddForward('TinvEstados__operarBD', 'correcto', 'index.php?view=views/tablasMaestras/p_estados.php&panel=listar'); $this->_AddForward('TinvEstados__operarBD', 'sinDatos', 'index.php?view=views/tablasMaestras/p_estados.php&panel=buscar'); $this->_AddMapping('TinvEstados__cancelarTodo', 'TinvEstados', 'index.php?view=views/mantenimientoFicha.php', 'IgepForm', 0); $this->_AddForward('TinvEstados__cancelarTodo', 'correcto', 'index.php?view=views/tablasMaestras/p_estados.php'); $this->_AddMapping('TinvEstados__iniciarVentana', 'TinvEstados', '', 'IgepForm', 0); $this->_AddForward('TinvEstados__iniciarVentana', 'correcto', 'index.php?view=views/tablasMaestras/p_estados.php'); $this->_AddForward('TinvEstados__iniciarVentana', 'incorrecto', 'index.php?view=igep/views/aplicacion.php'); $this->_AddMapping('TinvEstados__buscar', 'TinvEstados', '', 'IgepForm', 0); $this->_AddForward('TinvEstados__buscar', 'correcto', 'index.php?view=views/tablasMaestras/p_estados.php&panel=listar');

Page 10: Programa

A continuación debemos crear un archivo php en el directorio views que controle la presentación. Este archivo, que es al que hace referencia la URL del mappings.php, contiene las asignaciones de los datos a la tpl. Si se trata de un comportamiento genérico, instanciando las clases IgepPantalla e IgepPanel con los argumentos pertinentes, se realizan las asignaciones a los valores comunes de las tpls quedando para el programador las asignaciones propias de la pantalla. Concretamente tendra que activar los modos de cada uno de los paneles de la ventana (método activarModo). A continuación mostramos un fichero de ejemplo de una ventana con un panel de dos modos:<?php global $g_aplicacion; //Creamos una pantalla $comportamientoVentana= new IgepPantalla(); //Creamos un panel $panel1 = new IgepPanel('TinvEstados',"smty_datosTabla"); //Activamos las pestañas que necesitamos $panel1->activarModo("fil","estado_fil"); $panel1->activarModo("lis","estado_lis"); //Agregamos el panel a la ventana $comportamientoVentana->agregarPanel($panel1); //Realizamos el display $s->display('tablasMaestras/p_estados.tpl'); ?>

Page 11: Programa

Creamos la tpl de la pantalla en el directorio plantillas de la aplicación. En ella creamos los componentes necesarios con los nombres correspondientes. En cada uno de los paneles modificamos el nombre de las acciones haciendolos corresponder con los que hemos creado en el mappings.En estos ficheros hay que tener las siguientes precauciones:

Los identificadores de campos pueden estar en cualquier combinación de mayúsculas y minúsculas, aunque no debe haber dos donde sólo cambie esto (es decir, case-insensitive).

Hay que evitar poner atributos o tags innecesarios, ya que eso se traduce en una página HTML de mayor peso. Por ejemplo, si una columna es oculta, no tiene sentido indicar su tamaño, obligatoriedad, ...

Los carácteres especiales como acentos o eñes conviene ponerlos usando entidades html, para que no hay problemas con la codificación.

No conviene usar el carácter '_' en las tpls. Mejor darle otro nombre mediante alias en la select.

Cuando en la tpl exista una ficha ({CWFicha}) habrá que distribuir los campos dentro de ella. En principio si son pocos campos con un simple salto de línea (<br>) se podrían dibujar, pero cuando se complica más se creará una tabla con los parámetros que se indican en el ejemplo, y luego distribuir los campos en celdas. <table class="formularios" width="100%" cellspacing="2" cellpadding="2">

Delante del primer campo de la celda no debemos poner ningún espacio en blanco (&nbsp;)<tr>     <td>          {CWCampoTexto ...     </td> </tr> Solamente se pondrá en el caso de que se sitúen dos campos en una misma celda; así dejaríamos un espacio entre ellos. Ejemplo:<tr>     <td> {CWCampoTexto ...}&nbsp;{CWCampoTexto ...}     </td> </tr>

Page 12: Programa

Ejemplo completo de una plantilla, hay que destacar que es importante no repetir identificadores de elementos de pantalla (nombres de los campos) dentro de una misma TPL, como vemos en el ejemplo, los conceptos estado y descripción estado corresponden a los campos filCodigoEstado y filDescEstado{CWVentana tipoAviso=$smty_tipoAviso codAviso=$smty_codError descBreve = $smty_descBreve textoAviso=$smty_textoAviso} {CWBarra usuario=$smty_usuario codigo=$smty_codigo} {CWMenuLayer name="$smty_nombre" cadenaMenu="$smty_cadenaMenu"} {/CWBarra} {CWMarcoPanel conPestanyas="true"} <!--*********** MODO fil ******************--> {CWPanel id="fil" action="buscar" method="post" estado="$estado_fil" claseManejadora="TinvEstados"} {CWBarraSupPanel titulo="Estados de los bienes"} {CWBotonTooltip imagen="04" titulo="Limpiar campos" funcion="limpiar" actuaSobre="ficha"} {/CWBarraSupPanel} {CWContenedor} {CWFicha} <br> &nbsp;&nbsp;{CWCampoTexto nombre="filCodigoEstado" size="3" editable="true" textoAsociado="Código" dataType=$dataType_TinvEstados.filCodigoEstado} <br><br> &nbsp;&nbsp;{CWCampoTexto nombre="filDescEstado" size="10" editable="true" textoAsociado="Descripción" dataType=$dataType_TinvEstados.filCodigoEstado} <br><br> {/CWFicha} {/CWContenedor} {CWBarraInfPanel} {CWBoton imagen="50" texto="Buscar" class="boton" accion="buscar" } {/CWBarraInfPanel} {/CWPanel} <!-- ****************** MODO lis ***********************--> {CWPanel id="lis" tipoComprobacion="envio" action="operarBD" method="post" estado="$estado_lis" claseManejadora="TinvEstados"} {CWBarraSupPanel titulo="Estados de los bienes"} {CWBotonTooltip imagen="01" titulo="Insertar registros" funcion="insertar" actuaSobre="tabla"} {CWBotonTooltip imagen="02" titulo="Modificar registros" funcion="modificar" actuaSobre="tabla"} {CWBotonTooltip imagen="03" titulo="Eliminar registros" funcion="eliminar" actuaSobre="tabla"} {/CWBarraSupPanel} {CWContenedor} {CWTabla conCheck="true" conCheckTodos="true" id="Tabla1" numPagInsertar="1" numFilasPantalla="10" datos=$smty_datosTabla} {CWFila tipoListado="false"} {CWCampoTexto nombre="codigoEstado" textoAsociado="Cód. Estado." longitudMaxima="2" editable="nuevo" size="2" obligatorio="true"} {CWCampoTexto nombre="descEstado" textoAsociado="Desc. Estado." longitudMaxima="8" editable="true" size="12"} {/CWFila} {CWPaginador enlacesVisibles="3"} {/CWTabla} {/CWContenedor} {CWBarraInfPanel} {CWBoton imagen="41" texto="Guardar" class="boton" accion="submit"} {CWBoton imagen="42" texto="Cancelar" class="boton" accion="cancelar" action="cancelarTodo"} {/CWBarraInfPanel} {/CWPanel} <!-- ****************** PESTAÑAS ************************--> {CWContenedorPestanyas} {CWPestanya tipo="fil" estado=$estado_fil} {CWPestanya tipo="lis" estado=$estado_lis} {/CWContenedorPestanyas} {/CWMarcoPanel} {/CWVentana}

Page 13: Programa

permite a los diferentes usuarios considerar la información como un recurso corporativo que carece de dueños específicos.

si existen dos o más archivos con la misma información, los cambios que se hagan a éstos deberán hacerse a todas las copias del archivo de facturas.

Permite compartir información. Permite mantener la integridad en la

información

Page 14: Programa