Академический Документы
Профессиональный Документы
Культура Документы
Ttulo
Curso Acadmico
2012-2013
El autor
Universidad de La Rioja, Servicio de Publicaciones, 2013
publicaciones.unirioja.es
E-mail: publicaciones@unirioja.es
UNIVERSIDAD DE LA RIOJA
Realizado por
Naziha Ayachi Majait
Dirigido por
Francisco Jos Garca Izquierdo
Resumen
El presente Trabajo Fin de Grado consiste en el desarrollo de una aplicacin web para la
gestin de los proyectos en la empresa de servicios informticos Suma Info S.L. Partiendo de
una aplicacin web que usa la tecnologa JavaServer Pages y una base de datos en Oracle, se
construir otra nueva usando JavaServer Faces, Facelets, Richfaces, Hibernate y Spring, que
se monta sobre un nuevo modelo de datos en MySQL.
La funcionalidad de la nueva aplicacin consiste en gestionar los proyectos de la empresa,
mantener los tiempos que registran los empleados para cada uno de los proyectos en los que
participan, as como los gastos y honorarios generados durante el proceso de ejecucin y su
asignacin a los proyectos. Adems del mantenimiento del personal de la empresa y los
clientes con los que interacta, debe gestionar todas las facturaciones realizadas para
contabilizar los gastos y honorarios producidos por los proyectos activos en la empresa.
Una de las mayores dificultades de este proyecto fue el manejo de las distintas tecnologas,
totalmente desconocidas para m hasta el inicio del trabajo, lo que supuso un largo proceso
de formacin. Uno de los principales problemas fue la integracin de las tecnologas
utilizando Spring Framework, sobre todo en el caso de Hibernate. La construccin del
proyecto con Maven y la gestin de las libreras fue otro punto problemtico durante el
desarrollo.
Otro aspecto clave fue comprender y aplicar todos los mecanismos que ofrece Spring Security
para garantizar la seguridad de la aplicacin.
Mi mayor reto fue hacer frente a todos los problemas surgidos, desde la fase de recogida de
requisitos, pasando por el diseo de la arquitectura hasta llegar a su completa
implementacin y en buscar las soluciones que ms se adapten a cada caso y aplicarlas para
ver que el problema se resuelve.
El resultado obtenido es una aplicacin web que ampla la funcionalidad de la antigua y que
ha sido desarrollada con una tecnologa ms actual que facilitar su mantenimiento y
evolucin.
Abstract
The present dissertation consists of the development of a web application for the
management of projects in the company of computer services Suma Info S.L. Starting with
the web application that employs the JavaServer Pages and an Oracle database, a new
database is constructed using JavaServer Faces, Facelets, Richfaces, Hibernate and Spring,
which is assembled on a new model of data in MySQL.
The usefulness of the new application is based on the management of the projects of the
company, maintaining the time that the employees record in each one of the projects that
they take part in, as well as the expenses and the fees generated throughout the process of
execution and assignation of the projects. In addition to the maintenance of the personnel
employees, and the clients with whom they interact; it must also arrange all the billing
realized for the accountancy of the expenses and the fees produced by the active projects of
the company.
One of the most difficult aspects of this project was the handling of the diverse technology,
totally unknown to me until the beginning of the project; and this supposed a long process of
instruction. One of the main problems was the integration of technology applying Spring
Framework, principally in the case of Hibernate. The formation of the project with Maven,
and the administration of the Java libraries was another problematic point in the
development of the project.
Another key aspect was the understanding and the application of all the mechanisms that
Spring Security offers to warranty the security of the application.
My greatest challenge was tackling all the problems that emerged, from the phase of
collection of requirements, going through the design of the architecture, until reaching its
complete implementation and search for the solutions that best adapts with each case, and
their application to notice that the problem is solved.
The result obtained is a web application that extends the functionality of the former one, and
that has been established with a more modern technology that facilitates its maintenance
and evolution.
Agradecimientos
NDICE
INTRODUCCIN ....................................................................................................................... 1
1.
1.
2.
ANLISIS ............................................................................................................................ 3
1.1. Especificacin de requisitos funcionales ...................................................................................... 3
1.1.1. Gestin de usuarios y personal de la empresa ................................................................. 3
1.1.2. Mantenimiento de proyectos ................................................................................................... 4
1.1.3. Mantenimiento de tiempos ....................................................................................................... 5
1.1.4. Gestin de gastos .......................................................................................................................... 6
1.1.5. Gestin de facturas ....................................................................................................................... 6
1.1.6. Mantenimiento de los clientes ................................................................................................ 7
1.2. Especificacin de los requisitos no funcionales......................................................................... 7
1.2.1. Requerimientos tecnolgicos .................................................................................................. 7
1.2.2. Seguridad ......................................................................................................................................... 7
1.3. Modelo del dominio ............................................................................................................................... 8
1.3.1. Clases identificadas ...................................................................................................................... 8
1.3.2. Diagrama de clases ....................................................................................................................... 9
2.
DISEO ............................................................................................................................ 10
2.1. Modelo de datos .................................................................................................................................... 10
2.1.1. Antiguo modelo de datos ......................................................................................................... 10
2.1.1.1. Diagrama .............................................................................................................................. 10
2.1.1.2. Entidades .............................................................................................................................. 11
2.1.1.3. Deficiencias .......................................................................................................................... 12
2.1.2. Modelo de datos actual ............................................................................................................. 13
2.1.2.1. Requisitos ............................................................................................................................. 13
2.1.2.2. Migracin de Oracle a MySQL ...................................................................................... 14
2.1.2.3. Diagrama .............................................................................................................................. 14
2.1.2.4. Diferencias respecto del antiguo modelo ................................................................ 16
2.2. Arquitectura software ........................................................................................................................ 17
2.2.1. Capa de presentacin ................................................................................................................ 17
2.2.2. Capa de lgica de negocio........................................................................................................ 17
2.2.3. Capa de persistencia .................................................................................................................. 18
2.2.4. Comunicacin entre las capas ............................................................................................... 19
3.
IMPLEMENTACIN ...................................................................................................... 23
3.1. Tecnologas empleadas ...................................................................................................................... 23
3.1.1. Maven .............................................................................................................................................. 23
3.1.2. Hibernate ....................................................................................................................................... 24
3.1.3. Richfaces......................................................................................................................................... 25
3.1.4. Facelets ........................................................................................................................................... 25
3.1.5. Spring............................................................................................................................................... 26
3.1.6. Informes con Jasperreports .................................................................................................... 26
3.2. Validacin y conversin..................................................................................................................... 28
3.3. Seguridad ................................................................................................................................................. 30
3.3.1. Autenticacin................................................................................................................................ 30
3.3.2. Autorizacin.................................................................................................................................. 33
3.4. El proceso de trabajo .......................................................................................................................... 34
3.4.1. La vista JSF..................................................................................................................................... 34
3.4.2. El Controlador .............................................................................................................................. 35
3.4.3. El Servicio ...................................................................................................................................... 37
3.4.4. El DAO.............................................................................................................................................. 37
3.5. Pruebas ..................................................................................................................................................... 38
4.
CONCLUSIONES ..................................................................................................................... 45
Posibles mejoras............................................................................................................................................. 45
BIBLIOGRAFA ...................................................................................................................... 46
NDICE DE FIGURAS
Figura 1: Diagrama de clases del modelo ................................................................................................... 9
Figura 2: Diagrama del antiguo modelo de datos .................................................................................. 10
Figura 3: Diagrama del modelo de datos actual ..................................................................................... 15
Figura 4: Diagrama de algunas clases de persistencia ........................................................................ 18
Figura 5: Comunicacin entre DAOs ........................................................................................................... 19
Figura 6: Flujo de aadir nuevo proyecto ............................................................................................. 20
Figura 7: Prototipo de la interfaz de login ................................................................................................ 21
Figura 8: Prototipo del esqueleto general ................................................................................................ 21
Figura 9: Prototipo de pginas con listado............................................................................................... 22
Figura 10: Prototipo de pginas con formulario.................................................................................... 22
Figura 11: Dependencias del proyecto ...................................................................................................... 23
Figura 12: Plantilla jrxml de facturas...................................................................................................... 27
Figura 13: Ciclo de vida JSF............................................................................................................................. 28
Figura 14: Proceso de autenticacin en Spring Security .................................................................... 32
Figura 15: Proceso de trabajo en la aplicacin ....................................................................................... 34
Figura 16: Descomposicin de tareas ........................................................................................................ 40
Figura 17: Diagrama de Gantt ........................................................................................................................ 41
Figura 18: Grfico de comparacin de tiempos...................................................................................... 43
NDICE DE TABLAS
Tabla 1: Entidades del antiguo modelo ..................................................................................................... 12
Tabla 2: Leyenda de smbolos del diagrama ER..................................................................................... 14
Tabla 3: Comparacin entre tiempos ......................................................................................................... 42
INTRODUCCIN
1. Visin general
En el presente proyecto se parte de una aplicacin ya disponible y puesta en
funcionamiento para la gestin de proyectos en la empresa Suma Info S.L.
La antigua aplicacin se basa en la tecnologa JavaServer Pages y usa una base de datos
en Oracle. Uno de los problemas que presenta esta aplicacin es que su modelo de
datos no corresponde con lo que realmente se pretende modelar, ya que slo almacena
tablas aisladas sin ninguna interconexin. Esto puede suponer incongruencias en la
base de datos. Adems de todo lo anterior, la aplicacin web posee una interfaz de
usuario poco usable.
El objetivo principal de este proyecto es lograr la construccin de una nueva aplicacin
que se apoya sobre un nuevo modelo de datos, que suponga una mejora en el
rendimiento respecto de la aplicacin actual y que facilite su mantenimiento posterior.
El proyecto tiene su punto de partida en la redefinicin de los requisitos de la nueva
aplicacin y su modelo de datos. Esta fase empieza por una recoleccin de los
requerimientos mediante varias reuniones con el cliente.
Asentndose sobre una base slida de anlisis, en su segunda fase se disearon todos
los elementos necesarios para la construccin de un nuevo sistema completo que se
ajusta a las necesidades del cliente.
Despus de un largo proceso de formacin en todas las tecnologas que venan
impuestas por el cliente para ser usadas en la fase de desarrollo de la aplicacin, con el
fin de facilitar este proceso y el mantenimiento de la nueva aplicacin de gestin. La
fase de implementacin empieza con el uso del estndar JavaServer Faces (JSF) que
resuelve varios problemas que se planteaban al principio, el sistema simplificado de
presentacin Facelets que aporta mayor libertad al anterior en cuanto al diseo y la
librera de componentes Richfaces para dotar los componentes de capacidad Ajax sin la
necesidad de escribir ni una lnea de cdigo JavaScript y su completa integracin en el
ciclo de vida JSF.
Con el uso de Spring Framework el coste de integracin se ha reducido de forma
drstica. El soporte para las anotaciones que brinda esta tecnologa, las nuevas
posibilidades para vincular los objetos con los que se trabaja, gracias al nuevo concepto
de inyeccin de dependencias y su gestin transparente para el usuario.
Si profundizamos en la arquitectura de esta aplicacin, nos encontramos con el motor
de persistencia Hibernate utilizado en el mapeo Objeto Relacional. Totalmente
integrable con Spring mediante las plantillas que ofrece este ltimo, lo que hace que la
labor del desarrollador se reduzca notablemente debido a su gestin de las conexiones
y transacciones con la base de datos.
1. ANLISIS
1.1. Especificacin de requisitos funcionales
A la vista de los resultados obtenidos de las reuniones mantenidas con el cliente, he
decidido especificar el funcionamiento de la aplicacin dividido en seis partes
agrupadas por reas:
Usuario tcnico: podr llevar una gestin de sus tiempos, que consiste en
registrar el tiempo que dedica a un proyecto y modificar o eliminar dichos
registros. Por otra parte consultar la ficha de los proyectos de la empresa y
mantener sus gastos.
De los honorarios incluidos en una factura, se recoge la tarea realizada que se elige de
la lista de tipos de trabajo realizado. Se recoge tambin la fecha de registro, el nmero
de horas dedicadas, el tcnico que realiz la tarea, el importe que se calcula a partir de
las horas y la tarifa del tcnico, la factura con la que se relaciona el honorario y una
descripcin ms detallada del trabajo que se ha llevado a cabo. Un usuario
responsable podr acceder al borrado de los honorarios incluidos en una factura.
Se consideran datos obligatorios para la creacin de una factura, su fecha de creacin,
nmero y el proyecto que se est facturando.
Permitir a los usuarios responsables la modificacin y borrado de las facturas que
haya generado anteriormente. No se permite la modificacin del nmero de factura ni
la fecha de su creacin.
Un usuario responsable podr visualizar todas las facturaciones realizadas y ver sus
detalles, as como generar informes con los mismos en formato PDF Los datos que se
pueden consultar de cada factura son: la fecha, proyecto, gastos incluidos, honorarios
y el importe total.
1.2.2. Seguridad
Ser necesario asegurar que las personas ajenas al sistema no puedan acceder a l. Y
para aquellos usuarios que tengan privilegios de acceso, comprobar que lo hacen en
aquellas partes de la aplicacin donde tienen vigencia sus permisos.
2. DISEO
2.1. Modelo de datos
Como he comentado en el captulo anterior, parto de una base de datos ya construida,
sobre la cual se apoya la antigua aplicacin web. En este apartado, voy a empezar por
explicar cmo estaba esta base de datos al principio; detallar todos sus defectos as
como las medidas tomadas en el nuevo diseo para subsanarlos.
2.1.1.
El antiguo modelo de datos estaba compuesto por 18 tablas sin ninguna restriccin de
integridad referencial entre ellas, como se puede observar en el diagrama que se refleja
en la Figura 2. Incluso, de forma natural, se podran deducir relaciones N:N entre algunas
de las tablas, relaciones que no estaban definidas. El Gestor de Bases de Datos utilizado
era Oracle.
2.1.1.1. Diagrama
10
2.1.1.2.
Entidades
En la siguiente tabla se detallan todas las entidades que forman el antiguo modelo de datos
de la empresa. De cada tabla se incluye el nombre, sus atributos y una breve descripcin
de su contenido.
Tabla
CSIPROCE
Atributos
Descripcin
CSIPLADE
-- Identificador
- Denominacin
CSITITRA
- Identificador
- Denominacin
CSITECNI
- Identificador
- Nombre
CSICATEG
- Cdigo
- Denominacin
- Identificador
- Denominacin
-Contiene informacin de
categoras a los empleados.
- Cdigo de la categora
- Ao
- Importe.
CSITEPRO
CSIEMPOR
--
--
CSITIPRO
CSIESTPR
CSICATEC
CSITARCA
CSIUSAUT
CSITIEMP
Identificador
Contrasea
Tipo
Cdigo del tcnico
Identificador
Fecha
Nmero
Cdigo del proyecto
Descripcin
Nmero de horas
Cdigo del tipo de
trabajo
las
asignaciones
de
11
CSIGASTO
CSICONTA
CSIORGAN
CSIFACTU
CSISEPRO
Identificador
Denominacin
Direccin
Cdigo Postal
Municipio
Provincia
Pas
Identificador
Nmero
Cdigo proyecto
Nmero de horas
facturadas
Importe de honorarios
Importe de gastos
IVA
Identificador
Denominacin
Organismo (cliente)
Cdigo plataforma
Cdigo tipo proyecto
Nmero de empleados
Nmero de horas
Fecha de propuesta
Fecha de aprobacin
Fecha de inicio
Fecha fin prevista
Honorarios
Gastos
Responsable del
proyecto
--
2.1.1.3.
Deficiencias
El primer defecto que presenta este modelo radica en la ausencia de relaciones entre las
distintas tablas que componen el mismo.
La presencia de algunas tablas que realmente no se utilizan por la aplicacin y tampoco
son necesarias para llevar a cabo otras funciones.
En la tabla de las facturas (CSIFACTU) se recoge un importe de gastos, lo que puede
suponer interpretaciones errneas sobre su origen. Lo mismo sucede con el importe de los
honorarios.
12
2.1.2.1.
Requisitos
En este apartado se recogen los requisitos que debe cumplir la nueva base de datos,
tomando como punto de partida la antigua de Oracle. Por ello, no se realiza un diseo
conceptual completo del dominio, sino que se asume el esquema lgico heredado,
amplindolo o modificndolo segn los nuevos requisitos.
Estos son los requisitos ms relevantes tomados en cuenta en el proceso de diseo del
nuevo modelo:
La empresa registra todos los tiempos dedicados por los empleados, aunque
posteriormente procede a facturarlos resumidos por tcnico y actividad. Para ello,
se desea llevar un control de los honorarios facturados en un proyecto por los
trabajos realizados en el mismo.
En las facturas pueden optar por incluir varios gastos que se hayan generado
durante la realizacin de un proyecto.
13
2.1.2.2.
Una vez realizados todos los cambios necesarios comentados en el apartado anterior y
establecidas las relaciones entre las distintas tablas que componen el nuevo modelo, se
migraron los datos de la antigua base de datos de Oracle a la nueva de MySQL. El proceso
de migracin consisti en adaptar los datos del antiguo modelo con la ayuda de un
programa disponible en la empresa, que genera los Script para la poblacin de la nueva
base de datos. De esta tarea se encarg Eduardo Fras Lara (mi tutor en la empresa).
2.1.2.3.
Diagrama
Smbolo
Significado
Indica que el atributo forma parte de una clave primaria.
Indica que el atributo forma parte de una clave alternativa (Unique).
Indica que el atributo es una clave fornea que referencia otra tabla.
Indica que el atributo forma parte de un ndice de la base de datos.
Indica el sentido de una relacin entre dos tablas y el atributo que
referencia a la segunda tabla.
El atributo que tiene este smbolo significa que se referencia por otra(s)
tabla(s).
Este smbolo slo o combinados con otros, indica que el atributo no
puede ser NULL.
Indica que la tabla que est en este extremo participa con varios en la
relacin.
Indica que la tabla que se encuentra en este extremo participa con uno
en esta relacin.
Tabla 2: Leyenda de smbolos del diagrama ER
14
15
2.1.2.4.
Aadir la tabla CSITIGAS que almacena los distintos tipos de gasto en los que puede
incurrir la empresa durante el desarrollo de sus proyectos, y relacionarla con la tabla
CSIGASTO.
Dado que una factura puede tener ninguno o varios gastos asignados. He aadido la
tabla CSIGAFAC que relaciona y agrega un gasto (CSIGASTO) a una factura (CSIFACTU).
Aadir las nuevas tablas que recogen la informacin de localidad (CSILOCAL), provincia
(CSIPROV) y pas (CSIPAIS). Con el objetivo de facilitar el proceso de introduccin de
datos.
Aadir la tabla CSIHONOR con los atributos cdigo, tcnico, concepto, factura, fecha,
nmero de horas facturadas y una breve descripcin de la tarea llevada a cabo. Esta
tabla almacena los trabajos realizados por los empleados y facturados para un
proyecto en concreto.
Dado que los nicos usuarios de la aplicacin sern empleados de la empresa (tcnicos
o responsables) se elimina la tabla (CSIUSAUT), ya que la relacin que guarda con la de
tcnicos es uno a uno; y pasan sus atributos a formar parte de la tabla (CSITECNI). De
esta forma cualquier empleado dispondr de una clave y un nombre de usuario para
acceder a la aplicacin.
Para evitar eliminar los datos de los tcnicos y as perder informacin relacionada con
los mismos, y tambin mantener un control de los que estn activos o no, he aadido la
fecha de baja en la tabla (CSITECNI) que indica si un tcnico est dado de baja o no.
Podemos observar que en todas las tablas se introdujo un identificador cdigo como
clave primaria, aunque en algunas no hace falta. Todo ello fue para adaptar el nuevo
modelo al uso que se har de l, ms concretamente en el Mapeo Objeto Relacional (ORM)
en el que se usar Hibernate.
Este ltimo gestiona las claves primarias compuestas como una clase aparte, algo que
puede dificultar nuestro problema an ms. Por ello, he tomado la decisin de crear
identificadores autoincrementales y gestionar las operaciones que se realizan sobre la
base de datos con la ayuda de las claves candidatas.
16
Vista: las vistas JSF en formato XHTML para mostrar las interfaces de usuario.
Controlador: las clases Controller de Spring que se encargan de recoger los datos
introducidos por el usuario y pasarlos a la capa de lgica de negocio y
posteriormente redireccionar los resultados obtenidos hacia otras pginas JSF.
17
Normalmente en esta capa se implementan las cuatro operaciones bsicas (CRUD) para
cada una de las clases, lo que hace que el cdigo escrito para una se repita tantas veces
como clases tenga esta capa. Para evitar que esto ocurra voy a trabajar con un DAO
genrico y abstracto, de manera que cada clase que extiende este DAO no tendr la
obligacin de volver a reescribir el cdigo de estas operaciones. Todas las clases de esta
capa se denotan por la anotacin @Repository de Spring.
De esta manera cada DAO accede a las operaciones bsicas definidas en el DAO genrico,
como se observa en la siguiente figura; pudiendo implementar otras especficas.
Los DAOs se declaran con Scope Singleton que asegura que slo exista una instancia de
este bean por el contenedor de Spring. Este ltimo crea una instancia nica de todos los
DAOs y cada vez que recibe una llamada para obtener ese bean, responde con la misma
instancia.
18
19
20
Pie de pgina.
21
22
3. IMPLEMENTACIN
3.1. Tecnologas empleadas
3.1.1. Maven
Utilizado para crear la estructura de directorios del proyecto. Tambin se encarga de
descargar las dependencias que se indican en el fichero pom.xml (libreras usadas en el
proyecto) as como las dependencias de estas ltimas.
Maven utiliza una matriz de repositorios remotos que le permite localizar y descargar todo
lo necesario para generar el proyecto. Adems de estos repositorios remotos tambin
existe uno local que utiliza Maven como cach evitando la descarga en las siguientes
generaciones del proyecto y as reducir el tiempo que supondra volver a descargarse
todas las libreras de Internet.
En la siguiente imagen se pueden intuir grficamente todas las dependencias del proyecto
csi_sumainfo, algunas son directas y otras indirectas.
23
3.1.2. Hibernate
Es el Framework para el mapeo Objeto Relacional. Para llevar a cabo este proceso he
utilizado anotaciones en las entidades, con ello, voy a conseguir convertir los tipos de Java
a los definidos en la base de datos MySQL y viceversa, sin preocuparme de cmo lo
gestiona Hibernate internamente. Una de las ventajas que ofrece esta tecnologa es su
lenguaje de consultas HQL (Hibernate Query Lenguage) el cual es ms orientado a objetos.
Spring Framework nos provee de una clase plantilla llamada HibernateTemplate que nos
asegura que las sesiones sean abiertas y cerradas automticamente y hace que nuestras
llamadas participen en transacciones.
En mis DAOs voy a tener acceso directo a esta clase mediante el mtodo que heredan al
extender de la clase abstracta HibernateDaoSupport.
Para la integracin de Spring con Hibernate hay que definir el Session Factory de
Hibernate para el manejo de sesiones. En esta configuracin utilizaremos una clase que
contiene Spring en su mdulo ORM para la integracin con Hibernate:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configurationClass"
value="org.hibernate.cfg.AnnotationConfiguration" />
<property name="configLocation">
<value>classpath:${hibernate.cfg.file}</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
</props>
</property>
<property name="packagesToScan">
<list>
<value>com.sumainfo</value>
</list>
</property>
</bean>
Como podemos ver, la consulta se realiza sobre el objeto Factura y no se realiza sobre la
tabla CSIFACTU. Su manera peculiar de acceder a los atributos de la clase que no son
atributos de una tabla. Cabe mencionar tambin que HQL permite realizar consultas
parametrizadas.
En este proyecto, y aunque Hibernate ofrece la posibilidad de trabajar con SQL como
lengua de consultas, he optado por utilizar HQL debido a las mltiples ventajas que ofrece
frente al primero.
24
3.1.3. Richfaces
Utilizado en la construccin de las vistas junto con los componentes JSF. Richfaces permite
definir por medio de etiquetas de JSF diferentes partes de una pgina que se desea
actualizar con una solicitud AJAX y sincronizar automticamente con el rbol de
componentes JSF sin tener que recargar toda la pgina Web. Proporcionando as varias
opciones para enviar peticiones AJAX al servidor.
Re-Rendering:
Un atributo clave de Richfaces es reRender que permite indicar una zona en la pgina
que debera ser actualizada como respuesta a la interaccin AJAX. El valor de este atributo
debe ser un identificador de un componente JSF o una lista de identificadores.
En
el
ejemplo
siguiente
se
indica
que
los
componentes
JSF
nueva,tablaCategorias,nuevaTarifa son re-renderizables, incluyndose a continuacin,
como ejemplo, el componente tablaCategorias:
<a4j:commandButton value="Guardar" styleClass="boton"
action="#{controladorCategorias.insertarCategoria}"
reRender="nueva,tablaCategorias,nuevaTarifa" />
<rich:extendedDataTable selectionMode="single" id="tablaCategorias" >
Richfaces tambin permite organizar el flujo de una pgina dentro del componente
<a4j:include>. Gracias a este componente podemos sustituir el contenido de una pgina
por otro. El contenido se toma de la vista obtenida de la regla de navegacin definida en el
fichero de configuracin faces-config.xml.
En la pgina de clientes se incluye en primer lugar el listado de los clientes definido en la
vista listado.xhtml. Si el usuario accede a la opcin de crear o modificar un cliente, se
aade automticamente el cdigo de la vista que procede en cada caso, reemplazando de
esta manera el listado anterior.
<a4j:include viewId="/pages/clientes/listado.xhtml" ajaxRendered="true"/>
3.1.4. Facelets
Es un Framework para plantillas centrado en la tecnologa JSF, por lo que se integran de
manera muy fcil. Con el uso de Facelets podemos definir vistas para reutilizar varias
veces sin necesidad de volver a copiar el cdigo. Tambin permite el paso de parmetros
entre distintas vitas.
Mediante su componente <ui:composition> podemos envolver un conjunto de
componentes (JSF y Richfaces) para definir el contenido de una parte de la vista que
posteriormente se podr incluir en otras pginas en el componente <ui:include>, como
pueden ser el pie de la pgina, la cabecera y el men entre otros.
25
Por ejemplo, la definicin del pie de pgina utilizado en el desarrollo de las vistas JSF,
definido en el fichero footer.xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<rich:spacer width="50%" />
<h:outputText value=" 2013 - Suma Info S.L." style="font-size:
12px;color: #620f0f"/>
</ui:composition>
Esto hace posible la reutilizacin de este fragmento de cdigo en varias pginas como
sigue:
<f:facet name="footer">
<ui:include src="/pages/includes/footer.xhtml" />
</f:facet>
3.1.5. Spring
Est basado en un conjunto de mdulos que proporcionan todo lo necesario para
desarrollar una aplicacin empresarial. Su componente principal consiste en un contendor
de Beans que permite, mediante Inversin de Control (IoC), gestionar las instancias as
como su creacin y destruccin. Los componentes slo se encargan de declarar las
dependencias que necesitan y el contenedor se encarga de inicializar los componentes
necesarios antes de inyectar su referencia a quien la necesite.
La directiva @Autowired utilizada en el proyecto, inyecta las dependencias en Spring
buscando dentro del contexto un bean cuya clase coincide con el tipo de la variable. Para el
mismo propsito tenemos tambin a @Inject y @Resource.
Ejemplo de uso de la anotacin @Resource en el controlador de acceso para cargar el
AuthenticationManager declarado en el fichero de spring-security.xml:
@Resource(name = "authenticationManager")
private AuthenticationManager authenticationManager;
Manejo de transacciones.
Integracin con Hibernate.
Seguridad declarativa mediante anotaciones.
En Jasperreports los informes se definen en un fichero XML, el cual ser compilado por las
libreras Jasperreports y generar un fichero con la extensin .jasper que se utiliza para
rellenar y mostrar los informes finales.
En este caso utilic Ireport para generar las plantillas de los informes y compilarlos antes
de ser usados por la aplicacin. En estas plantillas se definen los datos, dnde y cmo se
van a incluir. Estos datos se obtienen mediante una conexin a la base de datos.
2) Genera el informe:
En esta parte, genero el informe tomando como base el archivo (plantilla
compilada) reporte.jasper, los parmetros, que en este caso no hay ninguno y la
conexin JDBC para obtener los datos.
if (params == null) {
params = new HashMap<String, Object>();
}
reportStream = faces.getExternalContext().getResourceAsStream(DIRECTORIO_FACTURAS
+ "reporte.jasper");
JasperPrint print = JasperFillManager.fillReport(reportStream, params,
connection);
27
29
3.3. Seguridad
Uno de los aspectos ms importantes que se han tenido en cuenta a la hora de desarrollar
esta aplicacin fue la seguridad. Entendiendo como tal la necesidad de saber que el
usuario es quien dice ser (autenticacin), y permitirle acceso slo a aquellos recursos
necesarios (autorizacin). Spring Security proporciona la funcionalidad necesaria para
adaptar los mecanismos de seguridad en aplicaciones Java utilizando caractersticas de
programacin orientada a aspectos.
3.3.1. Autenticacin
Consiste en determinar quin desea hacer uso del sistema y comprobar que es quien dice
ser. En Spring Security el AuthenticationManager es el encargado de validar la
combinacin nombre de usuario y contrasea, devolviendo los roles asociados a dicho
usuario.
La configuracin del AuthenticationManager se realiza en el fichero de configuracin de
spring-security.xml.
El elemento <authentication-manager> registra un gestor de autenticacin. En concreto
registra una instancia de ProviderManager, un gestor de autenticacin que delega su
responsabilidad en uno o ms proveedores de autenticacin.
Spring Security incluye la posibilidad de obtener los usuarios y permisos utilizando
ficheros XML, bases de datos JDBC, LDAP o simplemente declararlos en el fichero de
configuracin (spring-security.xml).
En esta aplicacin y para evitar que Spring acceda directamente al contenido de la base de
datos, he configurado un servicio mediante la implementacin del interfaz
UserDetailsService. Este interfaz describe un objeto que realiza el acceso a los datos con un
nico mtodo loadUserByUsername y devuelve un objeto de tipo UserDetails construido a
partir de los datos obtenidos, en caso contrario lanza una excepcin de tipo
UsernameNotFoundException. He aqu el cdigo del mtodo:
public UserDetails loadUserByUsername(String username) throws
UsernameNotFoundException, DataAccessException {
UserDetails user = null;
try {
Tecnico tecnico = tecnicoDAO.tecnicoByUser(username);
if (tecnico == null) {
throw new UsernameNotFoundException(username + " no encontrado");
}else{
// Se construye un nuevo usuario con los datos del tcnico obtenido
user = new User(tecnico.getUsuario(), tecnico.getClave(),
tecnico.isEnabled(),
tecnico.isAccountNonExpired(), tecnico.isCredentialsNonExpired(),
tecnico.isAccountNonLocked(), tecnico.getAuthorities()
);
}
} catch (PersistenciaException ex) {
Logger.getLogger(DetallesUsuarioService.class.getName()).log(Level.SEVERE,
null, ex);
}
return user; }
30
31
En la pgina entrada.xhtml de login, interesa que la solicitud se haga bajo el protocolo http
seguro ya que en ese formulario viaja la contrasea del usuario. Para ello, forzamos el uso
de https en la configuracin de Spring Security:
<intercept-url
pattern="/pages/entrada.xhtml"
channel="https"/>
access="permitAll"
requires-
De esta forma, cada vez que se produce una solicitud con formato /pages/entrada.xhtml,
Spring Security va a detectar que se requiere el uso del canal https y va a redirigir la
solicitud de forma automtica a travs de https.
32
3.3.2. Autorizacin
Una vez finalizado el proceso de autenticacin del usuario, entra en juego la parte del
sistema encargada de la autorizacin, con el fin de permitir que ste acceda slo a aquellos
recursos a los que tiene permiso. Para ello Spring Security intercepta todas las peticiones
http utilizando filtros y acta en consecuencia.
El acceso a un recurso no permitido puede acabar lanzando una excepcin de tipo
AccessDeniedException.
Para dejar el acceso a los recursos bien delimitado para cada rol de esta aplicacin, he
configurado en el fichero spring-security.xml los siguientes permisos:
1) PermitAll: para aquellos recursos a los que tienen acceso todos los usuarios
(autenticados o no), por ejemplo la pgina de login:
<intercept-url pattern="/pages/entrada.xhtml" access="permitAll" />
3) hasRole(el_rol): para aquellos usuario con el rol definido por la cadena el_rol.
Ejemplo, el contenido de la carpeta de facturas:
<intercept-url pattern="/pages/facturas/**" access="hasRole('R')"/>
33
34
En esta vista se sita el componente <rich:messages> para mostrar los mensajes de error
que se producen durante el proceso de validacin de los datos o los que devuelve el
controlador en caso de que se produzca un error.
<rich:messages layout="table" tooltip="true" title="Mensaje de error"
showDetail="false" showSummary="true" style="color: red">
<f:facet name="errorMarker">
<h:graphicImage value="/img/error.png" width="15px" height="15px"/>
</f:facet>
</rich:messages>
Una vez completado el formulario con todos los datos necesarios del proyecto, se enva la
solicitud de insercin al Controlador de proyectos al pulsar el botn Guardar, como se
observa en el atributo action del componente <a4j:commandButton>.
<a4j:commandButton styleClass="boton" value="Guardar"
action="#{controladorProyectos.insertarProyecto}" />
3.4.2. El Controlador
Se encarga de realizar todas las operaciones sobre proyectos, comunicando las vistas JSF
con los servicios de la capa de lgica de negocio.
Todos los controladores de la aplicacin son denotados por la directiva @Controller, que le
indica a Spring que sta clase sirve para manejar las peticiones y respuestas recibidas y
enviadas a los usuarios.
En el Controlador de proyectos, en su mtodo insertarProyecto, se encuentra el siguiente
cdigo:
35
@Autowired
private ProyectoService proyectoService;
36
3.4.3. El Servicio
El servicio de proyectos y en su mtodo saveProyecto se encarga de:
1) Generar un nmero de proyecto para el atributo idProyecto con la informacin
necesaria.
2) Comprobar que el proyecto no existe en la base de datos mediante una llamada al
DAO especfico de proyectos con el mtodo find(). Este mtodo busca y encuentra
un proyecto por su clave candidata (denominacin y cliente). Y por ltimo llama al
DAO que se encarga del mapeo Objeto Relacional de los proyectos.
3.4.4. El DAO
Como se trata de una operacin bsica, el DAO genrico ser el encargado de realizarla:
public Integer save(T objecto) throws PersistenciaException {
Integer id = null;
try {
id = (Integer) getHibernateTemplate().save(objecto);
getHibernateTemplate().flush();
} catch (DataIntegrityViolationException ex) {
this.logger.error(ex);
throw new PersistenciaException(PersistenciaExceptionCode.INSERT_FAILED,
ex);
} catch (DataAccessException ex) {
this.logger.error(ex);
throw new PersistenciaException(PersistenciaExceptionCode.INSERT_FAILED,
ex);
} catch (Exception ex) {
this.logger.fatal(ex);
throw new PersistenciaException(PersistenciaExceptionCode.INSERT_FAILED,
ex);
}
return id;
}
37
3.5. Pruebas
Para realizar las pruebas unitarias he utilizado Spring TestContext Framework que
proporciona un soporte de integracin con JUnit4 a travs de un Runner a medida. En este
proyecto la integracin la realic a travs de SpringJUnit4ClassRunner, que posibilita la
realizacin de pruebas unitarias o de integracin, la carga del contenedor de Spring y la
inyeccin de dependencias en las clases de test.
He aqu la configuracin de la clase que realiza las pruebas sobre el DAO de clientes:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"file:src/main/webapp/WEB-INF/spring-config.xml"})
Una de las pruebas ms significativas que dio lugar a la toma de nuevas decisiones en la
implementacin de la capa de persistencia, fue la siguiente:
Al principio el cdigo de los mtodos find() de la clase ClienteDAO no se beneficiaba de las
operaciones que ofrece la plantilla HibernateTemplate, sino que creaba una nueva Query a
partir de la sesin en curso de Hibernate como se observa en el siguiente cdigo:
38
return lista;
}
39
Anlisis
Diseo
Construccin
Pruebas
Planificacin
Especificar
requisitos
Prototipos
web
Base de
datos
Diseo
Definir
objetivos
Analizar
requisitos
Base de
datos
Persistencia
Verificacin
Reuniones
Definir el
modelo del
dominio
Seguimiento
Memoria
Arquitectura
Software
Formacin
Lgica de
negocio
Controladores
Presentacin
41
Tiempo
estimado
40
20
15
5
25
15
5
5
126
20
6
25
25
30
20
25
10
15
44
10
4
6
6
3
15
40
300
Tiempo
real
35
15
15
5
20
10
5
5
118
12
6
30
30
30
10
25
10
15
57
10
6
6
10
5
20
50
305
Desfase
-5
-5
0
0
-5
-5
0
0
-8
-8
0
5
5
0
-10
0
0
0
13
0
2
0
4
2
5
10
5
42
140
120
100
80
60
40
20
0
126
40 35
118
44
25
20
Tiempo estimado
25 25
57
40
50
Tiempo real
43
44
CONCLUSIONES
En cuanto a funcionalidad, se han alcanzado todas las metas puestas al principio del
proyecto. Como resultado final se ha obtenido una aplicacin web que ofrece al usuario
una interfaz intuitiva sin mucha complejidad y de fcil manejo en la que se ha logrado
cubrir las funcionalidades deseadas por el cliente, que le permiten realizar una gestin
completa de sus proyectos y tiempos as como de la mayora de gestiones que se
realizaban con la antigua aplicacin de la que dispona al principio.
Cabe mencionar el gran nmero de conocimientos que se han adquirido durante el
desarrollo de este Trabajo Fin de Grado debido al manejo de todas las tecnologas que se
han usado para la ejecucin del mismo y que fueron impuestas en su totalidad por el
cliente.
El enfrentamiento a los distintos problemas surgidos durante todo proceso de
construccin de la aplicacin, el tiempo invertido en la bsqueda de las soluciones que
mejor se adapten a cada caso y su implantacin, con todo ello aprend a tomar mis propias
decisiones y asumir la responsabilidad de sus consecuencias.
El proceso de formacin que fue muy largo sobre todo con Spring Framework y la
navegacin en un mundo extenso de nuevas tecnologas ha merecido la pena para adquirir
nuevas experiencias en el mundo laboral.
La realizacin de un proyecto real en un entorno empresarial ha sido un punto clave para
ampliar y poner a prueba mis conocimientos adquiridos durante toda la carrera.
En general se han logrado los objetivos a nivel de proyecto, se han cumplido mis
propsitos personales y a nivel educativo fue un proyecto muy enriquecedor.
Posibles mejoras
Los siguientes puntos son algunas mejoras que pueden ser aadidas a la aplicacin en el
futuro:
1) Ofrecer la posibilidad de generar informes parametrizados: debido a la falta de
tiempo, en el desarrollo del proyecto se han tenido en cuenta los informes de
facturas que era uno de los requisitos que se haban establecido al inicio. Cabe la
posibilidad de ampliar la funcionalidad de esta aplicacin y permitir la generacin
de informes en formato PDF atendiendo a ciertos parmetros que introduce el
usuario, por ejemplo: ver sus registros de tiempo para un determinado proyecto.
2) Mejorar la navegacin en todas las pginas: se pueden incluir migas de pan para
que el usuario sepa en cualquier momento dnde se encuentra y la relacin
jerrquica de la pgina donde se encuentra con el resto de la estructura de la
aplicacin. Para ello, se pueden usar elementos de la librera Primefaces que
facilitan esta tarea.
45
BIBLIOGRAFA
PAUL TEPPER FISHER and BRIAN D. MURPHY. Spring persistence with hibernate.
Referencias Web:
Richfaces: http://www.jboss.org/richfaces
http://livedemo.exadel.com/richfaces-demo/richfaces/dataTableScroller.jsf?s=glassX
Hibernate: http://docs.jboss.org/hibernate/core/3.5/reference/es-ES/html/
Jasperreports: http://community.jaspersoft.com/project/jasperreports-library
Spring: http://www.springhispano.org/
http://www.springsource.org/spring-framework
46
UNIVERSIDAD DE LA RIOJA
Realizado por
Naziha Ayachi Majait
Dirigido por
Francisco Jos Garca Izquierdo
NDICE
SOBRE LISTADOS .................................................................................................................... 1
1.
PROYECTOS....................................................................................................................... 2
1.1. Crear nuevo proyecto ............................................................................................................ 2
1.2. Asignar tcnicos a proyecto ................................................................................................ 2
1.3. Detalles del proyecto ............................................................................................................. 3
2.
3.
GASTOS ............................................................................................................................... 4
3.1. Imputar gastos a proyecto .................................................................................................. 5
4.
TCNICOS ........................................................................................................................... 5
4.1. Dar de baja a un tcnico ....................................................................................................... 6
4.2. Categoras de un tcnico ...................................................................................................... 6
5.
CLIENTES ........................................................................................................................... 7
6.
FACTURAS ......................................................................................................................... 7
6.1. Crear nuevo factura ............................................................................................................... 7
6.2. Generar informe de facturaciones ................................................................................... 8
6.3. Editar una factura ................................................................................................................... 9
7.
Categoras.......................................................................................................................... 9
7.1. Editar categora .....................................................................................................................10
7.2. Tarifas de una categora .....................................................................................................10
SOBRE LISTADOS
En cualquier listado que aparece en las pginas de la aplicacin, puede acceder a distintas
funciones. Utilizando el men que aparece al pulsar sobre la cabecera de cada columna
puede:
1) Ordenar de forma ascendente o descendente, que puede llevar a cabo de otra
forma, simplemente pulsando sobre la cabecera de la columna deseada.
2) Agrupar o desagrupar por una columna.
3) Mostrar u ocultar columnas mediante la opcin Columns del mismo men.
1. PROYECTOS
En este apartado puede gestionar todo lo relacionado con los proyectos de la empresa. En
el listado de proyectos se muestran los siguientes campos: la denominacin del proyecto,
el cliente y el estado del proyecto (finalizado o no).
1.1.
se abrir el
Debe introducir los datos bsicos del proyecto; denominacin, plataforma, organismo, tipo
de proyecto y la fecha de propuesta. Una vez que termina este proceso debe pulsar el
botn Guardar y as insertar el proyecto en la base de datos y volver al listado para
comprobar que se ha introducido correctamente.
1.2.
Pulsando el botn
al proyecto.
Para ello, debe seleccionar un tcnico del listado de la parte izquierda y una categora de
las disponibles a la derecha. Para finalizar la operacin debe pulsar sobre el botn
Asignar.
Posteriormente podr ver todos los tcnicos asignados al proyecto en el listado que se
encuentra en parte inferior de esta pgina y borrar alguna asignacin anterior pulsando el
botn
si as lo desea. Una vez pulsado este ltimo aparece una ventana para confirmar
la eliminacin como puede observar en la siguiente figura:
1.3.
En la pestaa Tiempos registrados puede ver los siguientes datos de cada registro: el
tcnico, la fecha, una descripcin de la actividad realizada y por ltimo, el nmero de
horas.
En la segunda pestaa, Gastos del proyecto puede ver todos los gastos que se han
imputado al proyecto y consultar los datos bsicos de cada uno. Los atributos que puede
consultar son: la fecha, la descripcin, el tipo de gasto y el importe del mismo.
2. REGISTRO DE TIEMPOS
Esta seccin le permite registrar nuevos tiempos y ver todos los que haya registrado
anteriormente o filtrar la bsqueda por una fecha concreta.
En el panel que se muestra en la primera pgina puede acceder a filtrar sus tiempos por
una fecha. Para ello, debe pulsar sobre el icono
o sobre el campo donde aparece la
fecha para seleccionar una nueva y posteriormente pulsar sobre el botn Buscar.
En caso de que quiera ver todos los tiempos que lleva registrados hasta el momento,
puede hacerlo a pulsando el botn Ver todos.
En cualquier caso aparecer un listado con todos sus registros que incluye los campos de
fecha, descripcin de la actividad realizada y la duracin en horas.
Las acciones que incluye este listado son:
1) Los filtros para realizar bsquedas por fecha, descripcin o por horas.
2) Editar un registro pulsando sobre el icono
3) Eliminar un registro mediante la opcin
confirmar o cancelar esta operacin.
2.1.
.
, que muestra un mensaje de para
Registrar tiempo
3. GASTOS
En esta seccin se muestra un listado con todos sus gastos registrados por los proyectos
en los que haya participado. De cada gasto se muestra su fecha de registro, una
descripcin, el tipo de gasto y el importe del mismo.
2) La opcin
3.1.
4. TCNICOS
Le permite gestionar y mantener la informacin de los empleados de la empresa. De cada
empleado se muestra su nombre, apellidos, nombre de usuario y la fecha de baja (si ha
sido dado de baja).
4.1.
Para dar de baja a un tcnico activo en la empresa debe pulsar sobre el botn
para
acceder a modificar sus datos. Una vez que est en el formulario, debe seleccionar una
fecha a partir de la cual tendr efecto la baja efectuada. Para volver a activar un tcnico
que ya se haba dado de baja, debe pulsar sobre el icono
para abrir el calendario y
seleccionar la opcin Clean para borrar la fecha de baja. Por ltimo, pulsar el botn
Editar para guardar los cambios.
4.2.
Categoras de un tcnico
Mediante la opcin
del listado de tcnicos puede acceder a sus detalles y ver todas las
categoras que se le han asignado durante su instancia en la empresa, as como efectuar
una nueva asignacin.
Para asignar una categora, debe elegir una de las disponibles, introducir el ao y
finalmente pulsar el botn Asignar.
En el listado se muestra la categora y el ao. Puede modificar estas asignaciones eligiendo
una categora nueva y/o introduciendo otro ao distinto en sus respectivos campos del
listado, como se puede observar en la siguiente figura.
Para confirmar la modificacin y guardar los datos cambiados debe pulsar sobre
Tambin puede optar por borrar una asignacin ya existente mediante la opcin
.
.
5. CLIENTES
Permite gestionar toda la informacin referente a los clientes de la empresa; crear nuevos
y modificar los existentes. En el listado de clientes se muestran los siguientes campos: el
nombre, la direccin y el municipio.
Pulsando el icono
puede acceder al formulario para crear un nuevo cliente. Los datos
necesarios para crear un nuevo cliente son: denominacin, direccin, cdigo postal, pas,
provincia y municipio.
Para modificar los datos de un cliente deber acceder pulsando sobre el botn
disponible en el listado de los clientes.
, accin
6. FACTURAS
Le permite gestionar y mantener todas las facturaciones realizadas por los proyectos de la
empresa. En el listado de las facturas se muestra el nmero de factura, la fecha, el proyecto
y el importe total.
Las posibles acciones para cada factura del listado son editar
6.1.
y eliminar
Una vez seleccionado el proyecto aparecern dos listas; la primera corresponde a los
gastos del proyecto para elegir los que desea incluir en la factura y en la segunda
aparecern los gastos que vaya seleccionando.
Usando los botones que aparecen entre las dos listas puede:
-
De manera similar puede borrar todos los gastos incluidos en la segunda lista o
seleccionar alguno(s) concreto(s) y borrarlo(s) usando los botones Borrar y Borrar
todos.
Una vez seleccionados los gastos que desea incluir en la factura, puede optar por terminar
el proceso y volver al listado de facturas o avanzar a la siguiente pgina pulsando el botn
Aceptar para incluir los honorarios.
Para crear un nuevo honorario debe seleccionar la fecha, el tcnico, el concepto e
introducir una descripcin y el nmero de horas. Los honorarios que va introduciendo se
reflejarn en la tabla que se sita en la parte superior de la pgina.
Tambin puede eliminar algn honorario que no desea incluir en la factura pulsando sobre
.
Para finalizar el proceso de facturacin debe pulsar el botn Terminar para guardar la
factura y volver al listado principal.
6.2.
6.3.
Por otra parte, podr eliminar cualquier gasto de los que haya aadido o alguno de los que
ya estaban asignados al principio al pulsar el botn
y aceptar la confirmacin de la
eliminacin.
Una vez terminado este proceso, debe comprobar los datos y pulsar el botn Ver lneas
para acceder a aadir nuevos honorarios a la factura.
Para crear un nuevo honorario debe seleccionar la fecha, el tcnico, el concepto e
introducir una descripcin y el nmero de horas. Los honorarios que va introduciendo se
reflejarn en la tabla sita en la parte superior de la pgina. A travs de esta tabla puede
eliminar honorarios pulsando el botn destinado a este fin .
7. Categoras
En esta pgina se muestran todas las categoras en un listado. Puede aadir una nueva
categora insertando el nombre en el formulario que se sita en la parte superior de la
pgina y pulsar el botn Guardar.
Desde el listado de categoras puede realizar distintas acciones como:
1) Filtrar por denominacin.
2) Modificar una categora existen pulsando sobre el icono
3) Ver las tarifas de una categora pulsando sobre
7.1.
Editar categora
Para modificar una de las categoras que aparecen en el listado, debe situarse dentro del
campo de la denominacin y modificar su contenido. Finalmente confirmar la modificacin
realizada pulsando sobre el icono .
7.2.
Para ver las tarifas que se le han asignado a una categora durante el paso del tiempo, debe
pulsar sobre el icono
Acto seguido, aparecern toda la informacin relacionada con las tarifas de la categora
seleccionada incluyendo el ao y el importe de las mismas. Las acciones que puede
ejecutar sobre estas tarifas son:
-
Tambin puede asignar nuevas tarifas a una categora usando el formulario que se sita al
principio de la pgina.
10