Está en la página 1de 136

Aplicacin Web para la Gestin

del Inventario de un Almacn

Autor: Jose Mario Celda Galbis


Director: Pedro J. Valderas
INDICE
1. Introduccin .............................................................................................................. 4
- Nacimiento del Proyecto ................................................................................... 4
- Objetivos Generales del Proyecto ..................................................................... 5
- Estructura del Documento ................................................................................. 5
1.1. Qu es un Almacn? ....................................................................................... 7
1.1.1. Definicin .................................................................................................... 7
1.1.2. Clasificacin Segn Construccin ............................................................... 8
1.2. Actividades de Almacenamiento ........................................................................ 8
1.2.1. Recepcin: Responsabilidades que Incluye ................................................ 9
1.2.2. Caractersticas de los Muelles y reas de Recepcin ................................. 9
1.2.3. Almacenamiento: Sus Diferentes Actividades ........................................... 10
1.2.4. Planificacin de Almacenamientos ............................................................ 10
1.2.5. Inventarios................................................................................................. 11
1.3. La Logstica...................................................................................................... 12
1.3.1. El Origen ................................................................................................... 12
1.3.2. Definicin .................................................................................................. 12
1.4. Operaciones en el Almacn ............................................................................. 13
1.4.1. Operaciones de Entrada............................................................................ 13
1.4.2. Operaciones de Salida .............................................................................. 14
1.4.3. Operaciones de Control............................................................................. 16
1.5. Los Stocks ....................................................................................................... 16
1.5.1. Definicin .................................................................................................. 17
2. Especificacin del Problema ................................................................................... 18
3. Arquitectura utilizada .............................................................................................. 20
- Concepto de Multicapa.................................................................................... 20
4. Planificacin............................................................................................................ 26
- Descomposicin en Fases del Proyecto.......................................................... 27
5. Anlisis detallado.................................................................................................... 33
- Casos de Uso.................................................................................................. 33
Pantalla de Login ................................................................................................ 35
Men Principal .................................................................................................... 36
1.- Alta Producto ................................................................................................. 37
2.- Alta Ubicacin ................................................................................................ 39
3.- Entrada Producto ........................................................................................... 41
4.- Salida Producto.............................................................................................. 43
5.- Movimiento Productos.................................................................................... 45
6.- Listado de Productos ..................................................................................... 47
6.5. Operaciones en Ficha de Producto .............................................................. 52
7.- Listado de Ubicaciones .................................................................................. 56
8.- Listado de Movimientos ................................................................................. 65
9.- Listado de Inventario...................................................................................... 69
- Diagrama de clases......................................................................................... 73
- Modelo Relacional........................................................................................... 75
6. Implementacin ...................................................................................................... 78
Entorno ................................................................................................................... 78
STRUTS (Tecnologa de Implementacin J2EE + JSP) ...................................... 86
Herramientas .......................................................................................................... 95
7. Manual de Usuario.................................................................................................. 96
7.1. Introduccin ..................................................................................................... 96
7.2. Como acceder a la aplicacin .......................................................................... 97
7.2.1. Para acceder mediante el terminal (INTERMEC) ...................................... 97
7.2.2. Para acceder desde cualquier PC ............................................................. 98

2
7.2.3. Validarse en la aplicacin.......................................................................... 99
7.3. Men principal................................................................................................ 100
7.3.1. Alta de producto ...................................................................................... 100
7.3.2. Alta Ubicacin ......................................................................................... 103
7.3.3. Entrada producto..................................................................................... 106
7.3.4. Salida producto ....................................................................................... 108
7.3.5. Movimiento de productos ........................................................................ 111
7.3.6. Listado de productos ............................................................................... 114
7.3.7. Listado de ubicaciones............................................................................ 120
7.3.8. Listado de movimientos........................................................................... 125
7.3.9. Listado Inventario .................................................................................... 127
7.3.10. Cerrar Sesin ........................................................................................ 129
7.3.11. Funcionalidad Buscar en los listados .................................................. 130
7.3.12. Funcionalidad Orden en los listados ................................................... 133
8. Bibliografa............................................................................................................ 135

3
1. Introduccin

El presente Proyecto Fin de Carrera se encuentra enmarcado en el rea de la


Logstica y el almacenamiento de mercanca, mas concretamente en la recepcin,
gestin y salida de los productos en un almacn.

Para la correcta comprensin de las funcionalidades que se debern


implementar en la aplicacin y los diferentes trminos que se utilizaran en este
documento podemos ver las definiciones en el apartado 1.1. Qu es un
Almacn?.

En l se presenta el desarrollo de una aplicacin para la gestin de un


almacn. Para el correcto desarrollo de esta aplicacin ser necesario gestionar de
manera correcta las diferentes actividades que se suelen llevar a cabo en un almacn,
de este modo se podr tener mucho ms controlado el proceso de recepcin y salida
de mercanca, al igual que podremos tener una informacin exacta y en tiempo real del
stock de productos del que disponemos en nuestro almacn. Esta informacin ser
muy til para el personal de compras y la direccin de la empresa, ayudndoles en los
procesos de toma de decisin y en la realizacin de las previsiones.
El desarrollo del proyecto se ha llevado a cabo utilizando el lenguaje de
programacin Java junto con los entornos/herramientas: MS Proyect para la
planificacin, ArgoUML para el modelado resultante del anlisis, as como las
herramientas para el desarrollo Eclipse HELIOS, MySQL y JasperReports.

- Nacimiento del Proyecto

El cliente es una empresa que dispone de un almacn, en dicho almacn hay


un encargado y cinco operarios. La empresa se plantea la implantacin de un sistema
informtico tras surgir problemas tales como los inventarios peridicos y las perdidas
de tiempo en bsquedas de productos que no aparecen en ninguna parte y nadie sabe
donde estn ubicados.

Se busca automatizar el inventario con el nuevo sistema de gestin, y obtener


la informacin necesaria para la gestin del negocio mediante la extraccin de
informes.

4
El Gerente de la empresa y el encargado del almacn expusieron el problema,
explicando que es lo que esperaban del programa, despus de varias reuniones y tras
estudiar el proyecto, se les pidi autorizacin para organizar reuniones con los
operarios y que estos demostrasen como desempeaban su trabajo diario, de esta
forma podra tener una visin mas amplia de su forma de trabajar y podra adecuar el
nuevo sistema tanto a las necesidades de sus superiores como a las suyas. Una vez
analizada la forma de trabajar y siempre cindome a las peticiones del gerente y el
encargado realice una propuesta de proyecto y este fue aceptado.

- Objetivos Generales del Proyecto

El proyecto a realizar debe cubrir las necesidades de la empresa.


Se necesita un programa para gestionar la Recepcin y Salida de productos en
un almacn, tambin necesitaremos acceder a la informacin de donde estn
ubicados los diferentes productos mientras se encuentran dentro de nuestros
almacenes y poder revisar un histrico de los diferentes movimientos o cambios de
ubicacin, para poder hacer un seguimiento de las ubicaciones por las que estos han
ido pasando y poder localizar dichos productos en caso de perdida.
La informacin podr ser consultada por los usuarios a travs del terminal, un
PC o un Smartphone conectado a la red local de la empresa.
Se les ha ofrecido como mejora la extraccin de listados en formato .PDF y
.XLS para imprimir si el usuario lo desea poder trabajar con la informacin de los
listados en una hoja de clculo.

- Estructura del Documento

A continuacin se explica la estructura y breve descripcin del contenido del


resto de este documento:
- Captulo 2: Especificacin del problema. En este capitulo se describe de
forma informal el problema al que nos hemos enfrentado en el desarrollo del presente
proyecto.
- Captulo 3: Arquitectura utilizada. Descripcin de la arquitectura de tres capas
que se ha seguido para este proyecto, la cual es de gran utilidad en aplicaciones Java.
- Capitulo 4: Planificacin. Especificacin de las fases en las que se ha
dividido el proyecto y estructuracin de las diferentes tareas en cada fase con su
correspondiente diagrama de duracin.

5
- Capitulo 5: Anlisis detallado. Estudio del proyecto y modelado de los
diferentes diagramas que describen la estructura del sistema, necesarios para su
desarrollo.
- Capitulo 6: Implementacin. Herramientas y entornos utilizados para la
implementacin del proyecto
- Capitulo 7: Manual de usuario. Gua detallada para el uso de la aplicacin por
el cliente.
- Capitulo 8: Bibliografa. Autores, ttulos y referencias de los textos utilizados
como soporte para la realizacin del proyecto.

6
1.1. Qu es un Almacn?

1.1.1. Definicin

Para poder hablar de un almacn, en primer lugar deberamos definir su


concepto: un almacn bsicamente es un espacio, recinto, edificio, o instalacin
donde se suele guardar la mercanca, pero al mismo tiempo puede hacer otras
funciones, como por ejemplo el acondicionamiento de productos determinados, hacer
recambios (tanto para el mantenimiento como para la existencia tcnica), etc., ms
profundamente diramos que el trmino almacn viene derivado del rabe (almaizan) y
es una casa o edificio donde se guardan gneros de cualquier clase.

Por tanto, un almacn fundamentalmente se encarga de guardar el


stock, pero no debemos de confundir los trminos. La gestin del stock no ser la
misma que la gestin del almacn. La primera se encarga de aprovisionar para un
buen nivel de servicio mientras que la segunda intenta realizar las operaciones de
almacenamiento (algunas veces tambin de preparacin y produccin) con los
mnimos recursos propios del almacn (como son el espacio, la maquinaria y el
personal).

De esta forma, para la gestin del almacn, la gestin del stock se


convertir en proveedora de servicios logsticos de almacenaje y preparacin.

Tras el anlisis podemos llegar a las siguientes conclusiones:


El almacn no solo servir para almacenar sino tambin para preparar la
entrega al cliente y algunas veces operaciones de produccin.
Finalmente el almacn es un recinto (tanto abierto como cerrado) ordenado
para cumplir las funciones de almacenamiento y acondicionamiento que se hayan
definido previamente.

A continuacin definiremos los siguientes trminos:

- Alveolo o compartimiento Huecos donde entran los palets o se depositan


los materiales de la misma clase

7
- Ciclo Combinado Son una serie de operaciones que sufre un artculo desde
que llega al almacn hasta que se deposita en su alveolo. Formar de moverlo.

- Ciclo Simple Es cada una de las partes en las que se divide el Ciclo
Combinado.

- Inventario Operacin que permite saber la cantidad y emplazamiento del


material.

- Inventario Permanente Mtodo con el que en cualquier momento se sabe la


cantidad de material que se tiene.

- Lifo Regla de gestin de stock.

- Picking Operacin de carga de artculos desde su lugar de almacenamiento


para completar el pedido.

- Terminal a bordo Pantalla con teclado instalado en una carretilla para


conocer la situacin de un almacn.

- Almacn Es el edificio o local donde se depositan gneros de cualquier


categora.

1.1.2. Clasificacin Segn Construccin

a) Patios de materiales y contenedores


No se pueden guardar en almacenes corrientes y se deben depositar al aire
libre debido a su volumen (ladrillos, etc).
c) Naves de todo tipo
Grandes edificios muy elementales y segn el tipo de nave, hay gras para el
movimiento del material. Tienen que ser adecuadas al fin que se ocupan.

1.2. Actividades de Almacenamiento

8
1.2.1. Recepcin: Responsabilidades que Incluye

Produccin Se almacena la produccin.


Planta Fsica.
Administracin.

Recepcin de todas las materias primas.

Se necesita el Almacn de Entrada, Almacn de Salidas y las Expediciones.


Se necesita la Oficina de Produccin y por ltimo el Material de Manejo.
Obtenemos el material y lo tenemos que llevar al almacn.
Almacn de Entrada para produccin.
Almacn de Salida para servir el stock necesario.

Expediciones aquellos movimientos hasta que llega al cliente.

Actividad de Recepcin

a) Descargar el material de los transportistas.


b) Desempacar el material
c) Identificar y seleccionar el material.
d) Comprobar los albaranes del transportista con lo que recibimos.
e) Comprobacin.
f) Anotar daos y defectos del material.
g) Llevar los controles adecuados.
h) Despachar el material para el rea de uso o estantera correspondiente.

1.2.2. Caractersticas de los Muelles y reas de Recepcin

Se debe tener en cuenta la capacidad de llegada para no tener retrasos o


aglomeraciones en el muelle o punto de descarga.

El diseo de los muelles ha de ser adecuado a nuestro volumen de recepcin.


En las reas de recepcin se controla la mercanca recibida para ver si
corresponde con lo solicitado.

9
1.2.3. Almacenamiento: Sus Diferentes Actividades

Almacenar cualquier producto hasta su uso:


Durante la llegada.

Almacn de material primas y partes


M.P. (material primas) normalmente requieren una transformacin posterior.
Partes estos son Productos Acabados como motores, pinturas.

Almacn de suministros
Materiales para el mantenimiento de equipos.
Oficinas material de oficina.
Se guardan cerca del rea de uso.

1.2.4. Planificacin de Almacenamientos

Uso efectivo del tiempo, M.O. (Mano de Obra), equipo.


Usar al mximo el cubo (forma de almacenaje), siempre que sea posible ya que
es la mejor.
Usar bien el tiempo, hacer buen uso de l.
Buen uso de materiales, hemos de estar seguros de suministrarlos a tiempo y
en el lugar adecuado, en la cantidad solicitada.
Uso efectivo de la Mano de Obra si logro ordenar el tiempo har que la M.O.
(Mano de Obra) est bien organizada durante su jornada.
Equipo necesitaremos todo el necesario.

Acceso rpido a los items.


Items productos almacenados.
Se tiene que almacenar de manera adecuada (A,B,C) del ms uso al menos
uso.

Facilidad para MM (Mover Materiales).


Necesitaremos que los materiales puedan ser movidos con gran facilidad.
No por ahorrar un trozo de espacio vamos a moverlo mejor, se tendr en
cuenta la manera de mover los materiales (toro, carretilla).

10
El almacn y rea colindante deben estar perfectamente coordinados.

Identificacin positiva.
No haya ninguna duda de que los materiales estn perfectamente identificados.
Es absolutamente vital para un almacn medio o grande.

Mxima proteccin.
Los costes, si no se protege, son muy grandes.
Tanto en cuestin de golpes, contaminacin.
Deben llevar cierre, seguridad, etc. Con la mxima proteccin.
Evitar todo lo relacionado con el tipo de material que tratamos.

Orden.
No debe haber nunca nada fuera de su sitio y un sitio para cada cosa.
Facilitar la buena marcha del almacn.

1.2.5. Inventarios

Definicin.
Consiste en una enumeracin precisa de lo que contiene el almacn, en
calidad y cantidad.
Esta operacin es indispensable para saber que se dispone.
El inventario debe ser permanente, tanto en salidas como en entradas.
El inventario internamente se realiza slo una vez al ao.

Desviaciones reales.
Despistes en la introduccin de datos.
Productos que se daen en el almacn (caducados, rotos, etc).
Daos durante la carga en un nicho que no le corresponde.
El inventario fsico ha de ser igual al inventario administrativo.

Control.
Debe coincidir los datos introducidos con lo que realmente tenemos en el
almacn.
Comprobacin de cantidades, peso (neto).
Control de marcaje la marca debe corresponder al producto.

11
Control del embalaje para preservar la mercanca.

1.3. La Logstica

1.3.1. El Origen

Etimolgicamente, el termino logstica viene del griego logistikos (aquella que


sabe aplicar el clculo). Posteriormente el logstico era el administrador o intendente
del ejrcito del imperio romano; comenzando en este periodo a utilizarse como termino
militar, y que durar a lo largo de la existencia del imperio bizantino.

A finales del siglo XVI se introdujeron las expresiones "logstica numerosa" y


"log. espaciosa" (para el clculo mediante los nmeros y las letras respectivamente)
pero este carcter militar llegar hasta el siglo XX.

Es despus de la Segunda Guerra Mundial cuando el concepto logstico entra


en el trmino civil con tal de identificar las actividades de la empresa dedicadas a
utilizar los recursos de forma racional y dentro de ellos los dedicados a la operativa
diaria de la empresa (aprovisionar y suministrar productos).

1.3.2. Definicin

La logstica es un conjunto de actividades que tenan la finalidad de conseguir


la disponibilidad de todos los recursos necesarios en el momento, lugar y cantidad
concreta, sin duda al mnimo coste. As, el concepto de logstica va asociado con la
ptima gestin de aquellos recursos necesarios con tal de conseguir su finalidad
(poner productos de utilidad a disposicin de los consumidores, prestacin de servicios
al cliente...).

Estos recursos que se van a utilizar pueden agruparse en las siguientes


categoras:

- Recursos materiales tipo producto/mercanca.


- Recursos materiales operativos (ej: infraestructuras fabricas, almacenes,
maquinaria...-)

12
- Recursos humanos operativos(ej: personal)
- Recursos de utilidad a consumir (ej: agua, electricidad...)

Su definicin nos indicaba que se trata de que los recursos relatados


anteriormente estuvieran en el momento ( cuando ), la cantidad ( cuanto ) y el sitio (
dnde ) adecuado al menor coste posible; es decir, la logstica busca el equilibrio entre
el servicio( cuando, cunto y dnde), y el coste.

En conclusin, la actividad logstica no solo es un nivel equivalente de calidad


al mnimo coste, sino tambin un servicio.

1.4. Operaciones en el Almacn

Las empresas necesitan tener un sistema de estudio de las entradas y las


salidas tanto para posibles prdidas en ventas (carencia de mercancas), como por los
costos del mantenimiento y conservacin, capital invertido (existencia excesiva de
stocks)

1.4.1. Operaciones de Entrada

Lo primero que hay que hacer cuando entran productos es identificar el origen
y destino para comprobar que no es un error. Seguidamente se identifica el envo para
descargarlo por la zona adecuada.

Ahora ya esta todo preparado para descargar la mercanca. Se avisa al


personal cual ser la ubicacin de destino, la playa de descarga, el rea de
devoluciones, zona de preparacin de envos, o el rea de cuarentena (es la zona
dnde las mercancas reposan un tiempo antes de ser aptas para vender), como por
ejemplo, las cmaras frigorficas en los almacenes de naranjas.

Durante la descarga hay que hacer una comprobacin o recepcin externa del
gnero (lo que est daado externamente tiene que ser devuelto, pudiendo
descargarlo o no, segn el acuerdo establecido).

13
Una vez finalizada esta fase se firma la documentacin del transportista
dndole las copias correspondientes. A partir de este momento el transportista puede
abandonar la instalacin.

Seguidamente se comprueba la carga (cantidad y calidad) y se separan las


mercancas aceptadas, devueltas y las pendientes de algn control. Las aceptadas
(normalmente con una etiqueta verde) tienen que ser almacenadas, por lo que hay que
buscarle la ubicacin ms idnea para su peso forma y dimensin.

Finalmente debemos introducir la informacin sobre la actividad realizada en el


sistema informtico con las caractersticas que se hayan podido dar (incidencias o
errores).

1.4.2. Operaciones de Salida

Igual que en el apartado anterior, analizaremos las diferentes fases de las


operaciones de salida del almacn:

1.4.2.1. Extraccin.

La extraccin de mercancas para finalmente enviarlas al cliente se puede


hacer de dos maneras
- Extraer los productos en las unidades logsticas especializadas.
- Extraer unidades sueltas (picking). Suele ser ms habitual mientras ms nos
acercamos al consumidor o usuario. Es decir, el producto suele entrar en pocos envos
de mucha cantidad, y sale en muchos de poca. (Ver Figura 1)

14
ALMACN ALMACN

ENTRADA SALIDA

Fig.1 Diagrama Entrada Salida Almacn

Por ltimo e igual como ocurre en la entrada del gnero, toda actividad tiene
que ser introducida en el sistema informtico. Ahora slo nos quedar embalar, pesar,
etiquetar y expedir.

1.4.2.2. Preparacin y expedicin.

Una vez los productos estn en la zona de preparacin procedemos de esta


manera:
- Verificar si es todo correcto.
- Embalar y precintar.
- Pesar (muy importante; tanto para saber el coste como para controlar la
carga).
- Etiquetar la direccin de entrega.
Identificacin (del peso principalmente).
Mercanca peligrosa cuando lo sea.
- Emitir documentacin junto a cada volumen.
- Agrupar los envos que van a ser cargados en el mismo camin.

15
- Entregarlos al transportista, habiendo firmado antes la documentacin
correspondiente.

1.4.3. Operaciones de Control

1.4.3.1. Recuentos fsicos: el inventario.

El inventario es la lista dnde se inscriben y describen, articulo por artculo,


todos los bienes que pertenecen a una persona o estn en una casa. Hablando en
trminos contables, es la relacin y valoracin de los bienes, derechos y obligaciones
de una empresa, que expresa la estructura de su patrimonio en un momento dado.
Podemos hablar de dos casos de inventarios:
- contable: estado de cuentas que permiten conocer, durante todo el periodo
de explotacin, las existencias en stock.
- extracontable: recuento en el almacn de las existencias realmente
mantenidas en stock.

El procedimiento casi siempre es el mismo:


- Preparacin de una orden para cada ubicacin.
- Programacin de ordenes de recuento y tambin de colocacin / extraccin.
- Incorporacin de los resultados al sistema informtico.

Entre todos nombramos tres tipos de inventarios:


Completo ( normalmente una vez al ao)
Rotativo. Consiste en verificar cada vez unos productos.
Permanente. Consiste en contar las existencias cada vez que se da una
operacin sobre una ubicacin.

1.5. Los Stocks

No podramos hablar completamente de almacn si no intentramos descubrir


su esencia: los artculos almacenados, por lo que los siguientes apartados los
dedicaremos nica y exclusivamente a esta parte.

16
1.5.1. Definicin

Los stocks los podemos definir como los artculos en espera de su utilizacin
posterior.

La posesin de estos, es la manera que tienen las empresas para garantizar el


buen funcionamiento de su actividad, no solo a la hora de servir a un cliente sino
tambin para poder tener materias primas con las que fabricar.

Esta necesidad de tener existencias en el almacn, es para disponer del


producto en la cantidad necesaria, en el momento oportuno, con una seguridad de
calidad y un precio ms econmico.

Una pequea reduccin del porcentaje de los stocks significar un gran


aumento de los beneficios.

17
2. Especificacin del Problema

Este proyecto consiste en la realizacin de una aplicacin para el control del


stock de productos en un almacn. En dicha aplicacin se pretende dar una
informacin al usuario a cerca de la ubicacin y cantidad de todos los artculos de un
almacn, al igual que se le permitir realizar movimientos de material, y tener
controladas las entradas y salidas de mercanca.

He analizado las tareas habituales que se llevan a cabo en un almacn,


la distribucin de sus ubicaciones y la gran variedad de productos que se suelen
manejar, as he podido sacar unas conclusiones previas de las necesidades que
tendra que cubrir y de los usuarios a los que va dirigida la aplicacin.

El usuario tipo para el que se desarrollada la aplicacin, es un operario de


almacn, sea este ms veterano en el puesto o menos, con mayor experiencia o
menos en el campo de la informtica. Las tareas que estos usuarios realizaban por
pura lgica y a base de la experiencia, para la ubicacin y posterior bsqueda de los
artculos, gestin de inventario, etc. A partir de la puesta en marcha de la aplicacin
se realizara automticamente, ahorrndoles bsquedas innecesarias y perdidas de
tiempo en realizar inventarios de forma continuada.

El usuario avanzado o Administrador, se encarga de aadir y modificar


los usuarios y sus contraseas para que puedan acceder al sistema.

Las funcionalidades que se proponen son:


MANTENIMIENTO UBICACIONES
-Alta de ubicacin
-Edicin de ubicacin
-Baja de ubicacin
-Ver ficha de ubicacin

MANTENIMIENTO PRODUCTOS
-Alta de producto
-Edicin de producto
-Baja de producto
-Ver ficha de producto

18
CONTROL INVENTARIO
-Entrada almacn
-Salida almacn
-Movimiento interno de producto

LISTADOS
-Listado histrico de movimientos
-Listado del inventario
-Listado de productos
-Listado de ubicaciones
-Impresin de etiquetas de cdigo de barras.

Dicha aplicacin podra ser accedida por el personal de administracin y


compras de la empresa, a este tipo de usuario le son de gran ayuda los informes de
stock actual de los productos y los histricos de movimientos para llevar a cabo sus
anlisis y posteriormente tomar las decisiones correctas a la hora de comprar material.

La aplicacin esta diseada para acceder a ella mediante terminales de


radiofrecuencia con lector de cdigos de barras, aunque debido a que esta en un
entorno Web se puede acceder a ella desde cualquier ordenador o SmartPhone
introducindole la URL apropiada.

Respecto a las tcnicas y estndares que se van a utilizar para la


especificacin se utilizar el estndar IEEE 830-1998, en el modelado del anlisis, es
decir casos de uso y diagrama de clases, se usar UML, respecto al diseo se
implementar con CSS y HTML validados por w3.org. La aplicacin se programa con
J2EE y se utilizarn base de datos MySQL, de esta forma utilizaremos tanto para el
lenguaje de programacin como para la base de datos cdigo libre.

Tambin se pretende utilizar la tecnologa JavaScript y Ajax donde sea


til como por ejemplo en la validacin de campos de formularios. Para esta aplicacin
Web se intentar usar una arquitectura de 3 capas, una ser la parte del aspecto Web
y su navegabilidad, otra el nivel de negocio y la ltima la de persistencia, es decir, la
base de datos. Con dicha arquitectura se desea conseguir una independencia entre
capas.

19
3. Arquitectura utilizada

El lenguaje en el que se ha realizado el proyecto es Java orientado a objetos,


con accesos a una base de datos relacional mediante MySQL.
El recorrido que se va a hacer en esta memoria nos presentar, en un primer
momento, la arquitectura que va a seguir la aplicacin, a fin de conseguir comunicar el
cdigo fuente con la base de datos de este sistema de informacin.

- Concepto de Multicapa

Para la estructuracin del presente proyecto se ha optado por una organizacin


en niveles (capas). De esta forma, la particin del sistema en componentes y la
relacin existente entre ellos siguen un esquema incremental, donde los niveles
inferiores proporcionan servicios a los superiores, existiendo una comunicacin
bidireccional entre las capas. Mediante esta definicin de la arquitectura del sistema
de informacin, se consigue un cierto nivel de aislamiento entre capas que facilitar el
mantenimiento, consistencia y versatilidad de la aplicacin.
Las capas en las que se ha dividido el proyecto poseen una funcionalidad
determinada dentro del sistema. A continuacin se presentan las capas con las tareas
para las que han sido diseadas:
- Capa Presentacin: Es la ms externa. En ella se implementan todas las
interfaces grficas que interaccionarn con el usuario, capturando todos sus eventos y
comunicaciones y pasndolos a los niveles inferiores.

- Capa Negocio: En esta capa lgica se contiene los objetos del dominio del
problema, as como las colecciones de estos objetos. A ella le llegan todos los
mensajes que produce la capa Presentacin. En este nivel se definen todas las
funciones y clculos intermedios que se realizarn con los datos origen antes de
presentarlos al usuario.

- Capa Tuplas-Objeto: Este nivel contiene todas las funciones necesarias para
el paso de la informacin que se extrae e introduce (si ha habido alguna modificacin)
en la Base de Datos.

20
- Capa de Acceso a BD: Contiene toda la informacin referente a las consultas
que deben hacerse sobre el sistema de informacin (la Base de Datos) y transfiere a
los objetos de la capa superior.

Fig.2 Divisin en Capas

Por lo tanto, las comunicaciones entre los distintos niveles quedaran de la


siguiente forma:

21
Fig.3 Comunicacin entre capas

Dada la estructura de datos empleada (multicapa), la introduccin de una


nueva clase en el sistema implica la insercin de numerosas secciones de cdigo en
los distintos niveles a fin de conseguir que la comunicacin entre la interfaz de usuario
y la base de datos sea completa y consistente.

La relacin de ficheros creados y modificados por cada nueva clase introducida


es la siguiente:

- En la aplicacin de la base de datos debe de crearse una tabla con el nombre


de la clase, que contenga como campos el nombre de los atributos especificados con
sus tipos correspondientes.

22
Fig.4 Ejemplo de definicin de tabla en MySQL para la clase Producto.
Obtener DatosResultSet

- Se crea un nuevo fichero, que tiene el nombre de la clase, donde se definen


sta, as como todos sus atributos, mtodos para poder acceder a ellos y mtodos
para su mantenimiento (crear, modificar e indicar su estado dentro del sistema de
informacin).

- El nivel de Acceso a Datos est contenido en un fichero general dentro del


proyecto, ya que contiene todas las funciones que permiten la creacin,
establecimiento y cierre de la comunicacin con la Base de Datos. Por cada clase, se
introducirn dos funciones que contendrn consultas SQL que permitan extraer de la
BD los datos referentes a la clase y borrar algn objeto de dicha clase.

- El siguiente nivel, Tuplas-objetos, es el encargado de extraer y preparar la


informacin que a salido o va a entrar en la Base de Datos. Por lo tanto, se deber
aadir funciones encargadas de extraer la informacin de la BD para pasrselas a

23
Capa Negocio, insertar nueva informacin o borrarla, para cada una de las clases del
proyecto.

- La Capa Negocio tendr una lista dinmica de objetos de cada clase. Esta
lista ser cargada con toda la informacin de la Base de Datos sobre esa clase y se
realizarn los cambios y modificaciones sobre ella, hasta que se decida actualizar la
BD con la nueva informacin. Tambin contiene todas las funciones que pueden hacer
falta a la hora de trabajar con la informacin, por lo que se crean numerosos mtodos,
tanto sobre el estado de los datos del sistema (obtener todos los elementos de una
clase determinada, el nmero total u obtener datos de una instancia en concreto)
como sobre el tratamiento de los eventos que pueden ocurrir (nuevo, borrar, modificar
algn atributo, calcular identificadores,).

- Por ltimo, respecto al nivel de Presentacin, se generar, por cada clase,


un fichero que contendr una interfaz y todos los elementos necesarios para su
gestin, para que el usuario se pueda comunicar con el sistema. El nombre de dicha
ventana representara la funcionalidad de la misma, en caso de mostrar un listado, se
llamara listado ms el nombre de la clase a mostrar en plural, ya que en ella se
mostrar un listado completo en forma de tabla de todos los elementos de esa clase
que hay en el sistema.

24
Fig.5 Ejemplo de interfaz de la capa de Presentacin asociada a la clase Producto

Por otro lado, se incluir tambin la funcionalidad necesaria (nuevas ventanas


para la creacin de nuevas instancias, posibilidad de seleccin de elementos de la
tabla, botones,) para poder abrir fichas de detalle y realizar las operaciones de crear,
modificar y borrar, as como toda la lgica para que el sistema detecte y lleve a cabo
todas estas operaciones en la Base de Datos y la actualice mantenindola en un
estado consistente.

25
4. Planificacin

El objetivo de la Planificacin del proyecto de Software es proporcionar un


marco de trabajo que permita al gestor hacer estimaciones razonables de recursos,
costos y planificacin temporal. Estas estimaciones se hacen dentro de un marco de
tiempo limitado al comienzo de un proyecto de software, y deberan actualizarse
regularmente a medida que progresa el proyecto. Adems las estimaciones deberan
definir los escenarios del mejor caso, y peor caso, de modo que los resultados del
proyecto pueden limitarse.

Para realizar la planificacin, se divide el proyecto en Fases, Tareas e Hitos.


Para este proyecto de desarrollo de software, se han seguido las fases de desarrollo
del proceso software, es decir, creando las fases que define una buena planificacin
de proyectos software. Por tanto, se podra decir que se ha empleado el modelo de
creacin de software denominado Modelo cascada Realimentado. Ya difcilmente se
utiliza, tal cual, el Modelo Cascada, pues esto implica un previo y absoluto
conocimiento de los requisitos, la no volatilidad de los mismos y etapas subsiguientes
libres de errores, ya que lo ideal sera pasar de una etapa a otra sin tener que rectificar
nada de las anteriores. Pero eso es utpico, ya que intrnsecamente el software es de
carcter evolutivo, cambiante y difcilmente libre de errores, tanto durante su desarrollo
como durante su vida operativa. Por eso es conveniente que se produzca alguna
realimentacin entre etapas, que no es completamente predecible no rgida; lo cual da
oportunidad al desarrollo de productos software en los cuales hay ciertas
incertidumbres, cambios o evoluciones durante el ciclo de vida. Para verlo con mayor
claridad, podemos observar la figura 6.

26
Fig.6 Modelo Cascada Realimentado

- Descomposicin en Fases del Proyecto

Para ver con mayor claridad la planificacin, se puede observar la figura 7, para
poder ver las fechas, la duracin y los componentes que llevan a cabo cada tarea.

Fig. 7 Tareas de la Planificacin

Al finalizar cada etapa se ha realizado una reunin tanto con el cliente como
con el director de proyecto, la idea bsica de estas es que proporcionen suficiente
informacin para generar confianza en el cliente y el jefe de proyecto, de que el

27
proyecto avanza notoriamente, que la fecha de culminacin se respetar (o en caso
contrario, cul es la tardanza real) y que el coste del desarrollo est dentro de los
mrgenes previstos.

Para que se vea ms detalladamente la faena realizada en cada fase, pasamos


a relatar una breve descripcin de cada tarea.

Anlisis:

Obtencin necesidades: para comenzar lo primero que se necesita es toda la


informacin que se pueda obtener del cliente sobre sus necesidades y el sistema de
gestin actual para su clnica, y tras ello una exposicin al director del proyecto con la
exposicin de la informacin recolectada. Y posteriormente documentacin sobre la
rama de sanidad con la que se ha trabajado.

Desarrollo de Casos de uso: fase donde se detallan los roles de las personas
que van a participar en el sistema as como las funciones que van a llevar a cabo cada
uno y pasar la informacin que hemos encontrado anteriormente al diagrama (en el
captulo tres se detalla el Diagrama de Casos de Uso).

Desarrollo de Diagrama De Clase: fase donde introduciremos las clases que


hemos identificado anteriormente y pasamos a relacionar las clases entre ellas.

Desarrollo de Diagrama Entidad-Relacin: en base al los anteriores


diagramas y pensando en la base de datos, se realiza el esquema que guiar la
estructura de esta ltima.

Especificacin de los Requisitos: en esta tarea se realiza una reunin con el


director de proyecto en la que se hace referencia a la primera reunin que hubo con el
cliente para que nos contara cuales eran los requisitos fundamentales del proyecto, y
as poder realizar la especificacin de requisitos. A partir de ella se plasman en papel
las ideas principales del sistema, que problemas se deben resolver y cules sern las
funciones que se llevaran a cabo.

28
Diseo:

Identificacin de la Arquitectura del Sistema: una ardua tarea, ya que es


importantsimo una arquitectura adecuada y consecuente con el proyecto que
deseamos desarrollar. De esta manera llegamos a la conclusin que la mejor
arquitectura es la basada en tres capas.

Diseo BD: es preciso saber cuales son los datos necesarios a almacenar y la
relacin de unas tablas con otras para poder empezar a estructurar las diferentes
pantallas.

Definir Interfaz: fase en la que se van a realizar los bocetos de cmo se va a


enfocar las interfaces. Tras esto se realiza una reunin con el cliente para comprobar
su conformidad con la estructura grafica que seguir la aplicacin.

Diseo Detallado:

Diseo de la capa de Presentacin: una faena laboriosa, ya que es


importantsimo realizar unas interfaces intuitivas y que aporten la informacin
necesaria al usuario.

Diseo de la capa de Persistencia: importantsima tarea, ya que debemos de


tener un acceso ptimo a la base de datos, tanto como para recuperar datos, como
para crearlos o actualizarlos.

Implementacin:

Codificacin: En esta fase se implementa toda la funcionalidad expuesta en


los casos de uso, hay que seguir fielmente la especificacin de requisitos, para que la
aplicacin desarrollada se adecue a las solicitudes de los clientes. Una vez finalizada
esta fase, se realiza una reunin con el cliente para presentarle la primera versin de
la aplicacin y que este pueda dar su opinin al respecto. Generalmente en la
presentacin de la primera versin de cualquier aplicacin al cliente aparecen nuevas
peticiones y sugerencias de modificaciones. En este punto debemos de dejarle muy
claro el coste adicional que conlleva modificar un proyecto en fase de desarrollo, y que
puede solicitar alguna ampliacin o mejora, siempre y cuando nosotros la validemos,
pero que una gran modificacin podra tener consecuencias catastrficas,

29
obligndonos a redisear todo el anlisis inicial y tener que modificar toda la estructura
del proyecto.

Depuracin: Realizacin de las mejoras a peticin del cliente como formatos


de fechas, modificacin en la visualizacin de informes, etc.

Pruebas:

Testeo: fase en donde hay que testear todo lo anterior para comprobar que el
sistema funciona a la perfeccin, en esta fase se deberan de detectar todos los
posibles Bugs, en el caso de que existiesen. Para un correcto Testeo deberamos de
coger los casos de uso y seguirlos paso a paso, marcando todo lo que esta testeado y
funcionando correctamente, para asegurarnos de que no nos olvidamos de testear
ninguna funcionalidad.

Correccin de Errores: se realiza prcticamente en paralelo al testeo para


solucionar los errores derivados de este, todos los Bugs detectados deben de ser
depurados antes de la entrega de la versin final al cliente.

Implantacin y Mantenimiento

Se implanta en el servidor del cliente y se da una formacin bsica a los


usuarios para el correcto manejo de la aplicacin, aunque durante un corto periodo de
tiempo se les dar soporte.

Tras esta etapa se realiza una entrega de la aplicacin al director del proyecto:
para que l determine si el proyecto ha llegado a los objetivos marcados de la manera
ms eficiente.

Como se puede observar, el proyecto se comienza a principios de Mayo de


2011 y se termina a principios de Septiembre de 2011. Para tener el avance del
proyecto de forma ms visual, se ha realizado un Diagrama de Gantt. sta es una
popular herramienta grfica cuyo objetivo es mostrar el tiempo de dedicacin previsto
para diferentes tareas o actividades a lo largo de un tiempo total determinado. A pesar
de que, en principio, el Diagrama de Gantt indica las relaciones existentes entre
actividades, y la posicin de cada tarea a lo largo del tiempo hace que se puedan
identificar dichas relaciones e interdependencias. Por ello, en gestin de proyectos,

30
dicho diagrama muestra el origen y el final de las diferentes unidades mnimas de
trabajo y los grupos de tareas o las dependencias entre unidades mnimas de trabajo.
Seguidamente en la figura 8 se puede ver con detalle cual es el resultado del
Diagrama de Gantt.

31
Fig. 8 Diagrama de Gantt del Proyecto

32
5. Anlisis detallado

- Casos de Uso

Un caso de uso representa una interaccin tpica entre un usuario y un sistema


informtico. Se utilizan para capturar los requisitos funcionales del sistema. Por ello los
casos de uso no son parte del diseo (cmo), sino parte del anlisis (qu). De forma
que al ser parte del anlisis nos ayudan a describir qu es lo que el sistema debe
hacer. Por tanto son lo qu hace el sistema desde el punto de vista del usuario. Es
decir, describen un uso del sistema y cmo este interacta con el usuario. Pero lo
realmente til de los casos de uso es el documento que describe el caso de uso, ya
que en l se explica la forma de interactuar entre el sistema y el usuario.

Haciendo referencia a una descripcin ms tcnica, se puede decir que un


caso de uso es un grafo con dos tipos de nodos: Actor, que representa cualquier
entidad externa (persona, dispositivos, otros sistemas) que intercambia informacin
con el sistema, por lo que est fuera de l, Caso de uso, es una secuencia de
intercambios en dilogo con el sistema que se encuentran relacionadas por su
comportamiento. Los arcos entre los actores y los casos de uso se denominan arcos
de comunicacin. El actor es un agente externo. Un actor representa un cierto papel
que un usuario puede jugar. Una mquina tambin puede ser un actor.

La notacin es muy importante, vase la figura 9. En el caso de los casos de


uso se representan por una elipse conteniendo el nombre. Los actores se representan
con un monigote y el nombre del actor al pie de la figura.

Fig.9 Notacin Casos de Usos

33
De manera que, un caso de uso describe una funcionalidad ms una
interaccin entre un actor y un sistema en forma de secuencia de acciones. La
descripcin se centra en lo que debe hacerse, no en la manera de hacerlo. Se debe de
expresar de forma sencilla y clara.

Otros aspectos importantes referentes a los casos de usos, son las relaciones
entre los propios casos de uso. Estas relaciones son: Incluye (<<include>>)

es un estereotipo de dependencia. Indica que un caso de uso es


incluido en otro. Tpicamente ocurre cuando unos casos de uso comparten unos pasos

comunes Extiende (<<extend>>) es un estereotipo de dependencia.


Ofrece una forma de extensin ms controlada que la relacin de generalizacin. El

caso de uso base declara un conjunto de puntos de extensin y


Generalizacin indica que in caso de uso es una variante de otro. El caso de uso
especializado puede variar cualquier aspecto del caso de uso base.

El primer nivel del diagrama de casos de uso, en este nivel nicamente vamos
a encontrar paquetes para despus ir explicando cada uno de ellos.

Fig.10 Primer Nivel Diagrama Casos de Uso

34
Seguidamente vamos a explicar cada uno de los paquetes.

Pantalla de Login

Iniciador: Usuario
Actor secundario: -
Precondicin: El servidor Tomcat y el servidor de Base de datos deben estar
arrancados y accesibles.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario quiere acceder a la recibe una solicitud y
aplicacin. devuelve al usuario la pantalla
de Login.
3 El usuario introduce el Login y 4 El sistema comprueba que
Password, y lo valida dicho usuario existe en la
presionando el botn aceptar. BBDD y si este existe
comprueba que el Password
es el correcto.

Puntos de Extensin

#1.- Si el usuario valida el formulario de Login sin introducir Login o Password,


aparecer un mensaje emergente indicndole los datos obligatorios para proceder a la
validacin del formulario.

#2.- Si el Login no existe en nuestra BBDD o el Password no se corresponde, la


aplicacin nos redireccionara a una pantalla de error con un mensaje para informarnos
del error producido.

35
Men Principal

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema detecta las solicitudes del usuario y reacciona
correctamente a estas peticiones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario se ha validado en la recibe una solicitud y devuelve
pantalla de Login. al usuario la pantalla principal.
3 El usuario selecciona cualquier 4 El sistema captura el nmero o
entrada del men o bien teclea entrada seleccionada y
el nmero que precede a dicha redirecciona el navegador a la
entrada a modo de atajo de pantalla correspondiente.
teclado.

Puntos de Extensin

#1.- En la pantalla principal tambin se encuentra disponible el botn de Cerrar


Sesin, que nos sacara de la aplicacin, redireccionandonos de nuevo a la pantalla
de Login.

36
1.- Alta Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario selecciona la opcin recibe una solicitud y
1.- Alta Producto o teclea 1 devuelve al usuario la pantalla
en el Men principal. de alta de producto.
3 El usuario rellena los campos 4 El sistema comprueba que los
obligatorios y valida el campos obligatorios estn
formulario. rellenados y que los datos
tienen el formato correcto, si
todo es correcto almacena los
datos en la BBDD y devuelve
la pantalla de xito.
5 El usuario presiona el botn 6 El sistema devuelve al usuario
aceptar. a la pantalla principal de la
aplicacin.

Puntos de Extensin

#1.- En la pantalla alta aparecer un botn que nos permita volver a la pantalla
principal sin guardar cambios.

#2.- Los campos Cdigo y Cdigo EAN no podrn ser introducidos manualmente
por el usuario, ya que estos campos los gestiona automticamente el sistema.

37
#3.- Si los datos de los campos obligatorios estn en blanco, o no tienen el formato
correcto, el sistema avisara mediante mensajes emergentes al usuario, para que este
complete o modifique los datos necesarios.

#4.- Si durante la insercin en la base de datos ocurre algn problema, la aplicacin


nos mostrara una pantalla de error, para informarnos de que la transaccin no se ha
realizado.

38
2.- Alta Ubicacin

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario selecciona la opcin recibe una solicitud y
2.- Alta Ubicacin o teclea 2 devuelve al usuario la pantalla
en el Men principal. de alta de ubicacin.
3 El usuario rellena los campos 4 El sistema comprueba que los
obligatorios y valida el campos obligatorios estn
formulario. rellenados y que los datos
tienen el formato correcto, si
todo es correcto almacena los
datos en la BBDD y devuelve
la pantalla de xito.
5 El usuario presiona el botn 6 El sistema devuelve al usuario
aceptar. a la pantalla principal de la
aplicacin.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Los campos Cdigo y Cdigo EAN no podrn ser introducidos manualmente
por el usuario, ya que estos campos los gestiona automticamente el sistema.

39
#3.- Si los datos de los campos obligatorios estn en blanco, o no tienen el formato
correcto, el sistema avisara mediante mensajes emergentes al usuario, para que este
complete o modifique los datos necesarios.

#4.- Si durante la insercin en la base de datos ocurre algn problema, la aplicacin


nos mostrara una pantalla de error, para informarnos de que la transaccin no se ha
realizado.

40
3.- Entrada Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario selecciona la opcin recibe una solicitud y
3.- Entrada Producto o teclea devuelve al usuario la
3 en el Men principal. pantalla de Entrada de
Producto.
3 El usuario rellena el campo 4 El sistema comprueba que
COD EAN UBICACION y dicho Cdigo de ubicacin
presiona Enter. existe en la BBDD y nos
rellena la descripcin.
5 El usuario rellena el campo 6 El sistema comprueba que
COD EAN Producto y dicho Cdigo de producto
presiona Enter. existe en la BBDD y nos
rellena la descripcin.
7 Por ultimo el usuario rellena la 8 El sistema comprueba que
cantidad y presiona el botn los campos obligatorios estn
aceptar. rellenados y que los datos
tienen el formato correcto, si
todo es correcto almacena
los datos en la BBDD y
devuelve la pantalla de
xito.
9 El usuario presiona el botn 10 El sistema devuelve al
aceptar. usuario a la pantalla principal
de la aplicacin.

41
Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Si los datos de los campos obligatorios estn en blanco, o no tienen el formato
correcto, el sistema avisara mediante mensajes emergentes al usuario, para que este
complete o modifique los datos necesarios.

#3.- Si durante la insercin en la base de datos ocurre algn problema, la aplicacin


nos mostrara una pantalla de error, para informarnos de que la transaccin no se ha
realizado.

42
4.- Salida Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario selecciona la opcin recibe una solicitud y
4.- Salida Producto o teclea devuelve al usuario la
4 en el Men principal. pantalla de Salida de
Producto.
3 El usuario rellena el campo 4 El sistema comprueba que
COD EAN UBICACION y dicho Cdigo de ubicacin
presiona Enter. existe en la BBDD y nos
rellena la descripcin.
5 El usuario rellena el campo 6 El sistema comprueba que
COD EAN Producto y dicho Cdigo de producto
presiona Enter. existe en la BBDD y nos
rellena la descripcin.
7 Por ultimo el usuario rellena la 8 El sistema comprueba que
cantidad y presiona el botn los campos obligatorios estn
aceptar. rellenados y que los datos
tienen el formato correcto, si
todo es correcto almacena
los datos en la BBDD y
devuelve la pantalla de
xito.
9 El usuario presiona el botn 10 El sistema devuelve al
aceptar. usuario a la pantalla principal
de la aplicacin.

43
Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Si los datos de los campos obligatorios estn en blanco, o no tienen el formato
correcto, el sistema avisara mediante mensajes emergentes al usuario, para que este
complete o modifique los datos necesarios.

#3.- Si durante la insercin en la base de datos ocurre algn problema, la aplicacin


nos mostrara una pantalla de error, para informarnos de que la transaccin no se ha
realizado.

44
5.- Movimiento Productos

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos
INTENCION DE USUARIO OBLIGACION DEL SISTEMA
1 El caso de uso se inicia 2 El servidor de la aplicacin
cuando el usuario selecciona la recibe una solicitud y
opcin 5.- Movimiento devuelve al usuario la
Productos o teclea 5 en el pantalla de Movimiento de
Men principal. Producto.
3 El usuario rellena el campo 4 El sistema comprueba que
Ubicacin Origen y presiona dicho Cdigo de ubicacin
Enter. existe en la BBDD y nos
rellena la descripcin.
5 El usuario rellena el campo 6 El sistema comprueba que
COD EAN Producto y dicho Cdigo de producto
presiona Enter. existe en la BBDD y nos
rellena la descripcin.
7 El usuario rellena el campo 8 El sistema comprueba que
Ubicacin Destino y presiona dicho Cdigo de ubicacin
Enter. existe en la BBDD y nos
rellena la descripcin.
9 Por ultimo el usuario rellena la 10 El sistema comprueba que
cantidad y presiona el botn los campos obligatorios
aceptar. estn rellenados y que los
datos tienen el formato
correcto, si todo es correcto
almacena los datos en la
BBDD y devuelve la pantalla
de xito.
11 El usuario presiona el botn 12 El sistema devuelve al

45
aceptar. usuario a la pantalla principal
de la aplicacin.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Si los datos de los campos obligatorios estn en blanco, o no tienen el formato
correcto, el sistema avisara mediante mensajes emergentes al usuario, para que este
complete o modifique los datos necesarios.

#3.- Si durante la insercin en la base de datos ocurre algn problema, la aplicacin


nos mostrara una pantalla de error, para informarnos de que la transaccin no se ha
realizado.

46
6.- Listado de Productos

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario selecciona la opcin recibe una solicitud y
6.- Listado de Productos o devuelve al usuario la pantalla
teclea 6 en el Men principal. de Listado de Productos.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Los listados se mostraran paginados, organizando los productos en grupos de 10


por pgina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

47
6.1. Bsqueda en Listado de Productos

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Productos.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera el
el usuario inserta un cdigo, parmetro de bsqueda y
descripcin o parte de una devuelve un listado de
descripcin en el campo de productos filtrado por dicho
bsqueda de la pantalla de parmetro.
Listado de Productos y presiona
el botn Buscar.

Puntos de Extensin

#1.- Los listados aparecern paginados, organizando los productos en grupos de 10


por pagina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

#2.- El parmetro de bsqueda deber conservarse durante la navegacin por el


listado.

48
6.2. Ordenacin en Listado de Productos

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Productos.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera los
el usuario selecciona un campo parmetros de ordenacin y
por el que organizar y el orden devuelve un listado de
(ASC - ascendente o DESC - productos filtrado por dichos
descendente) en la pantalla de parmetros.
Listado de Productos y presiona
el botn Ordenar.

Puntos de Extensin

#1.- Los listados aparecern paginados, organizando los productos en grupos de 10


por pagina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

#2.- Los parmetros de ordenacin debern conservarse durante la navegacin por el


listado.

49
6.3. Abrir Ficha de Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Productos.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera los datos
el usuario selecciona una fila del de la fila seleccionada y abre
listado de productos y pulsa el la ficha del producto que se
botn Abrir, o simplemente corresponde con dicha fila.
hace doble click sobre la fila.

Puntos de Extensin

#1.- La ficha del producto abierta dispondr de un botn volver, que nos permitir
volver al listado de productos.

#2.- Desde la ficha de producto podremos realizar el mantenimiento de los productos


(modificar o eliminar el producto).

#3.- En la ficha del producto debe de aparecer un botn Imprimir Etiqueta, que
sacara por la impresora de etiquetas o en PDF la etiqueta de cdigo de barras
correspondiente a dicho producto.

50
6.4. Imprimir Listado de Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Productos.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema generara un
el usuario pulsa el botn informe en PDF con el listado
Imprimir PDF en la pantalla del de productos.
listado de productos.
3 El usuario selecciona imprimir o
guardar el informe.

Puntos de Extensin

51
6.5. Operaciones en Ficha de Producto

6.5.1. Modificar Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Ficha de Producto.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema comprueba que los
el usuario se encuentra en la campos obligatorios estn
Ficha del Producto, modifica el rellenados y que los datos
contenido de los campos del tienen el formato correcto, si
formulario y pulsa Guardar. todo es correcto almacena los
datos en la BBDD y devuelve
la pantalla de xito.
3 El usuario presiona el botn 4 El sistema devuelve al usuario
aceptar. a la pantalla principal de la
aplicacin.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Los campos Cdigo y Cdigo EAN no se podrn modificar, ya que estos
campos los gestiona automticamente el sistema.

#3.- Si los datos de los campos obligatorios estn en blanco, o no tienen el formato
correcto, el sistema avisara mediante mensajes emergentes al usuario, para que este
complete o modifique los datos necesarios.

52
#4.- Si durante la insercin en la base de datos ocurre algn problema, la aplicacin
nos mostrara una pantalla de error, para informarnos de que la transaccin no se ha
realizado.

53
6.5.2. Eliminar Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Ficha de Producto.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema comprueba que el
el usuario se encuentra en la producto a eliminar no tiene
Ficha del Producto y pulsa tuplas relacionadas en otras
Eliminar. tablas, y si no existen se
procede a la eliminacin de
dicho producto de la BBDD y
se devuelve la pantalla de
xito.
3 El usuario presiona el botn 4 El sistema devuelve al usuario
aceptar. a la pantalla principal de la
aplicacin.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Si durante la insercin en la base de datos ocurre algn problema, la aplicacin


nos mostrara una pantalla de error, para informarnos de que la transaccin no se ha
realizado.

54
6.5.3. Imprimir Etiqueta Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Ficha de Producto.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema generara un
el usuario pulsa el botn informe en PDF con la
Imprimir Etiqueta en la pantalla descripcin y el cdigo de
de Ficha de producto. barras del producto.
3 El usuario selecciona imprimir o
guardar el informe.

Puntos de Extensin

55
7.- Listado de Ubicaciones

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario selecciona la opcin recibe una solicitud y
7.- Listado de Ubicaciones o devuelve al usuario la pantalla
teclea 7 en el Men principal. de Listado de Ubicaciones.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Los listados se mostraran paginados, organizando los productos en grupos de 10


por pgina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

56
7.1. Bsqueda en Listado de Ubicaciones

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Ubicaciones.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera el
el usuario inserta un cdigo, parmetro de bsqueda y
descripcin o parte de una devuelve un listado de
descripcin en el campo de Ubicaciones filtrado por dicho
bsqueda de la pantalla de parmetro.
Listado de Ubicaciones y
presiona el botn Buscar.

Puntos de Extensin

#1.- Los listados aparecern paginados, organizando los productos en grupos de 10


por pagina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

#2.- El parmetro de bsqueda deber conservarse durante la navegacin por el


listado.

57
7.2. Ordenacin en Listado de Ubicaciones

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Ubicaciones.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera los
el usuario selecciona un campo parmetros de ordenacin y
por el que organizar y el orden devuelve un listado de
(ASC - ascendente o DESC - Ubicaciones filtrado por
descendente) en la pantalla de dichos parmetros.
Listado de Ubicaciones y
presiona el botn Ordenar.

Puntos de Extensin

#1.- Los listados aparecern paginados, organizando los productos en grupos de 10


por pagina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

#2.- Los parmetros de ordenacin debern conservarse durante la navegacin por el


listado.

58
7.3. Abrir Ficha de Ubicacin

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Ubicaciones.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera los datos
el usuario selecciona una fila del de la fila seleccionada y abre
listado de Ubicaciones y pulsa el la ficha de la Ubicacin que se
botn Abrir, o simplemente corresponde con dicha fila.
hace doble click sobre la fila.

Puntos de Extensin

#1.- La ficha de la ubicacin abierta dispondr de un botn volver, que nos permitir
volver al listado de productos.

#2.- Desde la ficha de ubicacin podremos realizar el mantenimiento de las


ubicaciones (modificar o eliminar el producto).

#3.- En la ficha de la ubicacin debe de aparecer un botn Imprimir Etiqueta, que


sacara por la impresora de etiquetas o en PDF la etiqueta de cdigo de barras
correspondiente a dicha ubicacin.

59
7.4. Imprimir Listado de Ubicacin

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Ubicaciones.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema generara un
el usuario pulsa el botn informe en PDF con el listado
Imprimir PDF en la pantalla del de Ubicaciones.
listado de Ubicaciones.
3 El usuario selecciona imprimir o
guardar el informe.

Puntos de Extensin

60
7.5. Operaciones en Ficha de Ubicacin

7.5.1. Modificar Ubicacin

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Ficha de Ubicacin.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema comprueba que los
el usuario se encuentra en la campos obligatorios estn
Ficha de la ubicacin, modifica rellenados y que los datos
el contenido de los campos del tienen el formato correcto, si
formulario y pulsa Guardar. todo es correcto almacena los
datos en la BBDD y devuelve
la pantalla de xito.
3 El usuario presiona el botn 4 El sistema devuelve al usuario
aceptar. a la pantalla principal de la
aplicacin.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Los campos Cdigo y Cdigo EAN no se podrn modificar, ya que estos
campos los gestiona automticamente el sistema.

#3.- Si los datos de los campos obligatorios estn en blanco, o no tienen el formato
correcto, el sistema avisara mediante mensajes emergentes al usuario, para que este
complete o modifique los datos necesarios.

61
#4.- Si durante la insercin en la base de datos ocurre algn problema, la aplicacin
nos mostrara una pantalla de error, para informarnos de que la transaccin no se ha
realizado.

62
7.5.2. Eliminar Ubicacin

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Ficha de Ubicacin.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema comprueba que la
el usuario se encuentra en la ubicacin a eliminar no tiene
Ficha de la ubicacin y pulsa tuplas relacionadas en otras
Eliminar. tablas, y si no existen se
procede a la eliminacin de
dicha ubicacin de la BBDD y
se devuelve la pantalla de
xito.
3 El usuario presiona el botn 4 El sistema devuelve al usuario
aceptar. a la pantalla principal de la
aplicacin.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Si durante la insercin en la base de datos ocurre algn problema, la aplicacin


nos mostrara una pantalla de error, para informarnos de que la transaccin no se ha
realizado.

63
7.5.3. Imprimir Etiqueta Ubicacin

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Ficha de Ubicacin.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema generara un
el usuario pulsa el botn informe en PDF con la
Imprimir Etiqueta en la pantalla descripcin y el cdigo de
de Ficha de Ubicacin. barras de la Ubicacin.
3 El usuario selecciona imprimir o
guardar el informe.

Puntos de Extensin

64
8.- Listado de Movimientos

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario selecciona la opcin recibe una solicitud y
8.- Listado de Movimientos o devuelve al usuario la pantalla
teclea 8 en el Men principal. de Listado de Movimientos.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal sin
guardar cambios.

#2.- Los listados se mostraran paginados, organizando los productos en grupos de 10


por pgina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

65
8.1. Bsqueda en Listado de Movimientos

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Movimientos.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera el
el usuario inserta un cdigo, parmetro de bsqueda y
descripcin o parte de una devuelve un listado de
descripcin en el campo de movimientos filtrado por dicho
bsqueda de la pantalla de parmetro.
Listado de Movimientos y
presiona el botn Buscar.

Puntos de Extensin

#1.- Los listados aparecern paginados, organizando los productos en grupos de 10


por pagina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

#2.- El parmetro de bsqueda deber conservarse durante la navegacin por el


listado.

66
8.2. Abrir Ficha de Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Movimientos.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera los datos
el usuario selecciona una fila del de la fila seleccionada y abre
listado de movimientos y pulsa la ficha del producto que se
el botn Abrir, o simplemente corresponde con dicha fila.
hace doble click sobre la fila.

Puntos de Extensin

#1.- La ficha del producto abierta dispondr de un botn volver, que nos permitir
volver al listado de movimientos.

#2.- Desde la ficha de producto podremos realizar el mantenimiento de los productos


(modificar o eliminar el producto).

#3.- En la ficha del producto debe de aparecer un botn Imprimir Etiqueta, que
sacara por la impresora de etiquetas o en PDF la etiqueta de cdigo de barras
correspondiente a dicho producto.

67
8.3. Imprimir Listado de Movimientos

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Movimientos.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema generara un
el usuario pulsa el botn informe en PDF con el listado
Imprimir PDF en la pantalla del de movimientos.
listado de movimientos.
3 El usuario selecciona imprimir o
guardar el informe.

Puntos de Extensin

68
9.- Listado de Inventario

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada y el usuario se ha validado
correctamente.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El servidor de la aplicacin
el usuario selecciona la opcin recibe una solicitud y
9.- Listado de Inventario o devuelve al usuario la pantalla
teclea 9 en el Men principal. de Listado de Inventario.

Puntos de Extensin

#1.- En la pantalla aparecer un botn que nos permita volver a la pantalla principal.

#2.- Los listados se mostraran paginados, organizando los productos en grupos de 10


por pgina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

69
9.1. Bsqueda en Listado de Inventario

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Inventario.
Poscondicin: El sistema registra las modificaciones.

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera el
el usuario inserta un cdigo, parmetro de bsqueda y
descripcin o parte de una devuelve un listado de
descripcin en el campo de inventario filtrado por dicho
bsqueda de la pantalla de parmetro.
Listado de Inventario y presiona
el botn Buscar.

Puntos de Extensin

#1.- Los listados aparecern paginados, organizando los productos en grupos de 10


por pagina y permitiendo al usuario una navegacin mediante botones siguiente,
anterior, primera y ultima.

#2.- El parmetro de bsqueda deber conservarse durante la navegacin por el


listado.

70
9.2. Abrir Ficha de Producto

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado
correctamente y nos encontramos en la pantalla de Listado de Inventario.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema recupera los datos
el usuario selecciona una fila del de la fila seleccionada y abre
listado de Inventario y pulsa el la ficha del producto que se
botn Abrir, o simplemente corresponde con dicha fila.
hace doble click sobre la fila.

Puntos de Extensin

#1.- La ficha del producto abierta dispondr de un botn volver, que nos permitir
volver al listado de inventario.

#2.- Desde la ficha de producto podremos realizar el mantenimiento de los productos


(modificar o eliminar el producto).

#3.- En la ficha del producto debe de aparecer un botn Imprimir Etiqueta, que
sacara por la impresora de etiquetas o en PDF la etiqueta de cdigo de barras
correspondiente a dicho producto.

71
9.3. Imprimir Listado de Inventario

Iniciador: Usuario
Actor secundario: -
Precondicin: La aplicacin esta arrancada, el usuario se ha validado correctamente
y nos encontramos en la pantalla de Listado de Inventario.
Poscondicin: -

Flujo de Eventos

INTENCION DE USUARIO OBLIGACION DEL SISTEMA


1 El caso de uso se inicia cuando 2 El sistema generara un
el usuario pulsa el botn informe en PDF con el listado
Imprimir PDF en la pantalla del de inventario.
listado de inventario.
3 El usuario selecciona imprimir o
guardar el informe.

Puntos de Extensin

72
- Diagrama de clases

El Diagrama de Clases representa la estructura y comportamiento de cada uno


de los objetos del sistema y sus relaciones con los dems objetos. El objetivo principal
es representar los aspectos estticos del sistema. Al mismo tiempo nos representa la
dinmica de los objetos.

Los elementos de un diagrama de clases son las clases, las relaciones y las
interfaces. Las clases son las que describen un conjunto de objetos con propiedades y
comportamientos comunes.

Dentro de la estructura de una clase se han de definir los siguientes elementos:


los atributos, son los datos asociados a los elementos y que toman valor al instanciar
objetos de una clase, y las operaciones (mtodos), que son funciones o procesos
propios de los objetos de una clase.

La notacin es semejante a la que aparece en la figura 11.

Fig.11 Notacin Clase

Las relaciones son los enlaces entre los distintos elementos de los diagramas.
A varios tipos de relaciones, por lo que nos vamos a centrar en explicar aquellas que
nosotros hemos utilizado en nuestro diagrama. Estas son:

Asociacin: relacin genrica entre dos clases que representa un conjunto de


enlaces entre objetos. Denota generalmente una dependencia semntica.

Herencia: establecimiento de una jerarqua padre/hijo entre las clases


implicadas. Permite a una clase (hijo o subclase) heredar los atributos de otra (padre o
superclase) siendo posible aadir atributos y operaciones especficas.

73
Composicin: representacin de una relacin de composicin entre un
elemento y sus componentes (rombo relleno).

Agregacin: parte de una asociacin en la cual los objetos representan


componentes o partes de otro objeto (Composicin dbil).

Restricciones: permiten establecer limitaciones o restricciones entre los


elementos del diagrama de clases (or exclusivo).

Seguidamente se puede comprobar, en la figura 12 la utilizacin de las


relaciones comentadas anteriormente en nuestro diagrama de clases. En l se pueden
contabilizar las 7 clases que hemos llevado a cabo, o lo que es lo mismo, los objetos
que modelan nuestro trabajo.

Fig.12 Diagrama de clases

74
- Modelo Relacional

Las bases de datos relacionales son el tipo de bases de datos actualmente


ms difundido. Los motivos de este xito son fundamentalmente dos: ofrecer un
sistema simple y eficaz para representar y manipular los datos, y que se basan es un
modelo, el relacional, con slidas bases tericas.

El modelo relacional para la gestin de una base de datos, es un modelo de


datos basado en la lgica de predicado y en la teora de conjuntos. La estructura
fundamental del modelo relacional es precisamente esa, la relacin. Estas relaciones
podran considerarse en forma lgica como conjuntos de datos llamados tuplas. Pese
a que sta es la teora de las bases de datos relacionales, la mayora de las veces se
conceptualiza de una manera ms fcil de imaginar, esto es, pensando en cada
relacin como si fuese una tabla que est compuestas por registros (cada fila de la
tabla sera un registro o tupla), y columnas (tambin llamadas campos).

En este modelo todos los datos son almacenados en relaciones, y como cada
relacin es un conjunto de datos, el orden en el que estos se almacenen no tiene
mayor relevancia.

Esto tiene la considerable ventaja de que es ms fcil de entender y de utilizar


por un usuario no experto. La informacin puede ser recuperada o almacenada por
medio de consultas que ofrecen una amplia flexibilidad y poder para administrar la
informacin. Para manipular la informacin utilizamos un lenguaje relacional,
actualmente se cuenta con dos lenguajes formales el lgebra relacional y el clculo
relacional. El lgebra relacional permite describir la forma de realizar una consulta, en
cambio, el clculo relacional slo indica lo que se desea devolver.

El lenguaje ms comn (el que nosotros hemos utilizado) para construir las
consultas a bases de datos relacionales es SQL (Structured Query Language), un
estndar implementado por los principales motores o sistemas de gestin de bases de
datos relacionales.

A continuacin, en la figura 13, se puede ver la nomenclatura utilizada para


representar nuestro modelo relacional.

75
Fig.13 Notacin Modelo Relacional

Como vemos en la imagen anterior, cada caja hace referencia a una tabla. El
nombre que aparece en la parte superior de la tabla es el nombre de la tabla en
cuestin. La primera fila que aparece, donde pone PK (PRIMARY KEY), expresa cual
es la clave primaria dentro de la tabla. Seguidamente, en la siguiente fila podemos ver
una serie de nombres, los cuales hacen referencia a los atributos de la tabla. Pero en
aquellos atributos a los que aparezcan al lado FK (FOREIGN KEY) quiere decir cul o

cules son las claves ajenas de la tabla. Para finalizar, la flecha significa
con que tabla se relaciona dicha clave ajena, en este ejemplo seria la Tabla Paciente
se relaciona con Usuario.

Normalmente se pueden identificar las tablas del modelo relacional a travs del
diagrama de clases que hemos obtenido. En este caso es casi similar, ya que tenemos
las mismas 7 tablas que tenemos en el diagrama de clases.

El modelo relacional que hemos obtenido en nuestro proyecto es el que se


puede observar en la figura 14.

76
Fig.14 Modelo Relacional

77
6. Implementacin

Entorno

Eclipse HELIOS es un entorno de desarrollo integrado de cdigo abierto


multiplataforma para desarrollar lo que el proyecto llama "Aplicaciones de Cliente
Enriquecido", opuesto a las aplicaciones "Cliente-liviano" basadas en navegadores.
Esta plataforma, tpicamente ha sido usada para desarrollar entornos de desarrollo
integrados (del ingls IDE), como el IDE de Java llamado Java Development Toolkit
(JDT) y el compilador (ECJ) que se entrega como parte de Eclipse (y que son usados
tambin para desarrollar el mismo Eclipse). Sin embargo, tambin se puede usar para
otros tipos de aplicaciones cliente, como BitTorrent o Azureus.

Eclipse es tambin una comunidad de usuarios, extendiendo constantemente


las reas de aplicacin cubiertas. Un ejemplo es el recientemente creado Eclipse
Modeling Project, cubriendo casi todas las reas de Model Driven Engineering.

Eclipse fue desarrollado originalmente por IBM como el sucesor de su familia


de herramientas para VisualAge. Eclipse es ahora desarrollado por la Fundacin
Eclipse, una organizacin independiente sin nimo de lucro que fomenta una
comunidad de cdigo abierto y un conjunto de productos complementarios,
capacidades y servicios.

Eclipse fue liberado originalmente bajo la Common Public License, pero


despus fue re-licenciado bajo la Eclipse Public License. La Free Software Foundation
ha dicho que ambas licencias son licencias de software libre, pero son incompatibles
con Licencia pblica general de GNU (GNU GPL).

Eclipse es un potente entorno de desarrollo integrado Java (IDE, por sus siglas
en ingls), es multiplataforma, (disponible para Windows, Linux, Solaris, y Mac OS X)
que agiliza el desarrollo de las aplicaciones en lenguaje Java.

Se puede utilizar para el desarrollo completo de la aplicacin (accesos a la


base de datos (DAO), lgica de la aplicacin y la interfaz grfica de usuario) y para
realizar las pruebas durante y despus del proceso de desarrollo, ya que integra el
diferentes servidores como Apache, IBM WebSphere, JBoss, etc. y te permite arrancar

78
un servidor embebido (en nuestro caso un Tomcat), para la realizacin de dichas
pruebas.

He optado por Eclipse Helios como IDE de desarrollo, ya que es una


herramienta OpenSource, muy robusta que integra todo lo necesario para el desarrollo
web (editores de texto para XML, JavaServer Pages y Struts, refactorizacin
distribuida, auditoria de cdigo, testeo de unidades, depuracin avanzada, sistemas de
control de versiones, etc.).

Algunas de las caractersticas ms importantes, y que hemos usado para el


proyecto para facilitar nuestro trabajo han sido:

Editor de Cdigo: al igual que cualquier otro IDE, incluye un editor de cdigo
que soporta resaltado de sintaxis y el uso de cdigo de IntelliSense, no slo en
variables, funciones y mtodos, sino tambin como lenguaje que construye bucles y
preguntas. Cosa que resulta muy til, ya que te ayuda a programar de una forma ms
rpida y eficaz, sin tener que estar buscando por las clases los nombre de las
propiedades o de los mtodos que quieras usar. Tambin ha sido til a la hora de
crear las propiedades, ya que nicamente colocando prop y tabular, te crea la
estructura para realizar una propiedad. De igual manera pasa con la creacin de
bucles, como ya hemos comentado anteriormente. Adems apoya el establecimiento
de marcadores en el cdigo para facilitar una navegacin ms rpida.

Debugger: es una herramienta muy util para poder encontrar los problemas
en un determinado punto del codigo de nuestra aplicacin. Colocando un punto de
interrupcin en la zona de cdigo donde se produce el error, o creemos que se puede
producir, se va ejecutando paso por paso para ver qu valores van tomando las
variables y dems propiedades, y as comprobar si es lo esperado, y si no lo es,
detectar con ms certeza donde nos hemos podido equivocar, para despus poder
reparar el error. Estos breakpoints pueden ser condicionales, es decir, que
coloquemos una condicin para cuando esta se cumpla, entonces se produzca dicha
interrupcin. Adems, se puede ir recorriendo en cdigo de varias formas, haciendo
una ejecucin paso a paso por instrucciones o paso a paso por procedimientos. La
primera hace referencia a que pasar por todas las lneas de cdigo por las cuales
deba pasar, y la segunda, hace el recorrido ms rpido sin introducirse en los mtodos
por los que vaya pasando.

79
Diseo: en nuestra aplicacin hemos utilizado JSP (HTML con Java y
JavaScript). Ademas de usar estilos y CSS para adecuar la interfaz grfica de
usuario.

o Independencia de plataforma. Al tratarse de una aplicacin Web, puede


ejecutarse en cualquier navegador (Internet Explorer, Firefox, Opera, Chrome, ),
independientemente del sistema operativo de la maquina.

Otro aspecto importante referido al entorno, es el lenguaje que hemos utilizado


para llevar a cabo nuestro proyecto, Java. Se trata de un lenguaje orientado a objetos
elegante y con seguridad de tipos que permiten a los desarrolladores crear una amplia
gama de aplicaciones slidas y seguras.

La segunda caracterstica, la independencia de la plataforma, significa que


programas escritos en el lenguaje Java pueden ejecutarse igualmente en cualquier
tipo de hardware. Este es el significado de ser capaz de escribir un programa una vez
y que pueda ejecutarse en cualquier dispositivo Java dispone de una herramienta
llamada el recolector automtico de basura (o automatic garbage collector). El
programador determina cundo se crean los objetos y el entorno en tiempo de
ejecucin de Java (Java Runtime) es el responsable de gestionar el ciclo de vida de
los objetos. El programa, u otros objetos pueden tener localizado un objeto mediante
una referencia a ste (que, desde un punto de vista de bajo nivel es una direccin de
memoria). Cuando no quedan referencias a un objeto, el recolector de basura de Java
borra el objeto, liberando as la memoria que ocupaba previniendo posibles fugas
(ejemplo: un objeto creado y nicamente usado dentro de un mtodo slo tiene
entidad dentro de ste; al salir del mtodo el objeto es eliminado).

El lenguaje en s mismo toma mucha de su sintaxis de C y C++, pero tiene un


modelo de objetos ms simple y elimina herramientas de bajo nivel, que suelen inducir
muchos errores, como la manipulacin directa de punteros o memoria. La sintaxis de
Java se deriva en gran medida de C++. Pero a diferencia de ste, que combina la
sintaxis para programacin genrica, estructurada y orientada a objetos, Java fue
construido desde el principio para ser completamente orientado a objetos. Todo en
Java es un objeto (salvo algunas excepciones), y todo en Java reside en alguna clase
(recordemos que una clase es un molde a partir del cual pueden crearse varios
objetos).

80
Tambin admite mtodos y tipos genricos, que proporcionan mayor
rendimiento y seguridad de tipos, e iteradores, que permiten a los implementadores de
clases de coleccin definir comportamientos de iteracin personalizados que el cdigo
de cliente puede utilizar fcilmente.

Como lenguaje orientado a objetos que es, admite los conceptos de


encapsulacin, herencia y polimorfismo. Todas las variables y mtodos, incluido el
mtodo Main que es el punto de entrada de la aplicacin, se encapsulan dentro de
definiciones de clase. Una clase puede heredas directamente de una clase primaria,
pero puede implementar cualquier nmero de interfaces.

iReport es un diseador visual de cdigo abierto para crear informes complejos


utilizando la biblioteca JasperReports, el ms avanzado motor de fuente abierta de
informacin disponibles, aprovechando toda su potencia. Los datos para imprimir, se
pueden adquirir en cualquier tipo de fuente de datos incluidas las bases de datos,
OLAP XML / A conexiones, archivos XML, CSV, las colecciones de JavaBeans o
incluso la costumbre fuentes proporcionadas por el usuario. Proporciona un soporte
incorporado para varios lenguajes como consulta SQL, HQL, XPath, EJBQL y MDX y
permite conectar a la costumbre en los idiomas necesarios como PL / SQL. iReport
ofrece un entorno completo para crear y probar las fuentes de datos, diseo de los
informes, previo y la exportacin en todos los formatos incluyendo PDF, HTML, XML,
Word (RTF), Excel, OpenOffice (ODF), texto y CSV. Para los desarrolladores, iReport
Jasper ayuda a generar los archivos que se pueden desplegar en cualquier aplicacin
Java (web y aplicacin de escritorio) para generar informes rica dinmica en cualquier
formato. La integracin con JasperReports requiere slo unas lneas de cdigo de
proporcionar al instante de corte de edad de presentacin de informes a cualquier
aplicacin Java. iReport puede ser usado para desplegar y editar informes en
JasperServer, un alto rendimiento de cdigo abierto servidor de informes que
proporciona servicios adicionales como la seguridad, repositorio de recursos, informe
de la programacin, web para la integracin con otras aplicaciones y una interfaz web
para gestionar, ejecutar y generar el informes.

Los pasos para crear y desplegar un informe en una aplicacin Java son los
siguientes. El primer paso es crear la plantilla de informe, un archivo XML con
extensin jrxml (XML JasperReports). Esta plantilla se puede crear a mano o utilizando
una herramienta como iReport. El jrxml contiene toda la informacin de diseo y otras
cosas como la posibilidad de consulta que deben ser utilizados para adquirir los datos

81
y la definicin de parmetros de entrada. Jrxml El archivo est compilado en un
formato binario que producen un archivo Jasper. Jasper el archivo puede ser cargado
en una aplicacin Java utilizando el JasperRepors API, y se utiliza para generar el
informe con una fuente de datos (es decir, una conexin JDBC) y si es necesario los
parmetros de entrada (que puede ser utilizada por ejemplo para filtrar los registros).
El resultado puede ser exportado en un formato final (como PDF) o ver con el
JasperReports construido en espectador. Todas estas operaciones se pueden realizar
directamente en iReport como parte del proceso de elaboracin de informe.

MySQL es un sistema de gestin de base de datos relacional, multihilo y


multiusuario con ms de seis millones de instalaciones. MySQL AB desde enero de
2008 una subsidiaria de Sun Microsystems y sta a su vez de Oracle Corporation
desde abril de 2009 desarrolla MySQL como software libre.

Inicialmente, MySQL careca de elementos considerados esenciales en las


bases de datos relacionales, tales como integridad referencial y transacciones. A pesar
de ello, atrajo a los desarrolladores de pginas web con contenido dinmico,
justamente por su simplicidad.

MySQL funciona sobre mltiples plataformas, incluyendo: AIX, BSD, FreeBSD,


HP-UX, GNU/Linux, NetBSD, Novell Netware, OpenBSD, OS/2 Warp, QNX, SGI IRIX,
Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, eBD, Windows 95,
Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista, y otras
versiones de Windows.

Poco a poco los elementos de los que careca MySQL estn siendo
incorporados tanto por desarrollos internos, como por desarrolladores de software
libre. Entre las caractersticas disponibles en las ltimas versiones se puede destacar:

Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas


igualmente. Un amplio subconjunto de ANSI SQL 99, y varias extensiones.
Diferentes opciones de almacenamiento segn si se desea velocidad en las
operaciones o el mayor nmero de operaciones disponibles.
Transacciones y claves forneas.
Conectividad segura.
Replicacin.
Bsqueda e indexacin de campos de texto.

82
Procedimientos almacenados
Disparadores (triggers)
Cursores
Vistas actualizables
Soporte a VARCHAR
INFORMATION_SCHEMA
Modo Strict
Soporte X/Open XA de transacciones distribuidas; transaccin en dos fases
como parte de esto, utilizando el motor InnoDB de Oracle
Transacciones con los motores de almacenamiento InnoDB, BDB Y Cluster;
puntos de recuperacin (savepoints) con InnoDB
Soporte para SSL
Query caching
Sub-SELECTs (o SELECTs anidados)
Rplica con un maestro por esclavo, varios esclavos por maestro, sin soporte
automtico para mltiples maestros por esclavo.
Embedded database library
Soporte completo para Unicode
Conforme a las reglas ACID usando los motores InnoDB, BDB y Cluster
Shared-nothing clustering through MySQL Cluster Existen varias APIs que
permiten, a aplicaciones escritas en diversos lenguajes de programacin, acceder a
las bases de datos MySQL, incluyendo C, C++, C#, Pascal, Delphi (va dbExpress),
Eiffel, Smalltalk, Java (con una implementacin nativa del driver de Java), Lisp, Perl,
PHP, Python, Ruby, Gambas, REALbasic (Mac), (x)Harbour (Eagle1), FreeBASIC, y
Tcl; cada uno de estos utiliza una API especfica. Tambin existe un interfaz ODBC,
llamado MyODBC que permite a cualquier lenguaje de programacin que soporte
ODBC comunicarse con las bases de datos MySQL. Tambin se puede acceder desde
el sistema SAP, lenguaje ABAP.

MySQL es un sistema de administracin de bases de datos. Una base de datos


es una coleccin estructurada de tablas que contienen datos. Para agregar, acceder a
y procesar datos guardados en un computador, se necesita un administrador como
MySQL Server.

MySQL es un sistema de administracin relacional de bases de datos. Una


base de datos relacional archiva datos en tablas separadas en vez de colocar todos
los datos en un gran archivo. Esto permite velocidad y flexibilidad. Las tablas estn

83
conectadas por relaciones definidas que hacen posible combinar datos de diferentes
tablas sobre pedido.

MySQL es software de fuente abierta. Fuente abierta significa que es posible


para cualquier persona usarlo y modificarlo. Cualquier persona puede bajar el cdigo
fuente de MySQL y usarlo sin pagar. Cualquier interesado puede estudiar el cdigo
fuente y ajustarlo a sus necesidades. MySQL usa el GPL (GNU General Public
License) para definir que puede hacer y que no puede hacer con el software en
diferentes situaciones. Si usted no se ajusta al GPL o requiere introducir cdigo
MySQL en aplicaciones comerciales, usted puede comprar una versin comercial
licenciada.

Las siguientes caractersticas son implementadas nicamente por MySQL:

Mltiples motores de almacenamiento (MyISAM, Merge, InnoDB, BDB,


Memory/heap, MySQL Cluster, Federated, Archive, CSV, Blackhole y Example en 5.x),
permitiendo al usuario escoger la que sea ms adecuada para cada tabla de la base
de datos.
Agrupacin de transacciones, reuniendo mltiples transacciones de varias
conexiones para incrementar el nmero de transacciones por segundo.

Hay tres tipos de compilacin del servidor MySQL:

Estndar: Los binarios estndar de MySQL son los recomendados para la


mayora de los usuarios, e incluyen el motor de almacenamiento InnoDB.
Max (No se trata de MaxDB, que es una cooperacin con SAP): Los binarios
incluyen caractersticas adicionales que no han sido lo bastante probadas o que
normalmente no son necesarias.
MySQL-Debug: Son binarios que han sido compilados con informacin de
depuracin extra. No debe ser usada en sistemas en produccin porqu el cdigo de
depuracin puede reducir el rendimiento.

En el proyecto se han utilizado MySQL Drivers para ODBC llamado MyODBC,


MySQL Tools y MySQL Server 5.1

Apache Tomcat (tambin llamado Jakarta Tomcat o simplemente Tomcat)


funciona como un contenedor de servlets desarrollado bajo el proyecto Jakarta en la

84
Apache Software Foundation. Tomcat implementa las especificaciones de los servlets
y de JavaServer Pages (JSP) de Sun Microsystems.

Tomcat es mantenido y desarrollado por miembros de la Apache Software


Foundation y voluntarios independientes. Los usuarios disponen de libre acceso a su
cdigo fuente y a su forma binaria en los trminos establecidos en la Apache Software
Licence. Las primeras distribuciones de Tomcat fueron las versiones 3.0.x. Las
versiones ms recientes son las 7.x, que implementan las especificaciones de Servlet
3.0 y de JSP 2.2. A partir de la versin 4.0, Jakarta Tomcat utiliza el contenedor de
servlets Catalina.

Tomcat es un servidor web con soporte de servlets y JSPs. Tomcat no es un


servidor de aplicaciones, como JBoss o JOnAS. Incluye el compilador Jasper, que
compila JSPs convirtindolas en servlets. El motor de servlets de Tomcat a menudo se
presenta en combinacin con el servidor web Apache.

Tomcat puede funcionar como servidor web por s mismo. En sus inicios existi
la percepcin de que el uso de Tomcat de forma autnoma era slo recomendable
para entornos de desarrollo y entornos con requisitos mnimos de velocidad y gestin
de transacciones. Hoy en da ya no existe esa percepcin y Tomcat es usado como
servidor web autnomo en entornos con alto nivel de trfico y alta disponibilidad.

Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo
que disponga de la mquina virtual Java.

Estructura de directorios:

La jerarqua de directorios de instalacin de Tomcat incluye:


bin - arranque, cierre, y otros scripts y ejecutables
common - clases comunes que pueden utilizar Catalina y las aplicaciones web
conf-ficheros XML y los correspondientes DTD para la configuracin de Tomcat
logs - logs de Catalina y de las aplicaciones
server - clases utilizadas solamente por Catalina
shared - clases compartidas por todas las aplicaciones web
webapps - directorio que contiene las aplicaciones web
work - almacenamiento temporal de ficheros y directorios

85
STRUTS (Tecnologa de Implementacin J2EE + JSP) es una herramienta
de soporte para el desarrollo de aplicaciones Web bajo el patrn MVC bajo la
plataforma Java EE (Java Enterprise Edition). Struts se desarrollaba como parte del
proyecto Jakarta de la Apache Software Foundation, pero actualmente es un proyecto
independiente conocido como Apache Struts.

Struts permite reducir el tiempo de desarrollo. Su carcter de "software libre" y


su compatibilidad con todas las plataformas en las que Java Entreprise est disponible
lo convierten en una herramienta altamente disponible.

Con la versin 2 del framework se introdujeron algunas mejoras sobre la


primera versin, de cara a simplificar las tareas ms comunes en el desarrollo de
aplicaciones web, as como mejorar su integracin con AJAX, etc.

Estructura de los Archivos e Instalacin

Las aplicaciones Web poseen una estructura de archivos definida para poder
ejecutarse en un contenedor de Servlets, como el Tomcat de Apache, esta estructura
por lo regular no se modifica y solamente se le agregan algunas libreras para poder
correr una aplicacin utilizando Struts.

Fig.15 Estructura de archivos

Se han incorporado en la carpeta lib, dentro de la carpeta WEB-INF todos los


archivos JAR necesarios para la el correcto funcionamiento de la aplicacin. Al
momento de compilar los archivos java se debe asegurar que los archivos contenidos
dentro de la carpeta lib estn en el classpath.

86
Fig.16 Libreras

Componentes de Struts

MVC es parte fundamental de Struts, para explicar como encajan las partes de
este patrn, se explicar un ejemplo de la Alta de Producto.

Elementos de la Vista

La vista esta conformada de dos JSPs: altaProducto.jsp y exito.jsp, dentro de


index.jsp se declara una forma que hace referencia a la accin altaProducto.do, esta
compuesta de un par de campos de texto y un botn para enviar la forma. El campo de
texto tiene un atributo name = nombre que especifica un nombre lgico para la
forma.

<form name="formularioAltaProducto" action="altaProducto.do" method="POST">

<%@ include file='cabecera.jsp' %>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title><bean:message key="altaProducto.TITULO"/></title>

</head>

87
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr class="etiquetaTexto4">
<td width="60">
<bean:message key="altaProducto.CODIGO"/>
</td>
<td>
<input type="textfield" name="value(CODIGO)" id="CODIGO" disabled/>
</td>
</tr>

</form>

Para el manejo de formas, Struts provee una clase llamada ActionForm que se
debe extender para darle funcionalidad. Dentro de la subclase, por cada campo dentro
de la forma, se debe declarar una variable instancia con el mismo nombre que se
asign al atributo name en el cdigo HTML, para cada variable se deben escribir
mtodos get y set como se muestra en el siguiente ejemplo:

package es.form;

import org.apache.struts.action.ActionForm;

/**
* @author informatica4
*
*/
public class ProductoForm extends ActionForm{

private String codigo;


private String codigoean;
private String descripcion;
private String lote;
private String cantidad;
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}

Adicionalmente se pueden sobrescribir los mtodos reset y validate que tienen


funcionalidades especficas. El mtodo reset es invocado para reinicializar las
variables a un valor dado por el programador, mientras el mtodo validate se usa para
validar que los datos no tengan errores de captura o valores nulos.

Mediante la siguiente lnea de cdigo se pueden recuperar atributos dentro del


request, Ejemplo:

<h1>Hola <%= request.getAttribute("nombre")%></h1>

88
La lnea anterior pide un atributo llamado nombre dentro del request y lo
despliega en la pgina.

Elementos del controlador

Struts implementa el controlador mediante la clase ActionServlet del paquete


org.apache.struts.action, es importante aclarar que esta clase es concreta, es el
servlet principal de nuestra aplicacin y no se necesita extender para poder usar el
framework.

Toda aplicacin Web debe tener un descriptor de despliegue (conocido en


ingls como deployment descriptor) llamado web.xml, en este archivo se debe
especificar el uso de Struts de la siguiente manera:

<?xml version="1.0" encoding="UTF-8" ?>


<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<display-name>Gestin Almacn</display-name>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<!-- <init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param> -->

<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>ServletReporte</servlet-name>
<display-name>ServletReporte</display-name>
<description></description>
<servlet-class>es.postigo.action.ServletReporte</servlet-class>
</servlet>
<servlet>
<servlet-name>Conexion</servlet-name>
<display-name>Conexion</display-name>
<description></description>
<servlet-class>es.postigo.utility.Conexion</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ServletReporte</servlet-name>
<url-pattern>/ServletReporte</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Conexion</servlet-name>
<url-pattern>/Conexion</url-pattern>
</servlet-mapping>

<session-config>

89
<session-timeout>
30
</session-timeout>
</session-config>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

El desarrollador indica al framework las acciones, las formas y otros atributos


mediante un archivo de configuracin que por convencin se llama struts-config.xml y
tiene los siguientes campos para la aplicacin "Hola Mundo":

<?xml version="1.0" encoding="iso-8859-1"?>


<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="registroForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="login" type="java.lang.String"></form-property>
<form-property name="pass" type="java.lang.String"></form-property>
</form-bean>
<form-bean name="formularioInventario"
type="es.postigo.struts.forms.FormularioMAP">
</form-bean>
<form-bean name="formularioAltaProducto"
type="es.postigo.struts.forms.FormularioMAP">
<form-property name="codigo" type="java.lang.String"></form-property>
<form-property name="descripcion" type="java.lang.String"></form-
property>
<form-property name="lote" type="java.lang.String"></form-property>
<form-property name="cantidad" type="java.lang.String"></form-
property>
<form-property name="codigoean" type="java.lang.String"></form-
property>
</form-bean>
<form-bean name="formularioAltaUbicacion"
type="es.postigo.struts.forms.FormularioMAP">
<form-property name="codigo" type="java.lang.String"></form-property>
<form-property name="descripcion" type="java.lang.String"></form-
property>
<form-property name="codigoean" type="java.lang.String"></form-
property>
</form-bean>

</form-beans>

<action-mappings>
<action path="/productoUbicacion"
type="es.postigo.action.ProductoUbicacionAction"
name="registroForm"
scope="session"
validate="true"
input="/index.jsp">
<forward name="ok" path="/WEB-INF/jsp/inventario.jsp"/>
<forward name="SUCCESS" path="/WEB-INF/jsp/inventario.jsp"/>
<forward name="cancel" path="/WEB-INF/jsp/cancel.jsp"/>
</action>
<action path="/listadoProductos"
type="es.postigo.action.ProductoUbicacionAction"
name="registroForm"
scope="session"
validate="true"
input="/index.jsp">
<forward name="ok" path="/WEB-INF/jsp/listadoProductos.jsp"/>
<forward name="volver" path="/WEB-INF/jsp/inventario.jsp"/>

90
<forward name="SUCCESS" path="/WEB-INF/jsp/listadoProductos.jsp"/>
<forward name="ERROR" path="/WEB-INF/jsp/error.jsp"/>
<forward name="inicio" path="/index.jsp"/>
</action>

</action-mappings>

<!-- Message Resources-->


<message-resources parameter="es.postigo.resources.ApplicationResources" />

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/org/apache/struts/validator/validator-rules.xml, /WEB-
INF/validation.xml" />
</plug-in>
</struts-config>

La etiqueta form-beans sirve para declarar las clases que representan formas
HTML, en el atributo name se escribe un nombre lgico con el que se le har una
referencia futura y en type se especifica el nombre completo de la clase.

Dentro de la etiqueta action-mappings se especifican las acciones, en este


caso tenemos una sola accin pero por lo regular se tendr ms de una. La etiqueta
action describe los atributos de una accin, en path se indica el nombre de como se
llamar al recurso sin el .do (dado que esta terminacin sirve para llamar al
ActionServlet) y agregndose una diagonal al principio. El atributo name sirve para
especificar el ActionForm que se usar por esta Action mediante su nombre lgico,
validate indica si se llamar o no al mtodo validate del ActionForm, as como input
debe tener el nombre del JSP al que se redireccionar si validate regresa algn error.

La etiqueta forward especifica un nombre lgico y una pgina JSP, que el


Action utiliza para continuar con el flujo de la navegacin.

Para crear una accin se debe extender la clase org.apache.struts.Action y


sobreescribir el mtodo execute que tiene la siguiente firma:

public ActionForward execute( ActionMapping mapping, ActionForm form,


HttpServletRequest request, HttpServletResponse response )

El siguiente ejemplo muestra como implementar el Action de la aplicacin para


la pantalla de Login:

package es.action;
public class InventarioAction extends GenericoAction{

public ActionForward execute(ActionMapping mapping, ActionForm form,


HttpServletRequest request, HttpServletResponse response) throws Exception {
DynaActionForm registerForm = (DynaActionForm) form;

91
String lStrResult = "ok";
/**Comprobar sesin.*/
if(request.getSession().getAttribute("registerUser") == null){
return mapping.findForward("inicio");
}
// Extraemos los datos del formulario
String login = (String) registerForm.get("login");
String pass = (String) registerForm.get("pass");

// Configurariamos los objetos Request, Session, etc. que necesita la siguiente


vista a mostrar
User user = new User();
user.setLogin(login.toUpperCase());
user.setPass(pass);
lStrResult = validarUsuario(user);
request.getSession().setAttribute("registerUser", user);
// Mostramos la siguiente vista
return mapping.findForward(lStrResult);
}
}

Elementos del Modelo

El modelo es lo que al desarrollador le interesa. En el modelo se lleva acabo la


lgica aplicativa del sistema Web que se esta desarrollando. Struts no provee
elementos que faciliten al desarrollador la implementacin del modelo, ya que es
responsabilidad del programador hacerlo. A continuacin se muestra el modelo
utilizado por la aplicacin ejemplo:

package es.dao.impl;

public class ProductoUbicacionDaoImpl extends AbstractDataAccessObject implements


ProductoUbicacionDao
{
...

public long obtenerId(String pStrIdCampo, String pStrTabla, String pStrWhere,


Connection con) throws ProductoUbicacionDaoException {

String lStrSQL = " SELECT MAX(" + pStrIdCampo + ") FROM " + pStrTabla;
if(pStrWhere.length()>0){
lStrSQL += " WHERE "+ pStrWhere;
}
//return (getLong(lStrSQL) + 1);
PreparedStatement stmt = null;
ResultSet rs = null;
long max = 0;
try {
stmt = con.prepareStatement(lStrSQL);
rs = stmt.executeQuery();
while (rs.next()) {
max = Long.parseLong(rs.getString("MAX(CODIGO)"))+1;
}
} catch (SQLException e) {
e.printStackTrace();
throw new ProductoUbicacionDaoException( "SQLException: " +
e.getMessage(), e );
}
return max;
}

/**TODO: String index out of range: -10*/


public int generaEAN13(String pStrCodigo) throws ProductoUbicacionDaoException {
// Clculo del dgito de control EAN
int iSum = 0;
int iSumInpar = 0;

92
int iDigit = 0;
String EAN = pStrCodigo;
EAN = "000000000001";

for (int i = EAN.length(); i > 0; i--)


{
iDigit = Integer.parseInt(EAN.substring(i - 1, i));
if (i % 2 != 0)
{
iSumInpar += iDigit;
}
else
{
iSum += iDigit;
}
}

iDigit = (iSumInpar*3) + iSum ;

int iCheckSum = (10 - (iDigit % 10)) % 10;


System.out.println("Digito de control: " + iCheckSum);
return iCheckSum;
}

/**
* Clculo del dgito de control EAN
* @param lStrCodigo
* @return checksum
*/
public int generaChecksumEAN(String lStrCodigo){
int lIntPares = 0;
int lIntImpares = 0;
int lIntSuma = 0;
int lIntResultado = 0;

//lStrCodigo = reverse(lStrCodigo);

for (int i = lStrCodigo.length(); i > 0; i--) {


int lIntDigito = Integer.parseInt(lStrCodigo.substring(i - 1, i));
if (i % 2 != 0) {
lIntPares += lIntDigito;
} else {
lIntImpares += lIntDigito;
}
}

lIntResultado = (10 - (((lIntImpares * 3) + lIntPares) % 10)) % 10;

return lIntResultado;
}

public String reverse(String str) {


if ((null == str) || (str.length() <= 1)) {
return str;
}
StringBuffer reverse = new StringBuffer(str.length());
for (int i = str.length() - 1; i >= 0; i--) {
reverse.append(str.charAt(i));
}
return reverse.toString();
}

public ProductoUbicacion findByCodigoEAN(String codigoEAN)


throws ProductoUbicacionDaoException {
List<ProductoUbicacion> ret = findByDynamicSelect( SQL_SELECT + " WHERE
CODIGOEAN = ?", new Object[] { codigoEAN } );
return ret.size()==0 ? null : ret.get(0);
}
}

93
Correr la Aplicacin

Para correr la aplicacin se deben compilar las clases y copiar los paquetes
generados al directorio classes dentro de WEB-INF, por otra parte se deben copiar
tambin las pginas o JSPs encargadas de la vista a la carpeta raz, una vez obtenida
la estructura, se procede a copiar la carpeta de la aplicacin al directorio de nuestro
contenedor de Servlets. La aplicacin funciona de la siguiente manera:

1. El sistema pregunta al usuario su nombre


2. El usuario lo escribe y presiona el botn de enviar
3. El sistema procesa la solicitud
4. El sistema despliega el resultado

Fig.17 Pantalla Login

Fig.18 Men Principal

94
Herramientas

En nuestro proyecto, hemos utilizado la herramienta informtica denominada


MS Project 2003 Professional para realizar la planificacin. Dicha herramienta es muy
conocida dentro del mbito de la planificacin de proyectos. Permite realizar un
seguimiento y analizar los proyectos de una forma eficaz. Adems de aportar un mejor
control financiero y un anlisis ms completo, y dar opcin a poder presentar la
informacin del proyecto de un modo efectivo. Ayuda a usar informes predefinidos
para seleccionar, obtener vistas previas e imprimir la informacin de uso ms
frecuente y necesaria para administrar los proyectos, realizar un seguimiento de los
recursos, mantener los costos y comunicar el progreso a los miembros del equipo.
Destaca que es bastante intuitivo y fcil de utilizar.

Tambin hemos usado la herramienta Microsoft Visio, que es un software de


dibujo vectorial. Las herramientas que lo componen permiten realizar diagramas de
oficinas, diagramas de bases de datos, diagramas de flujo de programas, Entidad -
Relacin y ms, que permiten iniciarse en los lenguajes de programacin. Aunque
originalmente apuntaba a ser una aplicacin para dibujo tcnico para el campo de
Ingeniera. En nuestro proyecto nos ha facilitado la tarea de crear el diagrama del
Entidad - Relacin y el diagrama de Casos de Usos. Ha resultado ser una herramienta
muy til.

Y para obtener el diagrama de clases se ha utilizado una herramienta de


cdigo abierto, orientada al modelado UML, llamada ArgoUML.

95
7. Manual de Usuario

7.1. Introduccin

En las siguientes pginas mostraremos el manejo de la aplicacin para el


Mantenimiento del Inventario del Almacn, y sus diferentes funcionalidades.

Esta aplicacin nos permitir:


- Tener controlado el Stock de cualquier articulo/producto que tengamos en
nuestro almacn.
- Dar de alta productos nuevos.
- Saber la ubicacin exacta de cada producto en todo momento (desde que
entra a nuestro almacn, hasta que le damos salida).
- Ubicar o cambiar de ubicacin productos
- Dar la entrada/salida productos
- Seguir los movimientos internos de los productos mediante un histrico de los
movimientos.
- Consultar la ficha del producto

Tener controlado en todo momento las cantidades en stock, permite hacer


mejor las previsiones, evita las grandes perdidas de tiempo en buscar material que no
se sabe donde esta y nos ayuda a todos a llevar a cabo nuestro trabajo de manera
ms rpida y eficiente.

Se han implementado las siguientes funciones:


1.- Alta producto
2.- Alta ubicacin
3.- Entrada producto
4.- Salida producto
5.- Movimiento productos
6.- Listado productos
7.- Listado ubicaciones
8.- Listado movimientos
9.- Listado Inventario

96
Como posibles propuestas de ampliacin para cubrir mejor las necesidades de
los operarios del almacn, y que la aplicacin les resulte de mayor utilidad en su da a
da, se me ocurren los siguientes puntos a desarrollar:
- La impresin de informes de los listados en PDF
- La exportacin a EXCEL de los listados
- Gestin automtica de las ubicaciones del almacn
- Actualizar el aspecto de nuestra aplicacin mediante CSS, imgenes,

Mediante los siguientes apartados iremos profundizando en el manejo de cada


una de las funcionalidades.

7.2. Como acceder a la aplicacin

Para acceder a la aplicacin podemos utilizar el terminal con lector de cdigo


de barras (INTERMEC CK3) o un PC normal con acceso a la red local.

7.2.1. Para acceder mediante el terminal (INTERMEC)

Se ha instalado un punto de acceso en el almacn (ANTENA1) y se ha


comprobado que el terminal tiene cobertura en los diferentes espacios de trabajo.

Una vez encendido el terminal y conectado al punto de acceso,


1.- Pinchar en el men Start, situado en la esquina superior izquierda.
2.- A continuacin seleccionar Internet Explorer
3.- Pinchar en Menu esquina inferior derecha
4.- Seleccionar Favorites
5.- Seleccionar Inventario

Y ya estamos en disposicin de validarnos en la aplicacin.

97
Fig.19 Pantalla de Login

7.2.2. Para acceder desde cualquier PC

Desde un PC normal, simplemente comprobar que estamos conectados en la


misma red local, y si disponemos de conexin, abrir un explorador de Internet (Internet
Explorer, Mozilla Firefox, Google Chrome, ) y teclear:

http://192.168.0.205:8080/GestionAlmacen

Esta direccin nos cargara en el navegador la pantalla de inicio de la aplicacin


en la que debemos de validarnos.

Fig.20 Pantalla de Login

98
7.2.3. Validarse en la aplicacin

Para validarse en la aplicacin es necesario introducir un usuario y contrasea


validos, la gestin de los usuarios la realiza el administrador de la BBDD, por lo que si
no tiene usuario asignado deber solicitarlo al departamento de informtica.

Fig.21 Pantalla de Login

Hay que tener en cuenta que la validacin es sensible a maysculas y


minsculas, por lo que tanto el usuario como la contrasea deben de escribirse de
manera correcta y respetando dicha restriccin.

99
7.3. Men principal

Una vez nos hayamos validado correctamente accedemos a la pantalla


principal de la aplicacin, consiste en un men con las diferentes opciones disponibles.

Fig.22 Men Principal

Para acceder a la funcionalidad deseada podemos seleccionarla mediante el


puntero o el ratn, o simplemente pulsar el numero que tiene asignado (Accesos
rpidos).

7.3.1. Alta de producto

Para acceder al alta de un producto nuevo, podemos clickar sobre esta


opcin en el men principal, o pulsar 1.

Una vez seleccionada esta opcin nos aparecer la pantalla de alta de


producto.

100
Fig.23 Pantalla de Alta de Producto

Esta pantalla nos permite crear productos que hasta el momento no existan en
nuestra base de datos. Para crear un nuevo producto tenemos que tener en cuenta un
par de conceptos:

- El cdigo del producto lo genera el programa


- El cdigo EAN del producto tambin es generado mediante el
programa.
- El resto de campos los debe de rellenar el usuario

Por lo tanto nos aparecen deshabilitados los campos CODIGO y


CODIGOEAN, y tendremos el foco en CODIGO COMPRAS.

Tenemos que rellenar obligatoriamente los campos CODIGO COMPRAS,


DESCRIPCION y CANTIDAD.

101
El campo UNIDADES es un desplegable que nos permite seleccionar la
unidad de medida deseada (Por defecto saldr seleccionada la opcin UD):
UD Unidades
ML Metros lineales
M2 Metros cuadrados
KG Kilogramos
RO Rollo

Tambin se aadir por defecto el valor 1 en el campo CANTIDAD, ya que


se introduce un 1 en la mayora de los casos, y de esta forma no existir la
necesidad de teclearlo manualmente.

Una vez introducidos los datos en los diferentes campos procederemos a


registrar el alta, pulsando sobre el botn Aceptar, que nos mostrara una pantalla de
xito para que sepamos que el nuevo producto se ha insertado correctamente en la
base de datos.

Fig.24 Pantalla de xito

Si se ha producido algn problema, nos aparecer la pantalla de error, y


tendremos que repetir la introduccin de los datos para poder llevar a cabo la accin.

102
Fig.25 Pantalla de Error

En el caso de no querer llevar a cabo el alta del producto, tambin podemos


pulsar sobre el botn Volver, que nos devolver al men principal.

Fig.26 Botn Volver

Existen validaciones JavaScript para los campos obligatorios, por lo que si no


se introduce valor en dichos campos o el valor introducido no es el correcto, nos
mostrara un Popup con el correspondiente mensaje de error y nos colocara el foco en
el campo que debemos modificar.

7.3.2. Alta Ubicacin

Para crear una nueva ubicacin, solo tenemos que pulsar sobre esta opcin en
el men principal, o seleccionarla mediante el 2.

Una vez seleccionada esta opcin nos aparecer la pantalla de alta de


ubicacin.

103
Fig.27 Pantalla Alta Ubicacin

Esta pantalla nos permite crear nuevas ubicaciones teniendo en cuenta un par
de conceptos:
- El cdigo de la ubicacin lo genera el programa
- El cdigo EAN de la ubicacin tambin es generado mediante el
programa

Por lo tanto nos aparecen deshabilitados los campos CODIGO y


CODIGOEAN.

Tenemos que rellenar obligatoriamente el campo DESCRIPCIN.

Una vez rellenada la descripcin procederemos a registrar el alta, pulsando


sobre el botn Aceptar, que nos mostrara una pantalla de xito para que sepamos
que la nueva ubicacin se ha insertado correctamente en la base de datos.

Fig.28 Pantalla de Exito

104
Si se ha producido algn problema, nos aparecer la pantalla de error, y
tendremos que repetir la introduccin de los datos para poder llevar a cabo la accin.

Fig.29 Pantalla de Error

En el caso de no querer llevar a cabo el alta del producto, tambin podemos


pulsar sobre el botn Volver, que nos devolver al men principal.

Fig.30 Botn Volver

Existen validaciones JavaScript para comprobar que hemos introducido algun


valor descripcin de la ubicacin, por lo que si no se introduce valor o no es el
correcto, nos mostrara un Popup con el correspondiente mensaje de error y nos
colocara el foco en el campo descripcin para que lo modifiquemos.

105
7.3.3. Entrada producto

Para dar de entrada un producto, solo tenemos que pulsar sobre esta opcin
en el men principal, o seleccionarla mediante el 3.

Fig.31 Pantalla Entrada de Producto

En esta pantalla tenemos tres campos habilitados, COD. EAN UBICACIN,


COD. EAN PRODUCTO y CANTIDAD, todos ellos obligatorios.

Y dos campos deshabilitados DESC. UBICACIN y DESC. PRODUCTO,


estos campos se rellenaran automticamente recogiendo el COD. EAN UBICACIN
en el primero de los casos, y el COD. EAN PRODUCTO en el segundo. Con el cdigo
EAN obtenido se extrae la descripcin de la Base de Datos y se coloca en el campo
correspondiente.

Fig.32 Pantalla Entrada de Productos con Datos

106
Si utilizamos el terminal con lector de cdigo de barras, podemos pulsar el
gatillo (botn azul ubicado en la parte inferior de dicho terminal) y mediante el haz de
luz que saca por la parte frontal, leer el cdigo de barras de la etiqueta
correspondiente, tanto a la ubicacin como al producto.

En caso de utilizar un PC normal, tendramos que teclear dichos cdigos


manualmente, el resultado final es el mismo en ambos casos.

Una vez rellenados los campos pulsaremos el botn Aceptar que nos
mostrara una pantalla de xito para que sepamos que el producto se ha ubicado
correctamente.

Fig.33 Pantalla de Exito

Si ha ocurrido algn problema, nos aparecer la pantalla de error, y tendremos


que volver a introducir los datos para poder llevar a cabo la accin.

Fig.34 Pantalla de Error

107
En el caso de no querer llevar a cabo la entrada del producto, tambin
podemos pulsar sobre el botn Volver, que nos devolver al men principal.

Fig.35 Botn Volver

7.3.4. Salida producto

Para la salida de un producto, solo tenemos que pulsar sobre esta opcin en el
men principal, o seleccionarla mediante el 4.

Fig.36 Pantalla Salida de Producto

En esta pantalla tenemos tres campos habilitados, COD. EAN UBICACIN,


COD. EAN PRODUCTO y CANTIDAD, todos ellos obligatorios.

Y dos campos deshabilitados DESC. UBICACIN y DESC. PRODUCTO,


estos campos se rellenaran automticamente recogiendo el COD. EAN UBICACIN
en el primero de los casos, y el COD. EAN PRODUCTO en el segundo. Con el cdigo
EAN obtenido se extrae la descripcin de la Base de Datos y se coloca en el campo
correspondiente.

108
Fig.37 Pantalla Salida de Producto con datos

Si utilizamos el terminal con lector de cdigo de barras, podemos pulsar el


gatillo (botn azul ubicado en la parte inferior de dicho terminal) y mediante el haz de
luz que saca por la parte frontal, leer el cdigo de barras de la etiqueta
correspondiente, tanto a la ubicacin como al producto.

En caso de utilizar un PC normal, tendramos que teclear dichos cdigos


manualmente, el resultado final es el mismo en ambos casos.

Una vez rellenados los campos pulsaremos el botn Aceptar que nos
mostrara una pantalla de xito para que sepamos que se ha generado correctamente
la salida del producto de nuestro almacn.

Fig.38 Pantalla de xito

109
Si ha ocurrido algn problema, nos aparecer la pantalla de error, y tendremos
que volver a introducir los datos para poder llevar a cabo la accin.

Fig.39 Pantalla de error

En el caso de no querer llevar a cabo la salida del producto, tambin podemos


pulsar sobre el botn Volver, que nos devolver al men principal.

Fig.40 Botn Volver

110
7.3.5. Movimiento de productos

Para la pantalla de movimiento de productos, solo tenemos que pulsar sobre


esta opcin en el men principal, o seleccionarla mediante el 5.

Fig.41 Pantalla de Movimiento de Productos

En esta pantalla tenemos cuatro campos habilitados, UBICACIN ORIGEN,


COD. EAN PRODUCTO, UBICACIN DESTINO y CANTIDAD, todos ellos
obligatorios.

Y dos campos deshabilitados DESC. ORIGEN, DESC. PRODUCTO y


DESC. DESTINO, estos campos se rellenaran automticamente recogiendo el
UBICACIN ORIGEN en el primero de los casos, y el COD. EAN PRODUCTO en el
segundo y la UBICACIN DESTINO en el tercero. Con el cdigo EAN obtenido se
extrae la descripcin de la Base de Datos y se coloca en el campo correspondiente.

111
Fig.42 Pantalla de Movimiento de productos

Si utilizamos el terminal con lector de cdigo de barras, podemos pulsar el


gatillo (botn azul ubicado en la parte inferior de dicho terminal) y mediante el haz de
luz que saca por la parte frontal, leer el cdigo de barras de la etiqueta
correspondiente, tanto a las ubicaciones como al producto.

En caso de utilizar un PC normal, tendramos que teclear dichos cdigos


manualmente, el resultado final es el mismo en ambos casos.

Una vez rellenados los campos pulsaremos el botn Aceptar que nos
mostrara una pantalla de xito para que sepamos que se ha generado correctamente
el movimiento del producto de la ubicacin origen a la ubicacin destino.

Fig.43 Pantalla de exito

112
Si ha ocurrido algn problema, nos aparecer la pantalla de error, y tendremos
que volver a introducir los datos para poder llevar a cabo la accin.

Fig.44 Pantalla de error

En el caso de no querer llevar a cabo el movimiento de los productos, tambin


podemos pulsar sobre el botn Volver, que nos devolver al men principal.

Fig.45 Botn Volver

113
7.3.6. Listado de productos

Para ver el listado de productos, solo tenemos que pulsar sobre esta opcin en
el men principal, o seleccionarla mediante el 6.

Se nos cargara un listado en la pantalla, en el que se mostraran los productos


que tenemos disponibles en nuestra base de datos.

Fig.46 Listado de Productos

Esta pantalla tiene adems unas funcionalidades aadidas:


- Paginacin del listado en grupos de 10 productos
- Funcin de bsqueda entre los productos existentes
- Funcin de ordenar entre los productos del listado
- Ver ficha del producto

Al cargar el listado nos aparecern los primeros diez productos ordenados por
cdigo, ya que las pginas del listado van de diez en diez. En la parte inferior del
listado podremos ver en todo momento en que pagina nos encontramos y los links a
las paginas siguiente, anterior primera y ultima (en caso de que las haya).

114
Pulsando sobre el link de siguiente podremos cargar los siguientes diez
productos del listado, y pulsando sobre el link anterior se cargaran los diez productos
previos.

En la parte superior derecha de la pantalla podremos ver un campo de texto y


un botn Buscar, si introducimos en este campo la descripcin o parte de dicha
descripcin, nos filtrara el listado, mostrndonos un nuevo listado con las
coincidencias.

Fig.47 Funcionalidad Buscar

En la parte superior derecha de la pantalla, justo debajo de Buscar podremos


ver un par de desplegables con el texto Orden y un botn Ordenar, si seleccionamos
en el primer desplegable el campo a filtrar y en el segundo el orden (Ascendente o
descendente), nos filtrara el listado, mostrndonos un nuevo listado con la ordenacin
elegida.

Fig.48 Funcionalidad Orden

Si queremos ver la ficha detallada de un producto, deberemos seleccionar la


fila de dicho producto y pulsar el botn Abrir, que nos cargara una pantalla con la
ficha del producto asociado a la fila seleccionada.

115
Fig.49 Fila seleccionada Listado de Productos

Fig.50 Ficha de producto

116
Y por ultimo, podemos volver al men principal pulsando el botn Volver.

Fig.51 Botn Volver

7.3.6.1. Ficha de producto

Para acceder a la ficha de un producto, debemos seleccionar en el listado de


productos la fila correspondiente al producto del cual queremos abrir su ficha, y una
vez seleccionada pulsar el botn Abrir, esto nos cargara una pantalla con los datos
referentes a dicho producto.

Fig.52 Listado de Productos

117
Fig.53 Ficha de Producto

Para volver al listado disponemos en la parte inferior de la pantalla de un botn


Volver.

Fig.54 Botn Volver

A la derecha del botn Volver veremos el botn Guardar, que nos permite
guardar en la base de datos las modificaciones realizadas en la ficha.

Fig.55 Botn Guardar

A la derecha del botn Guardar veremos el botn Eliminar, que nos permite
borrar el producto de la base de datos, siempre y cuando no tenga registros asociados
en la tabla de inventario.

Fig.56 Botn Eliminar

118
Y por ultimo tenemos el botn Imprimir etiqueta, que nos imprime
automticamente la etiqueta con el cdigo de barras del artculo, para su posterior
identificacin mediante el terminal.

Fig.57 Botn Imprimir Etiqueta

La etiqueta impresa quedara as:

Fig.58 Ejemplo Impresin Etiqueta Producto

119
7.3.7. Listado de ubicaciones

Para ver el listado de ubicaciones, solo tenemos que pulsar sobre esta opcin
en el men principal, o seleccionarla mediante el 7.

Fig.59 Listado de Ubicaciones

Se nos cargara un listado en la pantalla, en el que se mostraran las


ubicaciones que tenemos disponibles en nuestra base de datos.

Esta pantalla tiene adems unas funcionalidades aadidas:


- Paginacin del listado en grupos de 10 ubicaciones
- Funcin de bsqueda entre las ubicaciones existentes
- Ver ficha de la ubicacin

Al cargar la pantalla nos aparecern las primeras diez ubicaciones ordenadas


por cdigo. En la parte inferior del listado podremos ver en todo momento en que
pagina nos encontramos y los links a las paginas siguiente, anterior, primera y ultima
(en caso de que las haya).

120
Pulsando sobre el link de siguiente podremos cargar las siguientes diez
ubicaciones del listado, y pulsando sobre el link anterior se cargaran las diez
ubicaciones previas.

En la parte superior derecha de la pantalla podremos ver un campo de texto y


un botn Buscar, si introducimos en este campo la descripcin o parte de dicha
descripcin, nos filtrara el listado, mostrndonos un nuevo listado con las
coincidencias.

Fig.60 Funcionalidad Buscar

En la parte superior derecha de la pantalla, justo debajo de Buscar podremos


ver un par de desplegables con el texto Orden y un botn Ordenar, si seleccionamos
en el primer desplegable el campo a filtrar y en el segundo el orden (Ascendente o
descendente), nos filtrara el listado, mostrndonos un nuevo listado con la ordenacin
elegida.

Fig.61 Funcionalidad Orden

Si queremos ver la ficha detallada de una ubicacin, deberemos seleccionar la


fila correspondiente a dicha ubicacin y pulsar el botn Abrir, que nos cargara una
pantalla con la ficha de la ubicacin asociada a la fila seleccionada.

121
Fig.62 Listado de Ubicaciones

Fig.63 Ficha de ubicacin

Y por ultimo, podemos volver al men principal pulsando el botn Volver.

Fig.64 Botn Volver

122
7.3.7.1. Ficha de ubicacin

Para acceder a la ficha de una ubicacin, debemos seleccionar en el listado de


ubicaciones la fila correspondiente a la ubicacin de la cual queremos abrir su ficha, y
una vez seleccionada pulsar el botn Abrir, esto nos cargara una pantalla con los
datos referentes a dicha ubicacin.

Fig.65 Listado de ubicaciones con fila seleccionada

Fig.66 Ficha de ubicacin

123
Para volver al listado disponemos en la parte inferior de la pantalla de un botn
Volver.

Fig.67 Botn Volver

A la derecha del botn Volver veremos el botn Guardar, que nos permite
guardar en la base de datos las modificaciones realizadas en la ficha.

Fig.68 Botn Guardar

A la derecha del botn Guardar veremos el botn Eliminar, que nos permite
borrar el producto de la base de datos, siempre y cuando no tenga registros asociados
en la tabla de inventario.

Fig.69 Botn Eliminar

Y por ultimo tenemos el botn Imprimir etiqueta, que nos imprime


automticamente la etiqueta con el cdigo de barras del artculo, para su posterior
identificacin mediante el terminal.

Fig.70 Botn Imprimir Etiqueta

La etiqueta impresa quedara as:

Fig.71 Ejemplo Impresin etiqueta de Ubicacin

124
7.3.8. Listado de movimientos

Para ver el listado de movimientos, solo tenemos que pulsar sobre esta opcin
en el men principal, o seleccionarla mediante el 8.

Se nos cargara un listado en la pantalla, en el que se mostraran el histrico de


los movimientos que tenemos registrados en nuestra base de datos.

Fig.72 Listado de Movimientos

Esta pantalla tiene adems unas funcionalidades aadidas:


- Paginacin del listado en grupos de 10 movimientos
- Funcin de bsqueda entre los movimientos existentes

Al cargar la pantalla nos aparecern los primeros diez movimientos ordenados


por fecha, de manera que los movimientos ms recientes aparecern los primeros y
los ms antiguos los ltimos.

En la parte inferior del listado podremos ver en todo momento en que pagina
nos encontramos y los links a las paginas siguiente, anterior, primera y ultima (en caso
de que las haya).

Pulsando sobre el link de siguiente podremos cargar los siguientes diez


movimientos del listado, y pulsando sobre el link anterior se cargaran los diez
movimientos previos.

125
En la parte superior derecha de la pantalla podremos ver un campo de texto y
un botn Buscar, si introducimos en este campo la ubicacin origen, la ubicacin
destino o el cdigo del producto, nos filtrara el listado, mostrndonos un nuevo listado
con las coincidencias.

Fig.73 Funcionalidad Buscar

Y por ultimo, podemos volver al men principal pulsando el botn Volver.

Fig.74 Botn Volver

126
7.3.9. Listado Inventario

Para ver el listado de inventario, solo tenemos que pulsar sobre esta opcin en
el men principal, o seleccionarla mediante el 9.

Se nos cargara un listado en la pantalla, en el que se mostraran el inventario


que tenemos registrados en nuestra base de datos.

Fig.75 Listado de Inventario

Esta pantalla tiene adems unas funcionalidades aadidas:


- Paginacin del listado en grupos de 10 entradas en el inventario
- Funcin de bsqueda entre las entradas de inventario existentes

Al cargar la pantalla nos aparecern las primeras diez entradas de inventario


ordenadas por Cd. Ubicacin.

127
En la parte inferior del listado podremos ver en todo momento en que pagina
nos encontramos y los links a las paginas siguiente, anterior, primera y ultima (en caso
de que las haya).

Pulsando sobre el link de siguiente podremos cargar las siguientes diez


entradas en el inventario del listado, y pulsando sobre el link anterior se cargaran las
diez entradas previas.

En la parte superior derecha de la pantalla podremos ver un campo de texto y


un botn Buscar, si introducimos en este campo el cdigo EAN de la ubicacin, la
descripcin total/parcial de la ubicacin, el cdigo EAN del producto o la descripcin
total/parcial del producto, nos filtrara el listado, mostrndonos un nuevo listado con las
coincidencias.

Fig.76 Funcionalidad Buscar

Y por ultimo, podemos volver al men principal pulsando el botn Volver.

Fig.77 Botn Volver

128
7.3.10. Cerrar Sesin

El botn de Cerrar sesin esta disponible en el men principal, una vez


pulsado este botn se cerrara la sesin, borrando todos los datos de registro del
usuario y mostrndonos la pantalla de inicio, en la que nos volver a pedir usuario y
contrasea.

Fig.78 Funcionalidad Cerrar Sesin

Fig.79 Pantalla de Login

Tambin se ha implementado un sistema automtico de cierre de sesin por


Time out, el funcionamiento es el siguiente:

Si pasan 10 minutos sin que hagamos uso activo de la aplicacin, al intentar


realizar cualquier accin, esta nos mandara a la pantalla de inicio en la que deberemos
de volver a introducir el usuario y la contrasea.

129
Fig.80 Pantalla de Login con datos

Una vez nos hayamos vuelto a validar ya podremos llevar a cabo las acciones
deseadas.

El cierre automtico de sesin por time out se implementa como sistema de


seguridad, para evitar que si un usuario por una urgencia debe de abandonar
temporalmente el puesto de trabajo y se deja el terminal u ordenador con la aplicacin
arrancada y sin cerrar sesin, esta se cierre automticamente a los 10 min. y no
permita a un usuario no validado realizar ninguna operacin.

7.3.11. Funcionalidad Buscar en los listados

Todos los listados estn paginados para facilitar la navegacin y la revisin de


los datos, pero conforme se va incrementando el nmero de filas de nuestros listados
surge la necesidad de filtrar un poco ms la informacin proporcionada por el
programa.

Detectada esta necesidad se ha implementado en los listados la funcionalidad


de Buscar, en dichos listados dispondremos en la parte superior derecha de la
pantalla un campo de texto y un botn Buscar, si introducimos en este campo el
cdigo, el cdigo EAN o la descripcin (total o parcial) por el que queremos buscar,
nos filtrara el listado, mostrndonos un nuevo listado con las coincidencias.

130
Fig.81 Funcionalidad Buscar

Ejemplo de bsqueda por descripcin parcial:

Fig.82 Ejemplo Bsqueda por descripcin parcial

Ejemplo de bsqueda por Cdigo EAN:

Fig.83 Ejemplo de bsqueda por Cdigo EAN

131
Ejemplo de bsqueda por cdigo:

Fig.84 Ejemplo de Bsqueda por Cdigo

Esta funcionalidad nos ser mucho ms til cuando vaya incrementando el


nmero de filas en las que tengamos que buscar, ya que revisar fila a fila un listado, e
ir mirando en las diferentes pginas es una tarea un poco tediosa.

132
7.3.12. Funcionalidad Orden en los listados

Los diferentes listados que nos proporciona el programa vienen ordenados por
defecto, pero al usuario puede interesarle cambiar los parmetros de ordenacin, y
para ello se ha implementado la funcionalidad de Orden, que se compone de dos
desplegables, uno para seleccionar el campo por el que queremos ordenar, y otro para
decirle si el orden ser ascendente o descendente:

Fig.85 Funcionalidad de orden

Primero seleccionamos el campo:

Fig.86 Campo seleccin de columna para ordenar

133
Despus seleccionamos el orden:

Fig.87 Seleccin de orden ascendente o descendente

Una vez seleccionados los criterios de ordenacin, solo nos quedara pulsar el
botn Ordenar y tendramos la ordenacin del listado adaptada a nuestras
necesidades.

134
8. Bibliografa

Para la ayuda en el anlisis, desarrollo y documentacin de este proyecto se


han utilizado:
- Sommerville, l. Ingeniera del software (6 Edicin) Addison-Wesley; 2002.

- Eclipse Site. Pagina Oficial Eclipse Helios [Acceso: 21-09-2011]. Disponible


en: http://www.eclipse.org/helios/

- Open Source Software Engineering Tools. Plugin Subclipse para control de


versiones Eclipse [Acceso: 21-09-2011]. Disponible en: http://subclipse.tigris.org/

- The Apache Software Foundation. Pagina Oficial Apache Tomcat [Acceso: 21-
09-2011]. Disponible en: http://tomcat.apache.org/

- MySQL.COM. Pagina Oficial Open Source Database MySQL. [Acceso: 21-09-


2011]. Disponible en: http://www.mysql.com/

- MySQL.COM. MySQL GUI Tools. [Acceso: 21-09-2011]. Disponible en:


http://dev.mysql.com/downloads/gui-tools/5.0.html

- JasperReports. Open Source Reporting Engine. [Acceso: 21-09-2011].


Disponible en: http://jasperforge.org/projects/jasperreports

- W3Schools.com. Web Development Site. [Acceso: 21-09-2011]. Disponible


en: http://www.w3schools.com/

- Javahispano.com. Foro de Java en Castellano. [Acceso: 21-09-2011].


Disponible en: http://www.javahispano.org/forum/

- Forosdelweb.com. Foro de programacin en Castellano. [Acceso: 21-09-


2011]. Disponible en: http://www.javahispano.org/forum/

- Lawebdelprogramador.com. Foro de Programacin en Castellano. [Acceso:


21-09-2011]. Disponible en:
http://www.lawebdelprogramador.com/foros/Java/index1.html

135
- Foro Chuidang. Foro de programacin en Castellano. [Acceso: 21-09-2011].
Disponible en: http://foro.chuidiang.com/

-Java.com. Pagina Oficial Descargas Java de Oracle. [Acceso: 21-09-2011].


Disponible en: http://java.com/es/download/

- Manual MySQL. DEV MySQL 5.0 Reference Manual. [Acceso: 21-09-2011].


Disponible en: http://dev.mysql.com/doc/refman/5.0/es/index.html

-Adictosaltrabajo.com. Mi primera web con Struts. [Actualizado: 31-07-2006;


Acceso: 21-09-2011]. Disponible en:
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=miPrimeraWebStruts

-Struts. Definicion Apache Struts. [Acceso: 21-09-2011]. Disponible en:


http://es.wikipedia.org/wiki/Apache_Struts

-Modelo Vista Controlador (MVC). Presentacin del modelo [Acceso:


21-09-2011]. Disponible en: http://es.wikipedia.org/wiki/Modelo_Vista_Controlador

136

También podría gustarte