You are on page 1of 183

Ttulo:Gestin de una Farmacia Volumen:1 Alumna:Montserrat Gmez Conde Directora/Ponente: Cristina Gmez Departamento:LSI Fecha:26/06/2008 PFC: Gestin de una

Farmacia DATOS DEL PROYECTO Titulo del Proyecto: Gestin de una Farmacia Nombre del estudiante: Montserrat Gmez Conde Titulacin: Ingenieria Informtica Crditos:37.5 Director/Ponente: Cristina Gmez Departament:LSI MIEMBROS DEL TRIBUNAL (nombre y firma) Presidente: Vocal: Secretario: CALIFICACIN Calificacin numrica: Calificacin descriptiva: Fecha: Pgina 3 PFC: Gestin de una Farmacia Prlogo En esta memoria se detalla toda la informacin sobre el desarrollo del proyecto Gestin de una Farmacia. Se trata del Proyecto Final de Carrera de la Ingeniera Informtica, con una carga de 37.5 crditos. Esta documentacin est estructurada en diez captulos volumen I . Los captulos repasan la historia del proyecto, desde el momento en que surgi la idea hasta la conclusin del mismo. Toda la informacin se encuentra tambin en el CD-ROM adjunto a la memoria. Este CD-ROM incluye, adems, el cdigo de la aplicacin y los ficheros de creacin y destruccin de las tablas de la base de datos, as como un fichero de insercin, que contiene

un pequeo conjunto de registros necesarios para permitir el inicio de la aplicacin. Pgina 5 PFC: Gestin de una Farmacia Contenido 1. Introduccin .................................................................................................................... 9 1.1 Motivacin y objetivos ............................................................................................ 9 1.2 Situacin actual ...................................................................................................... 12 1.3 Descripcin del proyecto ............................................. .......................................... 15 1.4 Metodologa a utilizar ............................................................................................ 21 1.5 Estudio de mercado ................................................................................................ 22 1.6 Planificacin .......................................................................................................... 30 1.6.1 Planificacin inicial ........................................................................................ 31 1.6.2 Tiempo utilizado para la realizacin del proyecto.......................................... 36 1.6.3 Comparacin entre la planificacin i el tiempo utilizado .............................. 36 1.6.4 Coste del proyecto .......................................................................................... 38 2. Anlisis de requerimientos del sistema ........................................................................ 41 2.1 Requerimientos funcionales ................................................................................... 41 2.2 Requerimientos no funcionales .............................................................................. 46 3. Especificacin ............................................................................................................... 51 3.1 Introduccin ........................................................................................................... 51 3.2 Modelo de Casos de uso ........................................................................................ 53 3.2.1 Diagrama de casos de uso............................................................................... 53 3.2.2 Especificacin de casos de uso ....................................................................... 58 3.3 Modelo Conceptual ........................... ..................................................................... 82 3.4 Modelo de comportamiento ................................................................................... 97 3.4.1 Diagramas de secuencia del sistema ............................................................... 97 3.4.2 Contratos de las operaciones del sistema ..................................................... 110 4. Diseo ......................................................................................................................... 125 4.1 Introduccin ......................................................................................................... 125 4.2 Plataforma fsica .................................................................................................. 126 4.3 Arquitectura del sistema software........................................................................ 129 4.4 Diseo externo ..................................................................................................... 133

4.4.1 Diseo de pantallas ....................................................................................... 133 4.5 Diseo interno ...................................................................................................... 139 4.5.1 Diseo de la capa .......................................................................................... 140 4.5.2 Diagramas de Secuencia ............................................................................... 150 4.5.3 Diseo de la Base de Datos .......................................................................... 176 5. Implementacin .......................................................................................................... 191 5.1 Lenguajes utilizados ............................................................................................ 193 5.1.1 Visual C# ...................................................................................................... 193 5.1.2 XML ............................................................................................................. 194 5.1.3 DTD (Document type definition) ................................................................. 196 5.1.4 MySql ........................................................................................................... 198 5.1.5 Crystal Reports ............................................................................................. 200 5.2 Ejemplo ................................................................................................................ 203 5.2.1 Visual Studio .net C# .................................................................................... 203 5.2.2 XML ............................................................................................................. 216 Pgina 7 5.2.3 DTD .............................................................................................................. 218 5.2.4 MySql ........................................................................................................... 219 6. Pruebas ....................................................................................................................... 223 7. Manual del usuario ..................................................................................................... 227 7.1 Introduccin ......................................................................................................... 227 7.2 Entrada al sistema ................................................................................................ 228 7.3 Salida del sistema......................................................................................... ........ 230 7.4 Seleccin de empresa ........................................................................................... 231 7.5 Fichero ................................................................................................................. 231 7.5.1 Empresas ....................................................................................................... 232 7.5.2 Clientes ......................................................................................................... 236 7.5.3

Asociaciones ................................................................................................. 240 7.6 Artculos............................................................................................................... 244 7.6.1 Artculos ....................................................................................................... 244 7.6.2 Stock ............................................................................................................. 248 7.6.3 Aviso stock ................................................................................................... 252 7.6.4 Consumos ..................................................................................................... 253 7.6.5 Actualizar Artculos ...................................................................................... 257 7.7 Albaranes ............................................................................................................. 258 7.7.1 Albaranes ...................................................................................................... 258 7.7.2 Estado Albaranes .......................................................................................... 267 7.7.3 Apuntes ....................................................................................................... .. 269 7.7.4 Margen .......................................................................................................... 276 7.8 Facturas ................................................................................................................ 278 7.8.1 Facturas ......................................................................................................... 278 7.8.2 Fichero Facturacin ...................................................................................... 284 7.9 Informes ............................................................................................................... 285 7.10 Maestros ........................................................................................................... 286 Tipos va ..................................................................................................................... 287 7.11 Administracin ................................................................................................. 291 7.11.1 Usuarios ........................................................................................................ 291 7.11.2 Grupos .......................................................................................................... 296 7.11.3 Entidades ...................................................................................................... 302 7.11.4 Acciones ....................................................................................................... 305 7.11.5 Procesos ........................................................................................................ 308 7.11.6 Constantes..................................................................................................... 312 7.11.7 Diccionario ........................................................................................ ........... 315 7.12 Ayuda ............................................................................................................... 318 8. Conclusiones............................................................................................................... 319 9. Trabajo futuro ............................................................................................................. 321 10. Bibliografa .............................................................................................................. 323

Pgina 8 PFC: Gestin de una Farmacia 1. Introduccin 1.1 Motivacin y objetivos Motivacin El Usuario para tener una mayor informacin y una mejor gestin de la farmacia, la cual distribuye a diferentes empresas medicamentos que le son solicitados, necesita tener un software que le ayude a mejorar dicha gestin. Existen dos farmacias distribuidoras localizadas en lugares diferentes, pero la gestin de envo de medicamentos nicamente se realiza desde una, aunque con el nombre de las dos farmacias. El problema del usuario es que no sabe el stock de sus diferentes productos, el registro de sus clientes, necesita hacer el control de los albaranes y facturas que realiza, teniendo como lo ms importante que al final pueda extraer informacin (explotacin de los datos) de los productos ms vendidos, los productos distribuidos a las diferentes empresas, Para una buena gestin el usuario debe registrar la informacin de cada una de sus farmacias y extraer la informacin necesaria para que el administrador de las farmacias pueda tomar decisiones. Para ello se ha pensado en generar un software a medida para esta farmacia concreta pero intentando ser lo ms genrica posible y personalizando determinados procesos. Nuestro sistema ha de ser sencillo, registrar nicamente la informacin que se quiere y se va a utilizar. Pgina 9 Objetivos El objetivo principal del proyecto es proporcionar un sistema que ofrezca el registro de toda la informacin necesaria para la gestin de distribucin que realizar el usuario del sistema, realizacin de diferentes procesos sobre los datos introducidos en el sistema y extraccin de estos datos para facilitar la gestin. Por ello el usuario debe poder: Registrar la informacin de los artculos, tener lo ms actualizada esta informacin

de una manera rpida y sencilla, cada ao se cambian los precios y existen mucha cantidad de artculos. Adems es bastante frecuente el alta y baja de artculos. Registrar la informacin de la entrada/salida de stock de los artculos. Saber cundo es necesario pedir artculos antes de quedarnos sin su existencia. Registrar la entrada de stock. Registrar la informacin de los clientes con los que trabaja. Es importante para el usuario la gestin de sus clientes-asociaciones ya que es a stos a quien factura y enva sus productos. Registrar y gestionar la informacin de albaranes, apuntes y facturas. Saber el estado de los albaranes, la generacin de apuntes sobre los albaranes realizados y la creacin de facturas una vez generado los albaranes y los apuntes. Extraer informacin como los albaranes creados por empresas, el margen obtenido, el stock, el consumo por tiempo, Procesos de automatizacin para generar informacin y validacin de la informacin. Generacin de diferentes informes Pgina 10 PFC: Gestin de una Farmacia Otros objetivos a nivel del software que se realizar son: Modo multiempresa: en nuestro caso el usuario desea gestionar dos farmacias. Modo multiidioma: cada usuario ha de tener la posibilidad de escoger el idioma que prefiera. Modo seguridad: segn el usuario que entre en el siste ma ha de poder realizar diferentes funciones. El sistema tiene que poder utilizarse con una visualizacin ptima desde cualquier ordenador sea PC o porttil. El sistema ha de ser capaz de gestionar un gran nmero de datos sin que el tiempo de ejecucin sea muy extenso. El sistema ha de ser fcil y registrar nicamente la informacin necesaria para su fcil uso y para que cualquier usuario con un mnimo de formacin sepa utilizar el sistema. La aplicacin ha de ser compatible con los diferentes sistemas operativos ms usados en la actualidad: Windows XP o Windows Vista. El sistema ha de ser capaz de almacenar y procesar la informacin de una manera segura y rpida. Las tecnologas que se usaran para desarrollar sern .net y base de datos mysql

Pgina 11 1.2 Situacin actual Actualmente tienen un sistema que les da y registra una informacin bsica. El sistema actual que tienen es un software realizado con visual basic 6 y una base de datos acces 97. El sistema actual utiliza una base de datos en acces pero no hace servir ningn sistema de gestin de base de datos. El sistema actual no tiene distincin de usuarios ni grupos. Todos los usuarios registrados obtienen el mismo men, no hace distincin de privilegios. Todos los usuarios tienen el mismo rol y pueden hacer todo lo que el sistema les ofrece. El sistema actual no se comunica con ningn otro sistema de informacin. No existe posibilidad en el sistema actual de tener el sistema en un idioma diferente al castellano. Las funcionalidades principales que aportar el nuevo sistema con respecto al sistema actual son los siguientes: Actualizacin de los Artculos Situacin El usuario busca y cambia el precio de los artculos en su sistema. Aade, modifica y elimina los artculos de una manera manual. Cambios El sistema permitir actualizar el precio d esde un fichero tx t con un formato definido, se generar un proceso: A. Creacin de nuevos artculos B. Eliminacin de artculos (fecha baja del artculo) C. Modificacin de los artculos Pgina 12 PFC: Gestin de una Farmacia Avisos de stock de artculos Situacin Actualmente tienen un sistema para la introduccin de albaranes y artculos pero el control de stock de los artculos es bastante manual. Cambios

Los artculos registraran cual es el stock mnimo a partir del cual al entrar el sistema dar un mensaje de aviso de los artculos que estn por debajo de dicho stock. Obtencin del consumo de artculos Situacin Actualmente no se sabe el consumo de los artculos segn diversos parmetros (mes, ao, empresa, asociacin.) Cambios El sistema permitir consultar el consumo de los artculos segn diferentes parmetros (mes, ao, empresa, cliente, asociacin) Informacin del margen de los artculos Situacin Existen artculos que tienen un margen para nuestro cliente segn el artculo, cada margen es diferente. Actualmente no saben la relacin entre el margen de los artculos y los artculos que se han vendido (albaranado) Cambios El sistema permitir introducir el margen para cada artculo y obtener el margen de los diferentes artculos que se han albaranado Pgina 13 Consulta del estado de los albaranes Situacin El usuario quiere consulta el estado de los albaranes, para saber el estado de estos y si los albaranes pueden pasar a ser facturados. Cambios El sistema permitir consultar los diferentes estados de los albaranes, las fechas en la que se producen los cambios de los diferentes estados. Envo de la facturacin realizada. Situacin El usuario actualmente enva impreso las facturas realizadas. Cambios El sistema generar un fichero con un formato especfico de las facturas realizadas en un periodo de tiempo determinado. As el usuario puede enviar dicho fichero a otros SI como el de la seguridad social. Pgina 14

PFC: Gestin de una Farmacia 1.3 Descripcin del proyecto El Proyecto es un proyecto final de carrera con la finalidad de poderse implantar en una farmacia. El cliente es una farmacia distribuidora de sus productos (medicamentos) a diferentes empresas. La idea del proyecto es generar una aplicacin lo ms genrica posible, esta aplicacin esta creada en su totalidad desde cero. Se crear un motor de aplicacin que sirva para cualquier tipo de aplicacin y generar las pantallas especficas para nuestro caso de la farmacia. El proyecto consiste en dos partes: Motor de la aplicacin: Creacin de una aplicacin estndar, que sirve para cualquier tipo de aplicacin. Esto consiste en hacer un ncleo o motor que gestione las funcionalidades genricas que ha de tener cualquier aplicacin. Con este motor lo que queremos conseguir es hacer una arquitectura y unas funciones bsicas que nos sirva para poder gestionar cualquier empresa o tipo de empresa. De esta manera nicamente tendremos que cambiar las pantallas y el registro de la informacin. Nuestro motor de la aplicacin consiste o Aplicacin paramtrica: Se utilizarn variables globales, constantes y ficheros de inicio para configurar la aplicacin. Esto servir para que podemos varias el funcionamiento bsico de la aplicacin sin tener que modificar el ncleo de la aplicacin y que lo pueda hacer un usuario de la aplicacin. Pgina 15 o Pantallas: Las pantallas sern lo ms homogneas posibles. Existirn 3 tipos de pantallas bsicas. Con esto conseguimos que el usuario se familiarice rpidamente con el sistema y que el aprendizaje del sistema sea ms rpido. Pantallas lista: Des del men siempre accederemos a este tipo de pantallas donde se mostrar una lista de la informacin registrada en el sistema con los campos ms significativos. Pantallas ficha: Des de la lista accederemos a estas pantallas. Estas

pantallas servirn para registrar nueva informacin, consultar detalladamente o modificar la informacin registrada en el sistema. Pantallas filtro: Des de la lista accederemos a estas pantallas. Estas pantallas se harn servir para buscar informacin. o Funcionalidades diferentes segn el usuario conectado: La aplicacin mostrar diferentes opciones en el men segn el usuario conectado. Cada usuario tendr unos privilegios y funciones diferentes. Existen diferentes usuarios de nuestro sistema y cada usuario o grupo de usuarios tienen diferentes funciones y utilizaran el sistema para diferentes funcionalidades. Es decir, hay usuarios que su funcin es registrar la informacin y hay usuarios que su funcin es la extraccin de datos. o Aplicacin Multiidioma: El sistema proporcionar un sistema de diccionario que segn el idioma del usuario, la aplicacin mostrar los mensajes, opciones y textos segn el idioma del usuario. Para que el motor de la aplicacin sea posible y cumpla las funcionalidades de men diferente segn el usuario conectado y ser multiidioma se han de registrar las siguientes entidades: o Registro Grupos: los usuarios pertenecen a diferentes grupos. Los grupos son los que tienen privilegios a las entidades o acciones. Pgina 16 PFC: Gestin de una Farmacia o Registro Entidades: sirven para definir en que se basan los procesos. Una entidad bsicamente hace referencia a una tabla de la base de datos. Si un usuario tiene esta accin y un proceso se basa en esta accin, el usuario podr ejecutar el proceso. o Registro Acciones: Sirven para definir en que se basan los p rocesos. Si un usuario tiene esta accin y un proceso se basa en esta accin, el usuario podr ejecutar el proceso. o Registro procesos: Procesos u opciones de men que puede ejecutar un usuario. o Registro constantes: constantes que son parametrizables y el usuario puede cambiar. o Registro diccionario: Las palabras que hacemos servir en la aplicacin. Funcionalidades del proyecto El proyecto adems de aportar todo lo que el sistema actual tiene, se ha aadido nuevas funcionalidades, adems de proporcionar un motor de aplicacin que el sistema actual no lo tiene.

Las funcionalidades principales que tendr nuestro proyecto sern: o Usuarios: Registro, actualizacin y consulta de usuarios de la aplicacin. El sistema registrar los usuarios de la aplicacin. Estos usuarios pertenecern a un grupo de usuarios, lo que le permitir acceder a unas opciones u otras. Cada usuario o grupo de usuarios tendr un men diferente. Pgina 17 o Autentificacin de usuarios: Para que un usuario entre en el sistema deber autentificarse para entrar en la aplicacin, si es un usuario registrado le permitir el acceso a la aplicacin, en caso que no sea un usuario registrado la aplicacin no entrar en el sistema. o Parametrizacin del sistema: Registro, actualizacin y consulta de los parmetros de la aplicacin. El sistema registrar una serie de variables que nos sirven para parametrizar el sistema. Esta funcionalidad equivale al registro de constantes. o Empresas de trabajo: Registro, actualizacin y consulta de las empresas de trabajo. En nuestro caso existen dos farmacias Farmacia C y B.X.R, el usuario deber seleccionar con que empresa desea trabajar y a partir de esta seleccin las facturas, albaranes sern de la empresa de trabajo seleccionada. o Clientes, Asociaciones: Registro, actualizacin y consulta de l os clientes y asociaciones a donde se enviarn los productos y se les realizar los albaranes y facturas correspondientes. La relacin que existe entre clientes y asociaciones es que un cliente tiene diferentes asociaciones o diferentes direcciones de envo. Ejemplo: Caja Madrid seria nuestro cliente y las diferentes sucursales serian nuestras asociaciones. o Productos: Nuestros productos ser cualquier artculo que encontremos en una farmacia, bsicamente sern los medicamentos. El sistema adems de permitir registrar, actualizar y consultar dichos productos. Se aadirn funciones especficas que servirn para una mejor gestin de estos. Estas funcionalidades sern: Aviso de stock mnimo: El sistema al entrar a la aplicacin dar un aviso al usuario de los productos que estn por debajo del stock mnimo. Pgina 18 PFC: Gestin de una Farmacia Cada artculo tendr un stock mnimo por el que cuando el stock de este artculo sea inferior a este stock mnimo, dicho artculo saldr en la pantalla de aviso de stock mnimo.

Clculo del margen: El sistema realizar un clculo del margen que tiene nuestro cliente sobre los productos vendidos. Cada artculo tiene un margen que se aplica. Cuando se crea un albarn se aplica este margen del artculo y as saber el margen que tenemos segn el margen del artculo y los artculos albaranados. Consumo: El sistema mostrar un listado del consumo de cada artculo segn una serie de parmetros (tiempo, cliente,..). Cada vez que se genera un albarn, segn la fecha y el ao del albarn se aade el artculo en los consumos realizados. o Albaranes, apuntes, facturas: Nuestros productos sern albaranados, de estos albaranes se generaran un apunte y de los albaranes que tienen ya el apunte asociado se generara la factura. El sistema permitir registrar, actualizar y consultar los albaranes, apuntes y facturas generados. o Generacin de listados: El sistema generar una serie de listados para la explotacin de la informacin registrada. o Comunicacin con otros sistemas de informacin: Nuestro producto se comunicar con dos sistemas: Artculos : obtendr la actualizacin de la informacin de los artculos mediante un fichero con un formato especfico, que nos es enviado desde otro sistema de informacin Facturas: generar un fichero especifico de las facturas que se han realizado para poder ser enviado a otro sistema de informacin el cual realizar su lectura Pgina 19 Adems se tendr una serie de catlogos para que la introduccin de datos sea ms fcil como por ejemplo: tipos de vas, provincias, tipos IVA, formas de pago, documentos de pago. Nuestro proyecto intenta ser lo ms intuitivo posible para los usuarios y cubrir las necesidades de nuestro cliente. Nuestro proyecto registrar nicamente la informacin estrictamente necesaria para la gestin que se quiere realizar. Pgina 20 PFC: Gestin de una Farmacia 1.4 Metodologa a utilizar

El paradigma que se utilizar para el desarrollo de este proyecto ser el ciclo de vida clsico, cuyas fases se ilustran en la siguiente figura: Dado que en este proyecto las funcionalidades estn bastante claras, pero pueda existir alguna modificacin por el tiempo limitado, peticin del cliente o peticin del director de proyecto, consideramos que este ciclo de vida es el ms idneo a nuestro caso. A cada fase existir una validacin y dicha validacin pueda ser objeto de algn cambio. Pgina 21 1.5 Estudio de mercado El objetivo principal de nuestro proyecto es el registro de informacin para realizar la gestin de una farmacia. Los sistemas de informacin ms importantes que estn basados en la gestin d e una farmacia y que hemos encontrado realizando nuestro estudio de mercado son Bitfarma, Compufarma, Farmatic Windows y Etron Farmacia, estos cuatro productos van dirigidos totalmente a la gestin de una farmacia. BitFarma: Nace dentro de una farmacia y est diseada por farmacuticos y para farmacuticos por lo que contempla soluciones para todos los procesos y problemas de gestin diario en la oficina de la farmacia. Las soluciones de gestin se encuentran integradas y adaptables para cubrir todas las reas de la Farmacia, Gestin financiera, compras, ventas, produccin, almacn, etc. Pgina 22 PFC: Gestin de una Farmacia Este sistema permite la gestin a nivel de dependencia y gestin de proveedores que en nuestro sistema esta opcin no existira. Adems Bitfarma tiene una serie de mdulos alrededor que completan el sistema como formulacin magistral, control de calidad, homeopata, robot En cambio este producto no ofrece la versin multiempresa ni multiidioma, adems todos los usuarios pueden hacer de todo no tienen seguridad a nivel de usuarios. Si que el sistema es grfico e intuitivo como en nuestro caso. Aunque la funcionalidad o el acceso a las diferentes funciones es diferente que en el sistema que nosotros proponemos. Ponemos un ejemplo de la pantalla de pedidos. Pgina 23

Compufarma: Esta aplicacin nace a partir de la base de datos del Medicamento y Parafarmacia del Consejo General de Colegios de Farmacuticos. Compufarma da solucin a las ventas, archivos, gestin de pedidos, albaranes y facturas, facturacin de recetas y clientes, listados, informes, estadsticas Esta aplicacin est pensada bsicamente para la gestin a nivel de ventas en mostrador. Dispone de muchos listados y estadsticas (ventas mensuales, ventas anuales, venta comparativa mensual, venta comparativa anual). El sistema si dispone de nivel de seguridad mediante perfiles Pgina 24 PFC: Gestin de una Farmacia Este sistema en comparacin con el que nosotros proponemos le faltara la opcin multiempresa, los procesos de actualizacin, el diccionario,... Farmatic Windows: Es la herramienta pensada para cubrir/facilitar las necesidades de gestin del siglo XXI (independencia, rentabilidad, amplia gestin, posibilidad MultiNIF, adaptacin a normativas autnomas, tratamiento de grupos, sistemas de marketing y fidelizacin, atencin farmacutica adaptada al C.G.C.O.F , manejo de autmatas y robots, ). Esta aplicacin tiene una arquitectura de 3 capas, es una aplicacin orientada a objetos, diseo mediante la gua de estilos Microsoft, la base de datos es Microsoft SQL Server y total adaptacin para Windows XP y Windows 2000. Esta herramienta consta de las siguientes funcionalidades: o Ventas: dispensacin. Ventas por mostrador, funcionamiento por teclado, tarjetas sanitarias. o Caja: verificacin de las ventas, control de pagos, asignar dineros para cambios, o Compras: Control de las necesidades de compras, control de la mercanca recibida, comparacin de diferentes ofertas facilitando el conseguir un mayor margen. Pgina 25 o Control de almacn: informacin sobre el estado y movimiento del almacn. o Comunicaciones: envo de pedidos, catlogos del proveedor mediante modem, actualizacin de bonificaciones. o Gest. Clientes y pacientes: procesos que facilitan el seguimiento de las operaciones de los clientes (facturas, albaranes, consumos, ) o Gestin de Recetas: gestiona y controla las recetas que hayan tenido entrada en la oficina de farmacia para proceder a su posterior facturacin al

organismo correspondiente. o Contabilizacin: contabilidad integrada y totalmente automatizada. o Gestin multiempresa: Contro l independiente de varias actividades fiscales. Visualizacin de informacin por actividad. o Importacin de datos: Incorporacin fcil y segura de datos de otras aplicaciones. o Seguridad: seguridad a nivel de datos mediante replicas en diferentes servidores, copias de seguridad, adaptado a la normativa de la L.O.P.D. o Atencin farmacutica: Recoge las normas para el C.G.C.O.F dicta en su actual proyecto de Atencin Farmacutica. Este sistema tiene muchas ms funcionalidades y tiene la funcionalidad que hasta ahora carecan los sistemas anteriores de la funcionalidad de multiempresa. Nos seguira faltando los procesos de envo y actualizacin aunque tienen la importacin de datos, la opcin de multiidioma y opciones segn el usuario. Etron Farmacia: est pensado en su totalidad para solucionar eficazmente las situaciones reales que surgen en el da a da de una farmacia. Etron dispone de diferentes versiones: versin estndar, estndar-red, profesional, profesional-red. Segn la versin se tienen diferentes funcionalidades. Las caractersticas generales de este sistema son: o Opera sobre cualquier plataforma Windows 2000, XP, Vista o Escalable, varias versiones disponibles segn las necesidades Pgina 26 PFC: Gestin de una Farmacia o Independiente, no est vinculado con ningn proveedor ni fabricante de medicamentos. o Base de datos relacional (Cliente/Servidor) implementada sobre el Nexus Database System o Actualizaciones va internet. Esta herramienta consta de las siguientes funcionalidades: o Punto de Venta y Dispensacin: venta, dispensacin por DOE, tarjeta sanitaria, registro de importe, control y gestin de recetas pendientes. o Caja: registro y acceso a todas las entradas y salidas de caja, diferentes informes de movimientos de caja o Operaciones con clientes: ventas y saldos de cada cliente (cl ientes particulares y/o empresa), emisin de facturas, Pgina 27 o Medicamentos, parafarmacia otros artculos: actualizacin de datos, personalizacin del sistema de stock, anlisis de ventas.

o Gestin de inventario, proveedores: pedidos diferentes por proveedor, gestin automtica de orden de pedido y clculo de unidades, registro automtica de margen de beneficio por pedido, valoraciones de inventario mediante informes. Pgina 28 PFC: Gestin de una Farmacia o Facturacin al colegio: generacin automtica de asociaciones y envi al colegio, informes de facturacin al colegio customizables. o Modulo multiempresa: Informacin y gestin diferenciada por cada empresa de: inventario, stock, ventas, tickets, facturas, pedidos, cajas, Todos estos sistemas son ms complejos que el que nosotros presentamos, por ello nuestro sistema es concreto y fcil de usar, ya que nicamente tiene las funciones principales que se harn servir y que en estos momentos se necesitan. Nuestro sistema ha de ir evolucionando y amplindose con nuevas funcionalidades. Nuestro sistema a nivel de funcionalidades de administracin es el ms completo de todos, ya que nuestro sistema tiene la funcionalidad de multiempresa, procesos de actualizacin de informacin y envo de informacin, el diccionario y la seguridad por perfiles de usuario. Pgina 29 1.6 Planificacin En este apartado realizaremos la planificacin de nuestro proyecto, una comparativa entre el tiempo estimado que se pens que bamos a tardar cuando se planifico el proyecto y el tiempo real de nuestro proyecto y el coste de realizacin del proyecto. Cuando hemos realizado la planificacin hemos tenido en cuenta: o Tiempo de realizacin de documentacin o Tiempo de realizacin de anlisis, diseo, implementacin y pruebas. o Tiempo de aprendizaje de los lenguajes utiliz ados en este proyecto y que no se conocen. Adems hemos intentado adecuar el tiempo del proyecto para ser realizado y presentado en un cuatrimestre. Teniendo en cuenta que se presentaran hasta la fecha lmite y 15 das antes se ha de presentar la documentacin e implementacin. Pgina 30

PFC: Gestin de una Farmacia 1.6.1 Planificacin inicial Para una mejor planificacin nuestro proyecto lo hemos dividido en diferentes tareas, planificando cada tarea en el tiempo segn las dependencias que pudieran tener unas entre otras, es decir, primero hemos de crear el motor de la aplicacin para luego poder crear las funcionalidades necesarias. En la planificacin hemos intentado ir generando documentacin a la vez que se va generando implementacin o aprendizaje. No hemos creado una tarea concreta de aprendizaje, ya que a medida que vayamos necesitando el lenguaje para realizar las diferentes tareas iremos aprendiendo y buscando informacin de cmo realizarlo. Las tareas bsicas que hemos dividido nuestro proyecto son: o Motor de la aplicacin: Aqu incluimos todas las tareas necesarias para crear una aplicacin base. Motor procesos: Funcionalidades necesarias para generacin de los procesos, Generacin del men segn los usuarios, La seguridad a nivel de aplicacin y procesos segn el usuario conectado Definicin de las interficies bsicas que se harn servir en la aplicacin La creacin y carga del diccionario, en castellano y cataln completos. o Desarrollos: Esta tarea est formada por diferentes subtareas. Cada subtarea equivale a un caso de uso que hemos definido en el apartado 3 de este documento. Pgina 31

o Interficies otros sistemas: Esta tarea est formada por las dos tareas bsicas de comunicacin con otros sistemas. Bsicamente son dos que son la obtencin de los artculos y la generacin de facturas mediante ficheros externos a nuestra aplicacin. o Generacin de listados: En esta tarea agrupamos los informes que tiene nuestra aplicacin o Pruebas : En este apartado incluimos las pruebas que realizaremos a nuestro sistema ya sea a nivel de implementacin como de aceptacin(hacemos lo que dijimos que bamos hacer y como lo bamos hacer) o Documentacin: Esta tarea es bsicamente la documentacin que vamos generando a medida que vamos adelantando en nuestro proyecto. Finalmente se basa en dos: uno este documento y el segundo la presentacin de ste proyecto. Pgina 32 PFC: Gestin de una Farmacia Pgina 33 octubre noviembre Motor de la Aplicacin Motor procesos Seguridad Men Interficies- Pantallas Idioma Desarrollos Usuarios Parametrizacin Empresa de trabajo Clientes Asociaciones Artculos Stock Albaranes Apuntes Facturas Aviso de stock Consumo Margen Estado albaranes Interficies otros sistemas Interficies artculos Interficie facturacin Generacin de listados

Informes listados Informes fichas Pruebas Pruebas desarrollos Pruebas aceptacin Pgina 34 Diciembre Enero PFC: Gestin de una Farmacia Documentacin Documentacin objetivos Documentacin Motor Documentacin Desarrollo Documentacin final proyecto Presentacin proyecto Cada cuadrito equivale a una semana, alrededor de unas 40 horas 60 horas Tarea Tiempo estimado en la planificacin inicial Motor de la aplicacin 150 horas Desarrollos 200 horas Interficies otros sistemas 40 horas Generacin de listados 100 horas Pruebas 60 horas Documentacin 100 horas TOTAL

650 horas Pgina 35 1.6.2 Tiempo utilizado para la realizacin del proyecto En este apartado nicamente incluiremos las horas realizadas para el proyecto, ya que por causas personales a nivel de meses ha habido semanas inactivas. Por ello nicamente pondremos el tiempo a nivel de horas. Tarea Tiempo real utilizado Motor de la aplicacin 180 horas Desarrollos 240 horas Interficies otros sistemas 40 horas Generacin de listados 120 horas Pruebas 40 horas Documentacin 150 horas TOTAL 770 horas 1.6.3 Comparacin entre la planificacin i el tiempo utilizado En este apartado se mostrar una comparativa entre la planificacin inicial realizada y el coste temporal real realizado. Tarea Tiempo estimado en la

Tiempo real utilizado planificacin inicial Motor de la aplicacin 150 horas 180 horas Desarrollos 200 horas 240 horas Interficies otros sistemas 40 horas 40 horas Generacin de listados 100 horas 120 horas Pruebas 60 horas 40 horas Documentacin 100 horas 150 horas TOTAL 650 horas 770 horas Pgina 36 PFC: Gestin de una Farmacia Como se puede observar existe una desviacin de aproximadamente del 12% entre

la planificacin inicial y el desarrollo real. Principalmente esta desviacin se encuentra sobre todo centrada en los desarrollos de los casos de uso y la documentacin. Los principales motivos de esta desviacin son: o Ha sido ms costoso el aprendizaje de los lenguajes no conocidos. o Ampliacin que se ha tenido que realizar respecto a los conocimientos de UML y orientacin a objetos o Documentacin exhaustiva. 240 250 200 200 150 180 150 150 120 100 100 100 4040 50 Planificacin inicial Coste real 60 40 Pgina 37 c i n me nta eba s

Do cu Pru L is t ad os is Int erf ic lo s rol De s ar Mo tor 0 1.6.4 Coste del proyecto El coste del proyecto engloba el coste de las maquinas utilizadas, programas necesarios y el coste derivado del personal necesario para su desarrollo. En este coste de proyecto no se tienen en cuenta los costes indirectos como la luz, la electricidad, Coste Hardware Este es el coste asociado a los equipos utilizados en el desarrollo del proyecto. Hardware Pentium IV a 1.6 GHz 900 Intel Core 2 CPU T7200 a 2GHz 1.200 TOTAL Coste

2.100 Coste Hardware Este es el coste asociado al software utilizado en el desarrollo del proyecto. Cabe destacar que este material no ha sido adquirido especialmente para el desarrollo del proyecto y, por lo tanto, los precios son orientativos. Software Coste Office 2007 400 Microsoft Visual Studio .net 2003 300 MySql Gratuito Altova XMLSpy 1.200 TOTAL 1.900 Pgina 38 PFC: Gestin de una Farmacia Coste Recursos humanos A continuacin se detalla los costes en recursos humanos necesarios para este proyecto segn el rol alcanzado y las horas realizadas bajo este rol. Rol Horas Coste por Hora Coste

Analista 130 Horas 60 7.800 Diseador 150 Horas 55 8.250 Programador 340 Horas 40 13.600 Documentalista 150 Horas 20 3.000 32.650 TOTAL Coste Total Proyecto En la siguiente tabla se presenta el precio total del desarrollo del proyecto que hemos desglosado en los puntos anteriores. Concepto Coste Hardware 2.100

Software 1.900 Recursos humanos 32.650 TOTAL 36.650 Pgina 39 Pgina 40 PFC: Gestin de una Farmacia 2. Anlisis de requerimientos del sistema 2.1 Requerimientos funcionales Los requerimientos funcionales de nuestro proyecto han de satisfacer las neces idades de nuestro cliente. Dentro de los requerimientos funcionales hemos listad o los puramente funcionales y los requerimientos de los datos, sin hacer ningn tipo de distincin. El grupo de requerimientos puramente funcionales hace que cada uno de los requerimientos vaya inherentemente ligado a un caso de uso. Requerimiento 1 Descripcin: El sistema registrar las empresas de trabajo, con la informacin principal de stas. Justificacin: La farmacia tiene que poder facturar con el nombre de dos farmacias, por ello necesitamos registrar la informacin necesaria como por ejemplo nombre, nif y direccin. Requerimiento 2 Descripcin: El sistema registrar los diferentes clientes con los que trabaja las farmacias. Justificacin: La farmacia tiene que poder generar albaranes, apuntes y facturas a sus diferentes clientes. Requerimiento 3 Descripcin: El sistema registrar las diferentes asociaciones de sus clientes con los que trabaja las farmacias. Justificacin: La farmacia tiene que poder enviar sus albaranes, con sus productos a las diferentes asociaciones que tiene cada uno de sus clientes, para ello necesitamos guardar

informacin sobre todo la direccin. Pgina 41 Requerimiento 4 Descripcin: El sistema registrar los diferentes artculos que proveen la farmacia y el stock de stos. Justificacin: La farmacia tiene que poder proveer los diferentes artculos que tiene a peticin de sus clientes, para ello ha de saber los artculos que tiene, el precio de stos y el stock del que dispone de cada uno de ellos. Requerimiento 5 Descripcin: El sistema registrar los albaranes que enviar a sus clientes junto con los medicamentos que enva. Justificacin: La farmacia enva los medicamentos a sus clientes, acompaado del albarn correspondiente. Requerimiento 6 Descripcin: El sistema registrar los apuntes generados de los diferentes albaranes. Justificacin: La farmacia genera albaran es y stos son agrupados en apuntes, segn unas condiciones especficas de cada albarn (misma peticin, misma asociacin y diferente tipo de albarn). Requerimiento 7 Descripcin: El sistema registrar las facturas generadas sobre los diferentes albaranes. Justificacin: La farmacia ha de enviar toda la facturacin realizada cada mes a la seguridad social, por eso, cada final de mes se genera las facturas de los diferentes albaranes creados y de los que se han creado ya sus apuntes. Pgina 42 PFC: Gestin de una Farmacia Requerimiento 8 Descripcin: El sistema deber avisar al usuario de los artculos que estn por debajo de su stock mnimo. Justificacin: La farmacia ha de solicitar ms medicamentos en el momento que tiene poco stock de sus medicamentos para cubrir totalmente sus pedidos, por eso si tiene un sistema de aviso antes de quedarse sin stock de estos medicamentos siempre podr proveer sus pedidos. Requerimiento 9 Descripcin: El sistema mostrar un listado para saber el consumo de sus artculos, segn

el mes, ao, cliente, asociacin. Justificacin: Para saber que medicamentos son los ms vendidos o para saber que medicamentos piden con mayor frecuencia sus clientes necesita estos listados de resumen del consumo de sus artculos. Requerimiento 10 Descripcin: El sistema mostrar un listado para saber el margen obtenido de cada artculo. Justificacin: Para saber del margen que dispone de los artculos que h an sido albaranados la farmacia. Requerimiento 11 Descripcin: El sistema mostrar un listado del estado de los albaranes. Justificacin: Para saber el estado de los albaranes creados y saber que albaranes estn pendientes de generar el apunte o de facturar. Pgina 43 Requerimiento 12 Descripcin: El sistema debe actualizar los artculos mediante un fichero que le es enviado a nuestro cliente, con todos los medicamentos y sus precios correspondientes. Justificacin: Para no tener que actualizar uno a uno sus artculos, se crear un proceso de lectura de fichero y un proceso de actualizacin de los artculos dados de alta y se crearn los que no existen. Requerimiento 13 Descripcin: El sistema debe generar un fichero con un formato especfico de las facturas que han sido generadas. Justificacin: Este tipo de documento se le ha solicitado a las farmacias para que el sistema que lo recibir actualice su informacin sin tener que introducir uno a uno las facturas generadas. Requerimiento 14 Descripcin: El usuario podr consultar los parmetros actuales del sistema. Justificacin: En cualquier momento el usuario puede estar interesado en conocer los parmetros actuales del sistema. Se podrn hacer consultas sobre la configuracin del sistema teniendo en cuenta las limitaciones de cada uno de los usuarios. Requerimiento 15 Descripcin: El usuario podr modificar los parmetros actuales del sistema. Justificacin: En cualquier momento el usuario puede estar interesado en modificar los parmetros actuales del sistema. Se podrn hacer consultas sobre la configuracin del sistema teniendo en cuenta las limitaciones de cada uno de los usuarios.

Requerimiento 16 Descripcin: El sistema permitir modificar el password de un usuario siempre y cuando se haya identificado previamente. Justificacin: En cualquier momento el usuario puede estar interesado en modificar el password con el que se identifica para entrar en el sistema. Pgina 44 PFC: Gestin de una Farmacia Requerimiento 17 Descripcin: El sistema permitir generar diferentes listados de la informacin registrada. Justificacin: En cualquier momento un usuario puede estar interesado en explotar la informacin que est registrada en el sistem a. Requerimiento 18 Descripcin: El sistema permitir hacer consultas parametrizadas (filtros) sobre la informacin registrada. Justificacin: Los usuarios pueden tener la necesidad de hacer consultas concretas sobre la informacin que tiene registrada en el sistema. Requerimiento 19 Descripcin: El sistema mantendr los nombres de los usuarios, los passwords y las categoras de los diferentes usuarios del sistema. Justificacin: El sistema ha de ser capaz de mantener la persistencia de los datos de cada usuario del sistema. Requerimiento 20 Descripcin: El sistema mantendr la informacin de todos los datos registrados en ste. Justificacin: El sistema ha de ser capaz de mantener la persistencia de los datos que han sido registrados en el sistema. Requerimiento 21 Descripcin: El sistema permitir la actualizacin de la informacin registrada en el sistema Justificacin: El sistema ha de ser capaz de modificar/eliminar la informacin registrada en el sistema sin que existan inconsistencias. Pgina 45 2.2 Requerimientos no funcionales En este apartado hemos incluido cualquier requerimiento de cualquier tipologa que no sea

funcional, como por ejemplo Requerimientos de usabilidad, de rendimiento, de seguridad Requerimiento 1 Descripcin: El sistema tendr una interficie cmoda para el usuario para el uso continuado. Justificacin: Es necesario que la interficie sea intuitiva para el sencillo funcionamiento del sistema. Requerimiento 2 Descripcin: El sistema mantendr una combinacin de colores constante en las diferentes pantallas Justificacin: Es aconsejable tener un nico estilo para las diferentes pantallas para que la interficie sea lo ms amigable posible. Requerimiento 3 Descripcin: El sistema tendr bsicamente tres tipos de pantallas: lista, ficha y filtros Justificacin: Para facilita r al usuario el trabajo con el sistema solo se crearn tres tipos de pantallas, as el usuario identificar enseguida donde se encuentra. Requerimiento 4 Descripcin: El sistema utilizar iconos identificativos para los procesos de alta, nuevo, filtro que siempre sern los mismos. Justificacin: Para facilitar al usuario el trabajo con el sistema siempre se utilizarn los mismos iconos. Pgina 46 PFC: Gestin de una Farmacia Requerimiento 5 Descripcin: El sistema pondr en otro color los datos obligatorios que ha de registrar el usuario. Justificacin: Para facilitar la introduccin de informacin del usuario y que el usuario identifique rpidamente cuales son los mnimos valores que ha de introducir para crear un nuevo registro, y evitar as mensajes de errores. Requerimiento 6 Descripcin: El sistema permitir rellenar los campos de fechas con un calendario grfico. Justificacin: Para facilitar la introduccin de datos en el sistema se utilizarn calendarios que por defecto tengan la fecha del sistema. Requerimiento 7 Descripcin: El sistema informar de posibles errores en la introduccin de los datos en los

formularios del sistema. Justificacin: Los valores que se introducen en los campos de los formularios han de tener un cierto formato y son de un cierto tipo. El sistema detectar estos tipos de errores e ir informando al usuario de los errores que se puedan producir. Requerimiento 8 Descripcin: El sistema dispondr de un sistema de bsqueda de la informacin registrada en el sistema que ser accesible des de los formularios de introduccin de informacin. Justificacin: Algunos campos que han de ser rellenados por el usuario en los formularios del sistema son difciles de rellenar. Por eso hay que dotar al sistema que permita buscar la mxima de informacin. Requerimiento 9 Descripcin: El siste ma ofrecer valores por defecto en los campos de los formularios del sistema. Justificacin: Muchos campos se rellenan siempre con los mismos datos, con lo que ofrecer valores por defecto permitir rellenar estos formularios en un tiempo menor. Pgina 47 Requerimiento 10 Descripcin: El sistema mostrar en todo momento el usuario identificado en el sistema y la empresa con la que se est trabajando. Justificacin: Poder visualizar en todo momento que usuario est identificado con el sistema y con qu empresa se est trabajando, permite saber si estamos haciendo las modificaciones de datos sobre el nombre que corresponde y si las funcionalidades que nos ofrece el sistema son las que corresponde al usuario conectado. Requerimiento 11 Descripcin: El sistema mostrar en todo momento las operaciones disponibles segn los privilegios del usuario conectado. Justificacin: Mostrar todas las operaciones disponibles permite saber al usuario que puede hacer en todo momento. Requerimiento 12 Descripcin: El sistema mostrar todas sus opciones en el idioma del usuario. Justificacin: Mostrar la informacin y opciones en el idioma del usuario esto hace ms amigable la interficie con el usuario. Requerimiento 13 Descripcin: El sistema permitir la conexin de varios usuarios a la vez, mantenimiento la

integridad en la base de datos. Justificacin: Existen varios usuarios de la aplicacin que pueden estar atacando a la misma informacin (tabla), el sistema ha de ser capaz de gestionar los datos y mantener la integridad de la informacin. Pgina 48 PFC: Gestin de una Farmacia Requerimiento 14 Descripcin: El sistema aplicar inmediatamente los cambios en su configuracin. Justificacin: Cualquier actualizacin realizada sobre el sistema debera de ser operativa al momento, para que no se produzcan inconsistencias. Re querimiento 15 Descripcin: El sistema tiene que obtener los datos y mostrarlos al usuario en poco tiempo. Justificacin: Para una rpida gestin, es necesario que las actualizaciones y consultas de los datos se obtengan en el menor tiempo posible. Requerimiento 16 Descripcin: Los datos se introducirn mediante perifricos de entrada clsicos de un PC. Justificacin: Es necesario proporcionar a los usuarios perifricos conocidos, ya que de esta manera tendrn ms facilidad de uso y tendrn menos rechazo a implantar el nuevo sistema. Requerimiento 17 Descripcin: El sistema ha de ser capaz de ejecutarse en equipos con sistema operativo Windows xp o vista. Justificacin: Cuanto ms plataformas sean compatibles con nuestro software mejor, este hecho siempre facilita su uso. Requerimiento 18 Descripcin: El sistema ha de ser escalable y ampliable fcilmente Justificacin: En cualquier momento se puede decidir la ampliacin de funcionalidades y esto ha de llevar los mnimos cambios posibles en el sistema. Pgina 49 Requerimiento 19 Descripcin: El sistema requiere que los usuarios se identifiquen con un nombre y una contrasea antes de acceder a las funcionalidades del sistema. Justificacin: Con la identificacin del usuario aseguramos que pueda acceder al sistema y

realizar peticiones. De esta manera restringimos el acceso al sistema. Requerimiento 20 Descripcin: El sistema realizar la autentificacin de los usuarios y permitir acceder a las funcionalidades segn el tipo de usuario. Justificacin: El usuario solo podr acceder a las funcionalidades si su categora se lo permite. De esta manera estamos restringiendo el acceso a las funcionalidades. Requerimiento 21 Descripcin: Las fechas se introducirn en el sistema usando el sistema dd/mm/yyyy. Justificacin: Al usuario le es ms familiar y fcil tener la notacin de nuestro pas. Requerimiento 22 Descripcin: El sistema ha de permitir aadir nuevas funcionalidades. Justificacin: El sistema cubrir necesidades pero estas van evolucionando y se han de ir modificando funcionalidades existentes y aadiendo nuevas funcionalidades. Requerimiento 23 Descripcin: El sistema ha de ser fcil de mantener. Justificacin: El sistema ha de ser modular para que el mantenimiento de este sea fcil y las modificaciones tengan la menor repercusin posible. Requerimiento 24 Descripcin: El sistema ha de ser capaz de ejecutarse en diferentes plataformas hardware Justificacin: En cualquier momento se puede decidir cambiar el hardware que interactuar con nuestro sistema y esto no ha de provocar ningn cambio en nuestro sistema. Pgina 50 PFC: Gestin de una Farmacia 3. Especificacin 3.1 Introduccin En este captulo se explicar el trabajo realizado sobre la especificacin utilizando UML (Unified Modeling Language) que es el lenguaje ms utilizado para la especificacin y el diseo de la programacin orientada a objetos. En este captulo se desarrollara el modelo de de casos de uso, el modelo conceptual y el modelo del comportamiento. Modelo de Casos de Uso En el modelo de Casos de uso se definen los casos de uso del sistema y la relacin

existente entre ellos. Un caso de uso es un documento que describe una secuencia de acontecimiento que realiza un actor (agente externo al sistema) que usa el sistema para llevar a cabo un proceso que tiene algn valor para l. [ES:E [Jacobson92]] Este modelo principalmente se compone de: o Identificar los actores Un actor es una entidad externa al sistema que participa en la historia de los casos de uso. Puede ser una persona, un conjunto de personas, un sistema hardware, un sistema software o un reloj. [ES:E] o Especificacin de casos de uso Es una breve descripcin de las acciones del caso de uso. [ES:E] Pgina 51 Modelo Conceptual El modelo conceptual es la representacin de los conceptos significativos en el dominio del problema a resolver. Muestra principalmente: [ES:E] o Clases de objetos Describe un conjunto de objetos con las mismas propiedades, un comportamiento comn, idntica relacin con otros objetos y una semntica comn. Esto implica que los objetos de una clase tienen las mismas propiedades y los mismos patrones de comportamiento. [ES:E] o Asociaciones Son las relaciones/asociaciones que existen entre los diferentes objetos. [ES:E] o Atributos Los atributos son las propiedades compartidas por los objetos de una clase. [ES:E] o Restricciones textuales No todos los comportamientos de los objetos se pueden definir en el diagrama de clases. En estos casos se utilizan las restricciones textuales que no son ms que explicaciones de ciertas condiciones que se han de cumplir en el modelo. Modelo del Comportamiento En el modelo del comportamiento se definen los diagramas de secuencia del sistema partiendo de los casos de uso. Estos diagramas tienen las siguientes funciones: o Mostrar los acontecimientos Muestra los acontecimientos externos entre actores y el sistema. o Identificar las operaciones Identifica las operaciones internas que se ejecutan como respuesta a la comunicacin de los acontecimientos. [ES:E]

Pgina 52 PFC: Gestin de una Farmacia 3.2 Modelo de Casos de uso 3.2.1 Diagrama de casos de uso Lo primero que haremos en este apartado es presentar a los diferentes actores que forman parte del sistema que se desarrolla en este proyecto. Actualizador - Administrativo: Persona o personas que tienen acceso a diferentes opciones para la introduccin de datos. Explotador de datos: Persona o personas que se dedican a explotar la informacin introducida por los actualizadores Administrador: Persona o personas que controlan toda la aplicacin y que gestionan los usuarios. Sistema Actualizacin Productos: sistema del cual recibiremos la informacin de los artculos Sistema Envo facturacin: sistema que recibir y tratara el fichero de facturacin que nuestro sistema generar. Actores Usuario extends extends S.Actualizacion Productos extends Actualizador - Administratiu Administrador Explotador de datos - Responsable Farmacia

Pgina 53 S.Envio facturacion Diagramas A continuacin se presenta el diagrama de casos de uso donde se pueden ver todos los casos de uso de este sistema. Autentificarse Usuario Registrar usuarios Modificar usuario Baja usuarios Introduir parmetres del sistema Administrador Actualizar informacin del sistema Pgina 54 PFC: Gestin de una Farmacia Registrar empresa de trabajo Registro asociaciones Registro clientes Registro de articulos Registro de stock Registro de apuntes Administratiu Registro de facturas Registro de albaranes

Aviso de stock minimos Administratiu Actualizacin de los articulos S.Actualizacion Productos Pgina 55 Baja empresa de trabajo Baja asociaciones Baja clientes Baja de articulos Baja de stock Baja de apuntes Administratiu Baja de albaranes Baja de facturas Obtener articulos Obtener stock Obtener asociaciones Obtener albaranes Obtener apuntes Obtener clientes Administratiu - Explotador obtener facturas Obtener empresa trabajo Pgina 56 PFC: Gestin de una Farmacia

Obtener consumo Obtener Margen Obtener estado albaranes Explotador Envio facturacion S.Envio facturacion Generaci de l listats Pgina 57 3.2.2 Especificacin de casos de uso 1. Registro de usuarios Actores: Administrador Propsito: Que los usuarios puedan utilizar el sistema y segn el tipo de usuario pueda realizar unas opciones u otras. Resumen: El administrador introduce sus datos. Curso tpico de sucesos Acciones de los Actores 1. El administrador Acciones del sistema accede a la aplicacin y selecciona la opcin de 2. El sistema solicita los datos nombre, password e idioma. registro 3. El administrador cumplimenta los 4. El sistema almacena la informacin datos solicitados y enva la peticin

proporcionada por el usuario y da de al sistema alta al usuario Cursos alternativos: 4 El sistema ya tiene almacenado un usuario con el mismo nombre 5 El administrador recibe un mensaje de error de que ya existe un usuario con el nombre introducido. Pgina 58 PFC: Gestin de una Farmacia 2. Modificar usuarios Actores: Administrador, usuario Propsito: Que se puedan modificar los datos del usuario. Resumen: El administrador podr aadir el usuario a nuevos grupos o eliminarlo. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrador accede a la opcin 2. El de modificacin de datos los datos 4. El sistema almacena los nuevos que crea conveniente administrador muestra almacenados del usuario 3. El administrador modifica los datos 5. El sistema

datos asociados al usuario introduce los 6. El sistema registra los grupos a los grupos a los que pertenece el usuario que pertenece el usuario 7. El administrador elimina los grupos 8. El sistema elimina los grupos a los a los que ha dejado de pertenecer el que ha dejado de pertenecer el usuario usuario. Cursos alternativos: 4 El sistema modifica el nombre del usuario con un nombre ya existente 5 El administrador recibe un mensaje de error de que ya existe un usuario con el nombre introducido. 3. Baja usuarios Actores: Administrador Propsito: Que se puedan dar de baja los usuario. Resumen: El administrador podr eliminar usuarios. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrador accede a la opcin 2. El sistema pide confirmacin de eliminar usuarios 3. El administrador confirma 4. El sistema seleccionado

Pgina 59 elimina el usuario 4. Introducir parmetros del sistema Actores: Administrador, Sistema. Propsito: Cambiar la configuracin del sistema. Resumen: El administrador quiere realizar unos cambios en el ajuste del sistema y por eso decide modificar los parmetros del sistema. Curso tpico de sucesos Acciones de los Actores 1. El administrador Acciones del sistema comunica al 2. El sistema que desea introducir los sistema solicita los nuevos parmetros parmetros 3. El administrador introduce los 4. El sistema almacena los nuevos

nuevos parmetros parmetros y activa la nueva configuracin Cursos alternativos: 3 El administrador desestima los cambios que quera hace, con lo que el estado del sistema se mantiene igual que al inicio del caso de uso. 5. Actualizar parmetros del sistema Actores: Administrador, Sistema. Propsito: Cambiar la configuracin del sistema Resumen: El administrador quiere realizar unos cambios en el ajuste del sistema y por eso decide modificar los parmetros del sistema. Curso tpico de sucesos Acciones de los Actores 1. El administrador Acciones del sistema comunica al sistema que desea modificar los 2. El sistema solicita los nuevos parmetros parmetros 3. El administrador

introduce los nuevos parmetros 4. El sistema almacena los nuevos parmetros y configuracin Pgina 60 activa la nueva PFC: Gestin de una Farmacia Cursos alternativos: 3 El administrador desestima los cambios que quera hacer, con lo que el estado del sistema se mantiene igual que al inicio del caso de uso. 6. Autentificacin de usuarios Actores: Usuarios, Sistema. Propsito: El usuario desea entrar a nuestro sistema. Resumen: El usuario, con la finalidad de que el sistema le reconozca, introduce su nombre de usuario y contrasea. El sistema carga diferentes opciones de men segn el perfil de usuario. Curso tpico de sucesos Acciones de los Actores 1. El usuario Acciones del sistema activa nuestro sistema 3. El contrasea

usuario nombre 2. El sistema solicita el nombre de usuario y de contrasea introduce su 4. El sistema comprueba que exista el usuario y nombre de usuario introducido y que concuerda con la contrasea introducida 5. El sistema carga las opciones del men segn la categora del usuario y entra en el sistema Cursos alternativos: 4 El sistema comprueba que el usuario introducido no existe o que la contrasea no concuerda con la que tiene registrada el usuario con el nombre introducido. El sistema comunica que hay algn error en los datos introducidos y se vuelve a la opcin (2). Pgina 61 7. Registro empresa de trabajo Actores: Administrativo, Sistema. Propsito: El usuario desea registrar la informacin de las empresas con las que va a trabajar. Resumen: El usuario registra la informacin de nombre, direccin, de la empresa con la que va a trabajar el administrativo. En nuestro caso existen dos Farmacia C y B.X.R que son las dos farmacias facturadoras que tendr el sistema. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo introduce/modifica

2. El sistema comprueba que estn los datos de la empresa de trabajo todos los datos necesarios y que desea aadir o modificar registra/modifica la empresa de trabajo Cursos alternativos: 2 El sistema detecta que falta algn tipo de informacin requerida, lo comunica al usuario y se pasa a la opcin (1). 8. Registro Clientes Actores: Administrativo, Sistema. Propsito: El usuario desea registrar la informacin de los clientes Resumen: El usuario registra la informacin de nombre, direccin, de los clientes a donde va a enviar los productos, los clientes a los que generar los albaranes, apuntes y facturas. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo introduce/modifica 2. El sistema comprueba que estn los datos del cliente que desea todos los datos necesarios aadir o modificar

y registra/modifica el cliente Cursos alternativos: 2 El sistema detecta que falta algn tipo de informacin requerida, lo comunica al usuario y se pasa a la opcin (1). Pgina 62 PFC: Gestin de una Farmacia 9. Registro Asociaciones Actores: Administrativo, Sistema. Propsito: El usuario desea registrar la informacin de las diferentes asociaciones de los clientes Resumen: El usuario registra la informacin de nombre, direccin, de las asociaciones de los diferentes clientes a donde va a enviar los productos, las asociaciones a los que generar los albaranes, apuntes y facturas. Un cliente tendr n asociaciones. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo introduce/modifica 2. El sistema comprueba que estn los datos de las asociaciones que todos los datos necesari os desea aadir o modificar y registra/modifica las asociaciones Cursos alternativos: 2 El sistema detecta que falta algn tipo de informacin requerida, lo comunica al usuario y se pasa a la opcin (1).

10. Registro Artculos Actores: Administrativo, Sistema. Propsito: El usuario desea registrar la informacin de los diferentes artculos. Resumen: El usuario registra la informacin de nombre artculo, precio, de los diferentes productos que va a facturar la empresa a los diferentes clientes-asociaciones que tiene. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo introduce/modifica 2. El sistema comprueba que estn los datos de los artculos que desea todos los datos necesarios aadir o modificar y registra/modifica los artculos Cursos alternativos: 2 El sistema detecta que falta algn tipo de informacin requerida, lo comunica al usuario y se pasa a la opcin (1). Pgina 63 11. Registro stock Actores: Administrativo, Sistema. Propsito: El usuario desea registrar la entrada en stock de los diferentes artculos. Resumen: El usuario registra la entrada de los diferentes artculos aumentando as el valor en stock de los artculos. Curso tpico de sucesos

Acciones de los Actores Acciones del sistema 1. El administrativo introduce/modifica 2. El sistema comprueba que el valor los datos de los artculos modificar introducido del stock es correcto y aadiendo stock modifica los artculos Cursos alternativos: 2 El sistema detecta que falta algn el valor del stock no es correcto, lo comunica al usuario y se pasa a la opcin (1). 12. Registro albaranes Actores: Administrativo, Sistema. Propsito: El usuario desea registrar los albaranes. Resumen: El usuario registra la cabecera y detalle de los a lbaranes, con unos campos especficos. Existen dos tipologas de albaranes apsitos o utillaje, es importante a la hora de generar los apuntes. Adems al guardar el albarn se producir una disminucin de los artculos en el stock. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo introduce/modifica 2. El sistema comprueba que estn los datos de los albaranes que desea todos aadir o modificar registra/modifica los albaranes

3. El administrativo introduce/modifica los datos y 4. El sistema comprueba que estn los datos de las lneas del albarn todos que desea aadir o modificar registra/modifica albarn Pgina 64 necesarios los datos necesarios las lneas y de PFC: Gestin de una Farmacia 5. Al registrar el albarn se har una disminucin del stock de los artculos. Cursos alternativos:

2 El sistema detecta que falta algn tipo de informacin requerida, lo comunica al usuario y se pasa a la opcin (1). 13. Registro apuntes Actores: Administrativo, Sistema. Propsito: El usuario desea registrar los apuntes de los albaranes. Resumen: El usuario seleccionar el albarn que desea generar el apunte. Un apunte puede contener dos albaranes, stos deben de cumplir que sean de la misma peticin del albarn, de la misma sociedad y que sean de diferente tipo (uno apsitos y el otro de utillaje).El usuario nicamente selecciona el albarn y ser el sistema el que genere la agrupacin si se cumplen las condiciones, anteriormente indicadas. Al hacer la agrupacin el sistema ha de tener en cuenta que ha de sumar los totales de los dos albaranes, y ha de modificar el estado del albarn conforme se ha generado el apunte. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo introduce/modifica 2. El sistema comprueba que estn los datos de los apuntes que desea todos los datos necesarios aadir o modificar y registra/modifica los apuntes. 3. Se modifica el estado del albarn que se ha generado el apunte. Cursos alternativos:

2 El sistema detecta que falta algn tipo de informacin requerida, lo comunica al usuario y se pasa a la opcin (1). Pgina 65 14. Registro facturas Actores: Administrativo, Sistema. Propsito: El usuario desea registrar las facturas de los diferentes albaranes. Resumen: El usuario seleccionar los albaranes que ya se hayan generado su apunte, y que desea generar su factura. Una factura puede contener ms de un albarn, siempre teniendo en cuenta que una factura ha de contener los albaranes de un mismo cliente y una misma asociacin. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo introduce/modifica 2. El sistema comprueba que estn los datos de las facturas que desea todos aadir o modificar registra/modifica las facturas. 3. El administrativo introduce/modifica los datos necesarios y 4. El sistema comprueba que estn los datos de las lneas de factura que todos

los datos desea aadir o modificar registra/modifica necesarios las lneas y de factura 5. Se modifica el estado del albarn que se ha generado la factura. Cursos alternativos: 2 El sistema detecta que falta algn tipo de informacin requerida, lo comunica al usuario y se pasa a la opcin (1). Pgina 66 PFC: Gestin de una Farmacia 15. Aviso de stock mnimo Actores: Sistema, administrativo. Propsito: El usuario debe saber si para un artculo ha superado el stock mnimo de ste. Resumen: Cuando el usuario entre en el sistema, si existe alg n artculo que ha superado el stock mnimo marcado de ste, mostrar un mensaje al usuario avisndole de esto. Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema introduce el 2. El sistema detecta que el usuario es

usuario o password para entrar al correcto y si existe un artculo que sistema. tiene un stock inferior al stock mnimo muestra un formulario con todos los artculos que cumplen esto. 3. El usuario avisa al sistema de que 4. El esta informado sistema muestra el men correspondiente al usuario Cursos alternativos: 2 El sistema no encuentra ningn artculo que est por debajo del stock mnimo y se pasa a la opcin (4). Pgina 67 16. Actualizacin de los artculos Actores: administrativo, Sistema. Propsito: El usuario desea actualizar la informacin que tiene actualmente en el sistema de los artculos Resumen: El usuario iniciar el proceso de actualizacin de la informacin de los artculos. El sistema leer el fichero proporcionado e ir actualizando, aadiendo o eliminando los artculos que tiene el sistema segn la lectura del fichero que va realizando. Curso tpico de sucesos Acciones de los Actores 1. El administrativo

Acciones del sistema selecciona la opcin de actualizacin de artculos 2. El sistema solicita la entrada fichero donde se encuentra del la informacin de los artculos 3. El administrativo introduce la direccin donde se encuentra el 4. El sistema realiza el proceso de actualizacin de los artculos fichero para actualizar los artculos 5. Avisa al usuario de todas las incidencias ocurridas en el proceso. Cursos alternativos: 4 El sistema no encuentra el fichero en la direccin introducida por el usuario, avisa al usuario de este hecho y se pasa a la opcin (2). Pgina 68 PFC: Gestin de una Farmacia 17. Baja empresa de trabajo Actores: administrativo

Propsito: Que se puedan dar de baja las empresas de trabajo. Resumen: El Administrativo podr eliminar empresas de trabajo. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo accede a la opcin 2. El sistema pide confirmacin de eliminar empresa de trabajo 3. El administrativo confirma 4. El sistema elimina la empresa seleccionado Cursos alternativos: 4 El sistema detecta que hay datos relacionados con la empresa, lo comunica al usuario y se pasa a la opcin (1). 18. Baja clientes Actores: administrativo Propsito: Que se puedan dar de baja los clientes. Resumen: El administrativo podr eliminar clientes. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo accede a la opcin 2. El sistema pide confirmacin de eliminar clientes 3. El administrativo confirma 4. El sistema elimina el cliente

seleccionado Cursos alternativos: 4 El sistema detecta que hay datos relacionados con el cliente, lo comunica al usuario y se pasa a la opcin (1). Pgina 69 19. Baja asociaciones Actores: administrativo Propsito: Que se puedan dar de baja las asociaciones. Resumen: El administrativo podr eliminar asociaciones. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrador accede a la opcin 2. El sistema pide confirmacin de eliminar asociaciones 3. El administrador confirma 4. El sistema elimina la asociacin seleccionado Cursos alternativos: 4 El sistema detecta que hay datos relacionados con la asociacin, lo comunica al usuario y se pasa a la opcin (1). 20. Baja artculos Actores: administrativo Propsito: Que se puedan dar de baja los artculos. Resumen: El administrativo podr eliminar artculos. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo accede a la opcin

2. El sistema pide confirmacin de eliminar artculos 3. El administrativo confirma 4. El sistema elimina el artculo seleccionado Cursos alternativos: 4 El sistema detecta que hay datos relacionados con el artculo, lo comunica al usuario y se pasa a la opcin (1). Pgina 70 PFC: Gestin de una Farmacia 21. Baja stock Actores: administrativo Propsito: Que se puedan dar de baja stock. Resumen: El administrativo podr eliminar stock. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo accede a la opcin 2. El sistema pide confirmacin de eliminar stock 3. El administrativo confirma 4. El sistema elimina

el stock seleccionado 22. Baja albaranes Actores: administrativo Propsito: Que se puedan dar de baja los albaranes. Resumen: El administrativo podr eliminar albaranes. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo accede a la opcin 2. El sistema pide confirmacin de eliminar albaranes 3. El administrativo confirma 4. El sistema elimina el albarn seleccionado Cursos alternativos: 4 El sistema detecta que hay datos relacionados con el albarn, lo comunica al usuario y se pasa a la opcin (1). Pgina 71 23. Baja apuntes Actores: administrativo Propsito: Que se puedan dar de baja los apuntes. Resumen: El administrativo podr eliminar apuntes.

Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo accede a la opcin 2. El sistema pide confirmacin de eliminar apuntes 3. E l administrativo confirma 4. El sistema elimina el apunte seleccionado y cambia el estado de los albaranes que tenia asociado el apunte 24. Baja facturas Actores: administrativo Propsito: Que se puedan dar de baja las facturas. Resumen: El administrativo podr eliminar facturas. Curso tpico de sucesos Acciones de los Actores Acciones del sistema 1. El administrativo accede a la opcin 2. El sistema pide confirmacin de eliminar facturas 3. El administrativo confirma 4. El

sistema elimina la factura seleccionada y cambia el estado de los albaranes que estn relacionados Pgina 72 PFC: Gestin de una Farmacia 25. Obtener empresa de trabajo Actores: administrativo-Explotador de informacin, Sistema. Propsito: ofrecer informacin de las empresas con las que podemos trabajar Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada de las empresas que estn registradas en el sistema. Curso tpico de sucesos Acciones de los Actores 1. El la 2. El sistema muestra una lista de las opcin de obtener empresas de empresas de trabajo registradas en el trabajo 26. administrativo Acciones del sistema selecciona sistema. Obtener clientes Actores: administrativo-Explotador de informacin, Sistema. Propsito: ofrecer informacin de los clientes registrados en el sistema

Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada de los clientes que estn registrados en el sistema. Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona la 2. El sistema muestra una lista con los opcin de obtener los clientes registrados Pgina 73 clientes registrados en el sistema. 27. Obtener asociaciones A ctores: administrativo-Explotador de informacin, Sistema. Propsito: ofrecer informacin de las asociaciones registrados en el sistema Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada de las asociaciones que estn registrados en el sistema. Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona la 2. El sistema muestra una lista con las opcin de obtener las asociaciones registradas 28.

asociaciones registradas en el sistema. Obtener artculos Actores: administrativo-Explotador de informacin, Sistema. Propsito: ofrecer informacin de los artculos registrados en el sistema Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada de los artculos que estn registrados en el sistema. Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona la opcin de obtener los artculos registrados Pgina 74 2. El sistema muestra una lista con los artculos registrados en el sistema. PFC: Gestin de una Farmacia 29. Obtener stock Actores: administrativo-Explotador de informacin, Sistema. Propsito: ofrecer informacin de los artculos tal que su stock ste cerca del stock mnimo Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada de los artculos tal que su stock est cerca del stock mnimo marcado. Curso tpico de sucesos Acciones de los Actores

1. El administrativo Acciones del sistema la 2. El sistema muestra una lista con los opcin de obtener los artculos cerca artculos que estn cerca del stock del mnimo y que estn registrados en el stock selecciona mnimo que estn registrados 30. sistema. Obtener albaranes Actores: administrativo-Explotador de informacin, Sistema. Propsito: ofrecer informacin de los albaranes registrados en el sistema. Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada de los albaranes registrados. Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona

la 2. El sistema muestra una lista con los opcin de obtener los albaranes registrados Pgina 75 albaranes registrados en el sistema. 31. Obtener Apuntes Actores: administrativo-Explotador de informacin, Sistema. Propsito: ofrecer informacin de los apuntes registrados en el sistema. Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada de los apuntes registrados. Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona la opcin de obtener los apuntes 2. El sistema muestra una lista con los apuntes registrados en el sistema. registrados 32. Obtener facturas Actores: administrativo-Explotador de informacin, Sistema. Propsito: ofrecer informacin de las facturas registradas en el sistema. Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada de las facturas registradas. Curso tpico de sucesos Acciones de los Actores 1. El

administrativo Acciones del sistema selecciona la opcin de obtener las facturas registradas Pgina 76 2. El sistema muestra una lista con las facturas registradas en el sistema. PFC: Gestin de una Farmacia 33. Obtener consumo Actores: Explotador de informacin, Sistema. Propsito: ofrecer informacin del consumo de los diferentes artculos Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informaci n detallada del consumo de los artculos segn diferentes parmetros (mes, ao, empresa, cliente, asociacin) Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona la 2. El sistema muestra una lista con los opcin de obtener los consumos de los artculos que estn registrados 34. consumos de

los artculos registrados en el sistema. Obtener Margen Actores: Explotador de informacin, Sistema. Propsito: ofrecer informacin del margen de los diferentes artculos Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada del margen de los artculos que se han albaranado. Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona la 2. El sistema muestra una lista con el opcin de obtener el margen de los margen de los artculos registrados artculos registrados que se han en el sistema y que se han albaranado albaranado. Pgina 77 35. Obtener estado albaranes Actores: Explotador de informacin, Sistema. Propsito: ofrecer informacin del estado de los albaranes registrados en el sistema. Resumen: El sistema recibe la solicitud del usuario y ste le muestra la informacin detallada del estado de los albaranes. Curso tpico de sucesos Acciones de los Actores

1. El la 2. El sistema muestra una lista con el opcin de obtener el estado de los estado de los albaranes registrados albaranes registrados 36. administrativo Acciones del sistema selecciona en el sistema. Envo facturacin Actores: Explotador de informacin, Sistema. Propsito: enviar informacin de las facturas registradas en el sistema Resumen: El sistema recibe la solicitud del usuario y ste genera un fichero con un formato de las fact uras registradas en el sistema. El usuario introducir un periodo de fechas y las facturas que se hayan generado en esas fechas son las que se incluirn en el fichero. Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona la opcin de envo de facturacin 2. El sistema solicita el nombre del fichero y donde desea guardar el fichero, adems del periodo de facturacin que desea enviar. 3. El

administrativo introduce la 4. El sistema realiza el proceso de direccin y el nombre del fichero generacin del fichero segn el donde desea guardar el fichero con periodo de facturacin seleccionado la informacin de la factura, adems del periodo de fechas de facturacin. 5. Avisa al usuario de todas las incidencias ocurridas en el proceso. Pgina 78 PFC: Gestin de una Farmacia Cursos alternativos: 4 El sistema comprueba que el periodo de facturacin introducido es incorrecto con lo que volvemos a la opcin (2). 4 El sistema comprueba que en el periodo de facturacin no existe ninguna factura, avisa al usuario y volvemos a la opcin (2). 37. Generacin de listados Actores: Explotador de informacin, Sistema. Propsito: generar diferentes listados con informacin diferente. Resumen: El sistema recibe la solicitud del usuario desea imprimir un listado. Existen listados donde se han de introducir parmetros con lo que el sistema mostrar una pantalla previa para que seleccione los parmetros con los que desea lanzar los listados. Los listados que realizaremos sern: Listados / Consultas Albaranes no valorados (segn empresa de trabajo) Listados / Consultas Albaranes valorados (segn empresa de trabajo) Listados / Consultas Albaranes no facturados (segn empresa de trabajo) Listados / Consultas facturas creadas (segn empres a de trabajo) Impresin ficha de facturas Listados con formato definido: Acumulado por empresas

Listados con formato definido: Informe valorado por provincia (detallado) Listados con formato definido: Informe valorado por provincia (no detallado) Listados con formato definido: Informe de artculos acumulado Listados con formato definido: Informe de artculos acumulado (detallado) Listados con formato definido: Informe de artculos acumulado (no detallado) Listados con formato definido: Informe de Peticiones Listados con formato definido: consumo total de artculos Listados con formato definido: Listado de stocks Listados con formato definido: Rango de peticiones Pgina 79 Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona la 2. El sistema solicita el informe que opcin de imprimir listados desea imprimir y los parmetros con los que se desea lanzar el informe 3. El administrativo introduce los datos 4. El sistema muestra una vista previa solicitados. del informe seleccionado Cursos alternativos: 4 El sistema comprueba que los datos introducidos para imprimir el listado no son correctos, avisa al usuario y volvemos a la opcin (2). 37.1 Listado consulta albaranes no valorado (segn empresa de trabajo) Por cuestin de espacio en los casos de usos del listado ponemos dos a modo de ejemplo uno que solicita parmetros y otro que no solicita los casos de uso de los otros listados serian equivalentes. Actores: Explotador de informacin, Sistema. Propsito: generar listado con informacin de los albaranes sin ningn valor econmico.

Resumen: El sistema recibe la solicitud del usuario desea imprimir un listado. El sistema le retorna la lista de albaranes sin valores econmicos. Curso tpico de sucesos Acciones de los Actor es 1. El administrativo Acciones del sistema selecciona el informe albaranes no valorado 2. El sistema muestra una vista previa de los albaranes no valorados. 37.2 Impresin ficha factura Actores: Explotador de informacin, Sistema. Propsito: generar listado con la informacin de la factura. Resumen: El sistema recibe la solicitud del usuario desea imprimir la ficha de la factura. El sistema solicita el nmero de factura y le retorna la ficha de la factura. Pgina 80 PFC: Gestin de una Farmacia Curso tpico de sucesos Acciones de los Actores 1. El administrativo Acciones del sistema selecciona el 2. El sistema solicita el numero de informe ficha de factura 3. El administrativo introduce

factura que se desea imprimir el 4. El sistema muestra una vista previa numero de factura de la ficha de la factura Pgina 81 3.3 Modelo Conceptual El modelo conceptual es una descripcin del dominio de un problema real, identificando los atributos y las asociaciones. El modelo conceptual es una herramienta de comunicacin, con la cual se intenta comprender los conceptos importantes y sus relaciones. Es tambin til para transmitir este conocimiento a otros. Nosotros lo realizaremos mediante UML. En UML se representa mediante un grupo de diagramas de estructura esttica donde no se define ninguna operacin. En estos diagramas se muestran conceptos (objetos), asociaciones entre conceptos (relaciones) y atributos de conceptos (atributos). Para que nuestro modelo conceptual sea ms legible los hemos dividido en diferentes modelos segn la funcionalidad. Los modelos creados son: o Modelo Administracin En este modelo representamos la realidad de los usuarios que entraran en el sistema que forman parte de unos grupos. Estos grupos acceden a unas entidades y acciones. Est as entidades y acciones son los que se basan los procesos que forman parte de nuestro sistema. Adems en este modelo tambin representamos los objetos de constantes (sirven para tener unas constantes definidas que utiliza el sistema) y el diccionario (segn el idioma del usuario se utilizar el diccionario para cargar el lenguaje que interactuar nuestro sistema con el usuario). Pgina 82 PFC: Gestin de una Farmacia o Modelo Clientes En este modelo representamos la realidad de las empresas, clientes y asociaciones con las que trabajaremos en nuestro sistema.

Una empresa tiene diferentes clientes y los clientes son divididos en diferentes asociaciones. Las empresas sern las empresas que facturan/albaranan, los clientes y asociaciones son a los que facturamos o albaranamos. Un cliente es la unin de diferentes asociaciones (Caja Madrid sera el cliente y cada una de las sucursales seran las asociaciones). En este modelo relacionado con nuestras empresas, los clientes y asociaciones representamos diferentes objetos: En el caso de las empresas representamos los tipos de va (tipo de va que tiene la direccin donde se sita nuestra empresa) y las provincias (provincia donde se encuentra localizada nuestra empresa). En el caso de los clientes representamos las formas de pago (forma de pago en la que realiza el pago a nuestra empresa), documentos de pago (documento de pago que realiza el cliente a nuestra empresa) y tipos IVA (es el tipo de IVA que se aplica para el cliente). En el caso de las asociaciones representamos los tipos de va y las provincias igual que en el caso de las empresas. Pgina 83 o Modelo Artculos En este modelo representamos la realidad de los artculos, el stock y el consumo de los artculos. Un artculo es asociado con la empresa con la que trabaja el artcul o (la empresa compra/vende este artculo). Un artculo tiene un stock que sube y baja segn la venta y compra. Un artculo es consumido (vendido) en una cierta cantidad en un ao y mes concreto. o Modelo Albarn Este modelo tambin lo hemos dividido en dos, uno centrando ms la informacin del albarn y el segundo la relacin del albarn con los artculos. En el modelo albarn-1 representamos la realidad de los albaranes

que realizan las empresas a los clientes-asociaciones del sistema. Los albaranes tienen diferentes lneas de albarn y cada lnea de albarn hace referencia a un artculo. Adems a partir de los albaranes generamos los apuntes que es una pequea agrupacin de los albaranes. En el modelo albarn-2 representamos la realidad del margen que tiene la empresa sobre los albaranes realizados. o Modelo Facturacin En este modelo representamos la realidad de la facturacin. Las empresas facturan a los clientes. Las facturas estn compuestas por lneas de facturas que tienen un tipo de IVA y stas hacen referencia a un albarn y artculo concreto. Pgina 84 PFC: Gestin de una Farmacia Modelo Administracin Modelo Administracin Usuarios -id_usuario : int -nombre : string -password : string -idioma : string Privilegios_acceso -privilegio : string 0..* pertenece 0..* Entidades Grupos * * -id_grupo : int -nombre : string -descripcion : string -id_entidad : int -nombre : string

-descripcion : string 0..1 Procesos se basa privilegios_Accion -privilegio : string * {O lgico} * Grupos -id_grupo : int -nombre : string -descripcion : string es basado * * Acciones -id_accion : int -nombre : string -descripcion : string 0..1 Constantes -id_constante : int -nombre : string -valor : string -descripcion : string Diccionario -id_dicci onario : int -etiq1 : string -etiq2 : string -texto : string -idioma : string Pgina 85 -id_proceso : int -ref : string -tipo : string

-seguridad : string -clase_Entidad : string -descripcion : string Restricciones de Integridad: Un proceso como mnimo tiene que estar relacionado con una entidad o una accin. No existen dos usuarios con el mismo nombre No existen dos grupos con el mismo nombre La clave de usuarios es id_usuario. La clave de grupos es id_grupo. La clave de entidades es id_entidad La clave de acciones es id_accion La clave de procesos es id_proceso La clave de constantes es id_constante La clave de diccionario es id_diccionario Usuarios: Representa a los usuarios de la aplicacin. El atributo idioma solo puede tener los valores ESP,CAT. Grupos: Representa los grupos que hay en el sistema Entidades: son las entidades que hay en nuestro sistema, una entidad equivale a un objeto que necesitamos referenciar (tablas de base de datos,) Privilegio Acceso: el atributo privilegio solo puede tener los valores A: Actualizacin, L: Lectura. Acciones: En nuestra aplicacin en principio nicamente existirn dos acciones: actualizar_articulos, envio_facturacion. Sirve para que la seguridad no sea directamente de un objeto y que pueda ser una accin como ejecutar un proceso. Privilegio Accin: el atributo privilegio solo puede tener los valores X, N Procesos: son los procesos que crearemos para las acciones que puede realizar el usuario y tienen una seguridad detrs de cada accin. Constantes: Representan unas constantes con unos valores a cambiar por el usuario. Diccionario: representa el diccionario utilizado en la aplicacin Pgina 86 PFC: Gestin de una Farmacia Modelo Cliente Modelo Cliente se situa Tipos_via 1

Empresas -id_empresa : string -nombre : string -c alle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -nif : string -id_tipo_via : int -codigo : string -descripcion : string 0..* Provincias se localiza 1 0..* -id_provincia : int -codigo : string -descripcion : string -prefijo : string 0..* trabaja con Formas_de_pago paga como 1..* 1 Clientes -id_cliente : int -nombre : string -nif : string -telefono : string -fax : string -email : string -DiaPago1 : int -DiaPago2 : int -DiaPago3 : int -Tarifa_PV : int -NumCopFac : int -Observaciones : string -id_forma_de_pago : float

-codigo : string -descripcion : string -vencimientos : int -decalaje : int Docs_pago 0..* paga con 1 -id_docs_pago : double -codigo : string -descripcion : string 0..* 0..* tiene 1 Tipos_iva -id_tipo_iva : double -descripcion : string -iva : int 1 se divide Tipos_via se situa 0..* 1 -id_tipo_via : int -codigo : string -descripcion : string Asociaciones -id_asociacion : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -codigo : string -sucursal : string

0..* Provincias 0..* se localiza 1 -id_provincia : int -codigo : string -descripcion : string -prefijo : string Pgina 87 Restricciones de Integridad: No existen dos empresas con el mismo nombre La clave de empresas es id_empresa. La clave de clientes es id_cliente. La clave de asociaciones es id_asociacion La clave de tipos de va es id_via La clave de provincias es id_provincia La clave de formas de pago es id_forma_de_pago La clave de documentos de pago es id_docs_pago La clave de tipos de IVA es id_tipo_iva Empresas: Representa a las empresas que trabajaremos en l a aplicacin. La informacin que se guarda es nombre y direccin bsicamente. Clientes: Representa a los clientes que trabaja dependiendo de la empresa con la que entramos para trabajar en la aplicacin, es decir, pueden existir clientes repetidos pero que dependan de diferentes empresas. Asociaciones: Representa a las asociaciones que tienen los diferentes clientes de la aplicacin. Tipos va: representa a las diferentes tipologas de vas que existen en la realidad. Provincias: representa a las diferentes provincias que hay en la realidad y donde estn localizadas o nuestras asociaciones o nuestras empresas. Formas de pago: representa las diferentes formas de pago que pueden tener los clientes. Documentos de pagos: representa los diferentes documentos de pago que pueden tener los clientes. Tipos Iva: representa los diferentes tipos de IVA que pueden tener los clientes. Bsicamente son 7%,16%

Pgina 88 PFC: Gestin de una Farmacia Modelo Artculos Modelo Articulos Stock -id_stock : int -existencia : int -stock_minimo : int 1 Empresas tiene son pedidos por 1 1 Articulos -id_Articulo : double -codigo : string -descripcion : string -precio_venta : double -precio_compra : double -pvp : double -margen : double * -id_empresa : string -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -nif : string * 1 se consume tiene Tipos_iva

1 -id_tipo_iva : double -descripcion : string -iva : int * Consumo_anyo -id_consumo : int -anyo : int -mes : int -cantidad : int Pgina 89 Restricciones de Integridad: Un artculo solo tiene un consumo para cada ao y mes. La clave de stock es id_stock. La clave de artculos es id_articulo La clave de consumo_anyo es id_co nsumo. Artculos: Representa a los artculos con los que trabajan las diferentes empresas y que son pedidos por los clientes-asociaciones. Puede haber artculos repetidos pero que dependen de diferentes empresas. Stock: Representa el stock actual de los artculos. Consumo anyo: Representa el consumo de los artculos a nivel de ao y mes. Pgina 90 PFC: Gestin de una Farmacia Modelo Albarn Modelo Albaran Empresas realizan 1 -id_empresa : string -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string

-telefono : string -fax : string -nif : string trabaja con 1 1..* Albaranes -id_albaran : int -fecha_entrada : string -/estado : string -ccc : string -direccion : string -poblacin : string -provincia : string -apunte : int -sucursal : string -peticion : string -tipo_albaran : string -bultos : int -gen_apunte : bool -numero_apunte : int -/tipo_iva1 : double -/tipo_iva2 : double -/tipo_iva3 : double -/base1 : double -/base2 : double -/base3 : double -observaciones : string crea 1 Clientes recibe * 1 * * -id_cliente : int -nombre : string -nif : string -telefono : string -fax : string -email : string -DiaPago1 : int

-DiaPago2 : int -DiaPago3 : int -Tarifa_PV : int -NumCopFac : int -Observaciones : string Apuntes se divide 1 * 1..2 se agrupa 0..* 1 Asociaciones 1 Contiene son enviados 1 * Lineas_albaran -id_linea_albaran : int -desc_art : string -cantidad : int -precio : double -iva : int -/total_base : double -/total_iva : double -/total_detalle : double -estado : string -plus : int -id_asociacion : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -codigo : strin g -sucursal : string

* Articulos es sobre 1 -id_Articulo : double -codigo : string -descripcion : string -precio_venta : double -precio_compra : double -pvp : double -margen : double Pgina 91 -id_apunte : int -tipo1 : int -tipo2 : int -empdesc : string -provaso : string -peticion : string -fecha_apunte : string -apunteemp : int -sucursal : string -ccc : string -totaltipo1 : double -totaltipo2 : double -/totalbase : double -/totaliva : double -/totalapunte : double -numeroapunte : int -fecha_peticion : string * tiene 1 Articulos Empresas -id_Articulo : double -codigo : string -descripcion : string -precio_venta : double obtiene -precio_compra : double

-pvp : double -margen : double 1 1 -id_empresa : string -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -nif : string es sobre trabaja con 1 1..* * Margen Clientes -id_margen : int -/margen : double -fecha : string -nom_cliente : string -nom_asociacion : string -nom_articulo : string -margen_aplicado : double -total_linea : double -id_cliente : int -nombre : string -nif : string -telefono : string -fax : string -email : string -DiaPago1 : int -DiaPago2 : int -DiaPago3 : int -Tarifa_PV : int -NumCopFac : int -Observaciones : string

* genera * referencia * 1 * * tiene es basado se divide 1 1 0..* Albaranes -id_albaran : int -fecha_entrada : string -/estado : string -ccc : string -direccion : string -poblacin : string -provincia : string -apunte : int -sucursal : string -peticion : string -tipo_albaran : string -bultos : int -gen_apunte : bool -numero_apunte : int -/tipo_iva1 : double -/tipo_iva2 : double -/tipo_iva3 : double -/base1 : double -/base2 : double -/base3 : double -observaciones : string Asociaciones 1 1 Lineas_albaran contiene

1 * -id_linea_albaran : int -desc_art : string -cantidad : int -precio : double -iva : int -/total_base : double -/total_iva : double -/total_detalle : double -estado : string -plus : int Pgina 92 -id_asociacion : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -codigo : string -sucursal : string PFC: Gestin de una Farmacia Restricciones de Integridad: Un apunte contiene como mximo dos albaranes. Estos albaranes han de ser de diferente tipo pero misma asociacin y peticin. Existe un margen para cada lnea de albarn. La clave de albaranes es id_albaran. La clave de lneas de albarn es id_linea_Albaran La clave de apuntes es id_apunte La clave de margen es id_margen. Informacin derivada de Lneas Albarn: o total_Base = cantidad* precio o Total_iva= cantidad*precio *iva o Total_detalle=total_Base+total_iva Informacin derivada de albaranes o Estado: si el albarn tiene apunte -> X si el albarn tiene factura-> F

si el albarn no tiene apunte ni factura-> A o Tipo_iva1= la suma de total IVA de las lneas de albarn que su IVA es 4 o Tipo_iva2= la suma de total IVA de las lneas de albarn que su IVA es 7 o Tipo_iva3= la suma de total IVA de las lneas de albarn que su IVA es 16 o Base_iva1= la suma de total base de las lneas de albarn que su IVA es 4 o Base _iva2= la suma de total base de las lneas de albarn que su IVA es 7 o Base _iva3= la suma de total base de las lneas de albarn que su IVA es 16 Informacin derivada de margen o Margen=margen_aplicado*total_linea Albaranes: Representa a los albaranes que generaran las diferentes empresas a los cliente sasociaciones. El campo estado solo puede tomar los valores de A: Albaranado, P:Apunte generado, F:Facturado. El atributo numero_apunte debe coincidir con el numero de apunte que ha generado. Pgina 93 Lneas albarn: Representa las lneas de albarn que forman un albarn. Apuntes: Representa los apuntes que se han generado agrupando los albaranes. Un apunte tendr relacionado albaranes donde el numero de apunte, peticin, el cliente-asociacin sea el mismo pero el tipo de albarn es diferente. Margen: Representa en una fecha concreta el margen que ha obtenido una empresa de los artculos que se han albaranado a un cliente-asociacin. Pgina 94 PFC: Gestin de una Farmacia Modelo Facturacin Modelo Facturacin Clientes son recibidas 1 Facturas -id_factura : int -fecha_entrada : string -estado : string -/total_bruto : double -observaciones : string *

* Empresas son creadas 1 -id_cliente : int -nombre : string -nif : string -telefono : string -fax : string -email : string -DiaPago1 : int -DiaPago2 : int -DiaPago3 : int -Tarifa_PV : int -NumCopFac : int -Observaciones : string 1 realiza contiene 1 -id_empresa : string -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -nif : string * Detalle_facturas -id_detalle_facturas : int -descart : string -cantidad : int -precio : double -/total_detalle : double Articulos es sobre *

1 * * -id_Articulo : double -codigo : string -descripcion : string -precio_venta : double -precio_compra : double -pvp : double -margen : double * tiene Albaranes se basa 1 Tipos_iva -id_tipo_iva : double -descripcion : string -iva : int 1 -id_albaran : int -fecha_entrada : string -/estado : string -ccc : st ring -direccion : string -poblacin : string -provincia : string -apunte : int -sucursal : string -peticion : string -tipo_albaran : string -bultos : int -gen_apunte : bool -numero_apunte : int -/tipo_iva1 : double -/tipo_iva2 : double -/tipo_iva3 : double -/base1 : double -/base2 : double -/base3 : double -observaciones : string

Pgina 95 Restricciones de Integridad: La clave de facturas es id_factura. La clave de detalle de factura es id_detalle_factura Informacin derivada de detalle de factura: o Total_detalle=precio*cantidad* Tipos_iva.iva/100 Informacin derivada de facturas: o Total bruta = la suma de total detalle de las lneas de factura Facturas: Representa las facturas generadas a partir de los albaranes creados. Detalle Facturas: Representa las lneas de una factura. La lnea de una factura es equivalente a la lnea de un albarn. Pgina 96 PFC: Gestin de una Farmacia 3.4 Modelo de comportamiento En este apartado realizamos el modelo de comportamiento completo del sistema. El modelo se formula mediante los diagramas de secuencia de los casos de uso del sistema junto Los diagramas de secuencia se elaboran partiendo de los casos de uso y ayudando tanto a mostrar los acontecimientos que ocurren en el sistema como a identificar las operaciones del sistema. Por esto hemos elaborado un diagrama de secuencia por cada uno de los casos de uso presentado en el apartado 3.2 junto con los contratos de las operaciones. [ES:E] 3.4.1 Diagramas de secuencia del sistema En este apartado definiremos la interaccin entre las clases de objetos para responder a un evento externo. Crearemos un diagrama de secuencia del sistema por cada uno de los casos de uso. 1. Registro de usuarios Sistema ::Administrador AltaRegistroUsuarios(nombre,contrasea,idioma): :Boolean

Pgina 97 2. Modificar usuarios Sistema ::Administrador ModifRegistroUsuario(id_usuario,nombre,contrasea,idioma): :Boolean * * AltaUsuarioGrupo(id_usuario,id_grupo): BajaUsuarioGrupo(id_usuario,id_grupo): 3. Baja Usuarios Sistema ::Administrador BajaUsuario(id_usuario): :Boolean Pgina 98 PFC: Gestin de una Farmacia 4. Introducir parmetros del sistema (constantes) Sistema ::Administrador AltaParametro(nombre,valor,descripcion): :Boolean 5. Modificar parmetros del sistema (constantes) Sistema ::Administrador ModifParametro(id_constante,nombre,valor,descripcion): :Boolean 6. Autentificacin de usuarios Sistema

::Usuario Autentificarse(nombre,contrasea): :Boolean Pgina 99 7. Registro empresa de trabajo Sistema ::Administrativo AltaEmpresa(nombre,tipo_via,calle,numero,restodir,ciudad,codigo_postal,provincia,telf ,fax,nif): :Boolean 8. Registro clientes Sistema ::Administrativo AltaClientes(nombre,id_empresa,nif,telf,fax,email,forma_pago,doc_pago,dia_pago1,dia _pago2,dia_pago3,tarifa_pv,num_cop_fac,tipo_iva): :Boolean 9. Registro asociaciones Sistema ::Administrativo AltaAsociacion(nombre,id_empresa,id_cliente,id_tipo_via,calle,numero,restodir,ciudad, codigo_postal,provincia,telf,fax,codigo,sucursal): :Boolean 10. Registro artculos Sistema ::Administrativo AltaArticulo(codigo,desc,precio_venta,id_tipo_iva,precio_compra,pvp,empresa,margen ): :Boolean Pgina 100 PFC: Gestin de una Farmacia 11. Registro stock Sistema ::Administrativo AltaStock(id_articulo,existencia,estock_minimo): :Boolean 12. Registro albaranes

Sistema ::Administrativo AltaAlbaran(empresa,cliente,fecha,tipo,peticion,asociacion,ccc,direccin,poblacion,pro vincia,apunte,sucursal,bultos,observaciones): :Boolean * AltaLineas(id_articulo,descrip, cantidad,precio, iva,plus): :Boolean 13. Registro apuntes Sistema ::Administrativo AltaApunte(empresa,tipo1,tipo2,peticion,fecha_Apunte,sucursal,ccc,totaltipo1,totaltipo 2,totalbase,totaliva,totalapunte,asociacion,fecha_peticion): :Boolean Pgina 101 14. Registro facturas Sistema ::Administrativo AltaFactura(empresa,cliente,fecha,estado,total,observaciones): :Boolean * AltaLineasFacturas(id_articulo,cantidad,precio,id_albaran,id_tipo_iva,empresa,total): :Boolean 15. Aviso de stock mnimo Sistema ::Administrativo AvisoStockMinimo(): :ListaArticulos 16. Actualizacin de los artculos Sistema ::Administrativo Actualizar_Articulos(fichero): :ListadoIncidencias Pgina 102

PFC: Gestin de una Farmacia 17. Baja empresa de trabajo Baja empresa de trabajo Sistema ::Administrativo BajaEmpresa(id_empresa): :Boolean 18. Baja clientes Baja clientes Sistema ::Administrativo BajaClientes(id_cliente): :Boolean 19. Baja asociaciones Baja asociaciones Sistema ::Administrativo BajaAsociaciones(id_asociacion): :Boolean Pgina 103 20. Baja artculos Baja artculos Sistema ::Administrativo BajaArticulos(id_articulos): :Boolean 21. Baja stock Baja stock Sistema ::Administrativo BajaStock(id_stock): :Boolean 22. Baja albaranes

Baja albaranes Sistema ::Administrativo BajaAlbaranes(id_albaran): :Boolean Pgina 104 PFC: Gestin de una Farmacia 23. Baja apuntes Baja apuntes Sistema ::Administrativo BajaApuntes(id_apunte): :Boolean 24. Baja facturas Baja facturas Sistema ::Administrativo BajaFacturas(id_factura): :Boolean 25. Obtener empresas de trabajo Sistema ::Administrativo/Explotador ObtenerEmpresas(): :ListaEmpresas Pgina 105 26. Obtener clientes Sistema ::Administrativo/Explotador ObtenerClientes(): :ListaClientes 27. Obtener asociaciones Sistema ::Administrativo/Explotador ObtenerAsociaciones(): :ListaAsociaciones

28. Obtener artculos Sistema ::Administrativo/Explotador ObtenerArticulos(): :ListaArticulos Pgina 106 PFC: Gestin de una Farmacia 29. Obtener stock Sistema ::Administrativo/Explotador ObtenerStock(): :ListaStock 30. Obtener albaranes Obtener albaranes Sistema ::Administrativo/Explotador ObtenerAlbaranes(): :ListaAlbaranes 31. Obtener Apuntes Sistema ::Administrativo/Explotador ObteneApuntes(): :ListaApuntes Pgina 107 32. Obtener facturas Sistema ::Administrativo/Explotador ObtenerFacturas(): :ListaFacturas 33. Obtener consumo Sistema ::Administrativo/Explotador ObtenerConsumo(): :ListaConsumos 34. Obtener Margen

Sistema ::Administrativo/Explotador ObtenerMargen(): :ListaMargen Pgina 108 PFC: Gestin de una Farmacia 35. Obtener estado albaranes Sistema ::Administrativo/Explotador ObtenerEstadoAlbaranes(): :ListaAlbaranes 36. Envo facturacin Sistema ::Explotador EnvioFacturacion(fichero,fecha_inicial,fecha_final): :ListadoIncidencias 37. Listado Sistema ::Explotador Listado(ListadoSeleccionado): :Listado Pgina 109 3.4.2 Contratos de las operaciones del sistema En este apartado definiremos lo que hacen las operaciones de las clases de objetos. Hemos agrupado los contratos segn los casos de usos en los que se hacen servir. 1. Registro de usuarios Operacin: AltaRegistroUsuarios(nombre:string,contrasea:string,idioma:string) Clase retorno: Booleano Semntica: Dar de alta un usuario

Precondiciones: Postcondiciones: 1. Si existe un usuario con el mismo nombre, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de Usuario 2. Modificar usuarios Operacin: ModifRegistroUsuarios(id_usuario:integer,nombre:string,contrasea :string,idioma:string) Clase retorno: Booleano Semntica: Modificar la informacin de un usuario Precondiciones: Postcondiciones: 1. Si existe un usuario con el mismo nombre, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se modifica el objeto Usuario con identificar id_usuario Pgina 110 PFC: Gestin de una Farmacia Operacin: AltaUsuarioGrupo(id_usuario:integer,id_grupo:integer) Clase retorno: Booleano Semntica: Dar de alta un usuario en un grupo Precondiciones: Postcondiciones: Se crea una nueva ocurrencia de la asociacin entre usuario y grupo

Operacin: BajaUsuarioGrupo(id_usuario:integer,id_grupo:integer) Clase retorno: Booleano Semntica: Dar de baja un usuario en un grupo Precondiciones: Postcondiciones: Se elimina la ocurrencia de la asociacin entre usuario y grupo seleccionados. 3. Baja usuarios Operacin: BajaUsuarios(id_usuario:integer) Clase retorno: Semntica: Eliminar el usuario Precondiciones: Postcondiciones: Se elimina el objeto usuario con identificador id_usuario. 4. Introducir parmetros del sistema(constantes) Operacin: AltaParametro(nombre:string,valor:string,descripcion:string) Clase retorno: Booleano Semntica: Dar de alta un nuevo parmetro en el sistema Precondiciones:

Postcondiciones: Se crea un nuevo objeto de constantes. El sistema tiene en cuenta el nuevo parmetro Pgina 111 5. Actualizar parmetros del sistema(constantes) Operacin: ModifParametro(id_constante:integer,nombre:string,valor:string,des cripcion:string) Clase retorno: Booleano Semntica: Modificar los parmetros del sistema Precondicione s: Postcondiciones: Se actualiza el objeto constante. El sistema tiene en cuenta la actualizacin 6. Autentificacin de usuarios Operacin: Autentificarse(nombre:string,contrasea:string) Clase retorno: Booleano Semntica: Comprueba si el usuario y password estn dados de alta en el sistema y tienen acceso a l. Precondiciones: Postcondiciones: 1. Si no existe un usuario con el nombre y password introducidos, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de Usuario

Pgina 112 PFC: Gestin de una Farmacia 7. Registro empresa de trabajo Operacin: AltaEmpresa(nombre:string,tipo_via:integer,calle:string,numero:stri ng,restodir:string,ciudad:string,codigo_postal:string,provincia:intege r, telf:string,fax:string,nif:string) Clase retorno: Booleano Semntica: Dar de alta una empresa de trabajo Precondiciones: Postcondiciones: 1. Si no introduce el nombre, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de Empresa b. Se crea una ocurrencia de las asociaciones entre empresa y tipo va, si ha introducido el tipo de va c. Se crea una ocurrencia de las asociaciones entre empresa y provincia si ha introducido la provincia. 8. Registro Clientes Operacin: AltaClientes(nombre:string,id_empresa:integer,nif:string,telf:string,f ax:string,email:string,forma_pago:integer,doc_pago:integer,dia_pag o1:integer,dia_pago2:integer,dia_pago3:integer,tarifa_pv:integer,nu m_cop_fac:integer,tipo_iva:integer) Clase retorno: Booleano Semntica: Dar de alta un cliente Precondiciones: Postcondiciones:

1. Si no introduce el nombre ni la empresa, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de Empresa b. Se crea una ocurrencia de las asociaciones entre cliente y empresa Pgina 113 c. Se crea una ocurrencia de las asociaciones entre cliente y forma de pago si ha introducido la forma de pago. d. Se crea una ocurrencia de las asociaciones entre cliente y doc de pago si ha introducido el doc de pago. e. Se crea una ocurrencia de las asociaciones entre cliente y tipo IVA si ha introducido el tipo IVA 9. Registro Asociaciones Operacin: AltaAsociacion(nombre:string,id_empresa:integer,id_cliente:integer ,tipo_via:integer,calle:string,numero:string,restodir:string,ciudad:stri ng,codigo_postal:string,provincia:integer, telf:string, fax:string, nif:string) Clase retorno: Booleano Semntica: Dar de alta una empresa de trabajo Precondiciones: Postcondiciones: 1. Si no introduce el nombre, la empresa o el cliente, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de Asociacin b. Se crea una ocurrencia de las asociaciones entre asociacin y empresa c. Se crea una ocurrencia de las asociaciones entre

asociacin y cliente d. Se crea una ocurrencia de las asociaciones entre asociacin y tipos_via si ha introducido el tipo va. e. Se crea una ocurrencia de las asociaciones entre asociacin y provincia, si ha introducido la provincia Pgina 114 PFC: Gestin de una Farmacia 10. Registro Artculos Operacin: AltaArticulo(cdigo:string,desc:string,precio_venta:integer,id_tipo_ iva:integer,precio_compra:integer,pvp:integer,empresa:integer,marg en:integer) Clase retorno: Booleano Semntica: Dar de alta un articulo Precondiciones: Postcondiciones: 1. Si no introduce valor en cualquiera de los parmetros, entonces operacin invalida y devuel ve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de Artculos b. Se crea una ocurrencia de las asociaciones entre artculos y empresa c. Se crea una ocurrencia de las asociaciones entre artculos y tipo IVA 11. Registro stock Operacin: AltaStock (id_articulo:integer,

existencia:integer, estock_minimo:integer) Clase retorno: Booleano Semntica: Dar de alta el stock de un artculo Precondiciones: Postcondiciones: 1. Si no introduce valor en cualquiera de los parmetros, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de Stock b. Se crea una ocurrencia de las asociaciones entre artculos y stock Pgina 115 12. Registro albaranes Operacin: AltaAlbaran(empresa:integer, cliente:integer, fecha:date, tipo:string, peticion:string, asociacion:string, ccc:string, direccin: :string, poblacion:string, provincia:string, apunte:string, sucursal:string, bultos:string, observaciones:string) Clase retorno: Booleano Semntica: Dar de alta un albarn Precondiciones: Postcondiciones: 1. Si no introduce valor en cualquiera de los parmetros exceptuando bultos y observaciones, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de Albarn

b. Se crea una ocurrencia de las asociaciones entre albarn y empresa. c. Se crea una ocurrencia de las asociaciones entre albarn y cliente. d. Se crea una ocurrencia de las asociaciones entre albarn y asociacin. Operacin: AltaLineas(id_articulo:integer, descrip:string, cantidad:integer, precio:double ,iva:integer, plus:integer) Clase retorno: Booleano Semntica: Dar de alta las lneas de un albarn Precondiciones: Postcondi ciones: 1. Si no introduce valor en artculo o cantidad, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de lneas de albarn b. Se crea una ocurrencia de las asociaciones entre artculos y lneas de albarn Pgina 116 PFC: Gestin de una Farmacia 13. Registro apuntes Operacin: AltaApunte(empresa:integer, tipo1:integer, tipo2:

integer, peticin:string, fecha_Apunte: fecha, sucursal:string, ccc:string, totaltipo1:double, totaltipo2:double, totaliva:double, totalapunte:double, totalbase:double, asociacin:integer, fecha_peticion:date) Clase retorno: Booleano Semntica: Dar de alta un apunte Precondiciones: Postcondiciones: 1. Si no introduce valor en cualquiera de los parmetros, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de apunte b. Se crea una ocurrencia de las asociaciones entre apunte y empresa. c. Se crea una ocurrencia de las asociaciones entre apunte y asociacin. d. Se crea una o dos ocurrencias de las asociaciones entre apunte y albarn, se modifica el estado de los albaranes. Pgina 117 14. Registro facturas Operacin: AltaFactura(empresa:integer, cliente:integer,

fecha:date, estado:string, total:double, observaciones:string) Clase retorno: Booleano Semntica: Dar de alta una factura Precondiciones: Postcondiciones: 1. Si no introduce valor en cualquiera de los parmetros, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de facturas b. Se crea una ocurrencia de las asociaciones entre factura y empresa. c. Se crea una ocurrencia de las asociaciones entre factura y cliente. Clase re torno: AltaLineasFacturas(id_articulo: integer, cantidad:integer, precio:double, id_albaran:integer, tipo_iva:integer, empresa:integer, total:double) Booleano Semntica: Dar de alta las lneas de una factura Operacin: Precondiciones: Postcondiciones: 1. Si no introduce valor en cualquiera de los parmetros, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se crea un objeto de lneas de factura b. Se crea una ocurrencia de las asociaciones entre artculos y lneas de factura c. Se crea una ocurrencia de las asociaciones entre

albarn y lneas de factura, se modifica el estado del albarn relacionado. d. Se crea una ocurrencia de las asociaciones entre empresa y lneas de factura Pgina 118 PFC: Gestin de una Farmacia 15. Aviso de stock mnimo Operacin: AvisoStockMinimo() Clase retorno: ListaArticulos Semntica: Muestra los artculos que tiene un stock inferior al stock mnimo deseado Precondiciones: Postcondiciones: 16. 1. Muestra una lista de artculos. Actualizacin de los artculos Operacin: Actualizar_Articulos(fichero:file) Clase retorno: ListadoInicidencias Semntica: Actualiza, aade o elimina los artculos segn el fichero pasado como parmetro. Precondiciones: Postcondiciones:

1. Si no existe el fichero pasado como parmetro, entonces operacin invalida y devuelve falso. 2. En caso contrario, operacin valida y devuelve cierto. a. Se actualiza los valores del objeto artculo si ya existe. b. Si no existe el artculo se crea el nuevo objeto artculo. c. Si hay un objeto artculo que no est en el fichero se elimina. 17. Baja empresa de trabajo Operacin: BajaEmpresa(id_empresa:integer) Clase retorno: Semntica: Eliminar la empresa Precondiciones: Postcon diciones: Se elimina el objeto empresa con identificador id_empresa. Pgina 119 18. Baja clientes Operacin: BajaClientes (id_cliente:integer) Clase retorno: Semntica: Eliminar el cliente Precondiciones: Postcondiciones: 19. Se elimina el objeto cliente con identificador id_cliente.

Baja asociaciones Operacin: BajaAsociaciones (id_asociacion:integer) Clase retorno: Semntica: Eliminar la asociacin Precondiciones: Postcondiciones: 20. Se elimina el objeto asociacin con identificador id_asociacion. Baja artculos Operacin: BajaArticulos (id_articulo:integer) Clase retorno: Semntica: Eliminar el artculo Precondiciones: Postcondiciones: 21. Se elimina el objeto artculo con identificador id_articulo. Baja stock Operacin: BajaStock(id_stock:integer) Clase retorno: Semntica: Eliminar el stock Precondiciones: Postcondiciones:

Se elimina el objeto stock con identificador id_stock. Pgina 120 PFC: Gestin de una Farmacia 22. Baja albaranes Operacin: BajaAlbaranes(id_albaran:integer) Clase retorno: Semntica: Eliminar el albarn Precondiciones: Postcondiciones: 23. Se elimina el objeto albarn con identificador id_albaran. Baja apuntes Operacin: BajaApuntes (id_apunte:integer) Clase retorno: Semntica: Eliminar el apunte Precondiciones: Postcondiciones: Se elimina el objeto apunte con identificador id_apunte y se cambia el estado de los albaranes asociados al apunte. 24. Baja facturas Operacin: BajaFacturas (id_factura:integer)

Clase retorno: Semntica: Eliminar la factura Precondiciones: Postcondiciones: Se elimina el objeto factura con identificador id_factura y se cambia el estado de los albaranes asociados a la factura. 25. Obtener empresa de trabaj o Operacin: ObtenerEmpresas() Clase retorno: ListaEmpresas Semntica: Muestra las empresas dadas de alta Precondiciones: Postcondiciones: 1. Muestra una lista de empresas. Pgina 121 26. Obtener clientes Operacin: ObtenerClientes() Clase retorno: ListaClientes Semntica:

Muestra los clientes dados de alta Precondiciones: 1. Muestra una lista de clientes. Postcondiciones: 27. Obtener asociaciones Operacin: ObtenerAsociaciones() Clase retorno: ListaAsociaciones Semntica: Muestra las asociaciones dadas de alta Precondiciones: 1. Muestra una lista de asociaciones. Postcondiciones: 28. Obtener artculos Operacin: ObtenerArticulos() Clase retorno: ListaArticulos Semntica: Muestra los artculos dados de alta Precondiciones: Postcondiciones: 29. 1. Muestra una lista de artculos.

Obtener stock Operacin: ObtenerStock () Clase retorno: ListaStock Semntica: Muestra los artculos y su stock asociado dados de alta Precondiciones: Postcondiciones: 1. Muestra una lista de los artculos con su stock Pgina 122 PFC: Gestin de una Farmacia 30. Obtener albaranes Operacin: ObtenerAlbaranes () Clase retorno: ListaAlbaranes Semntica: Muestra los albaranes dados de alta Precondiciones: 1. Muestra una lista de los albaranes Postcondiciones: 31. Obtener Apuntes Operacin:

ObtenerApuntes () Clase retorno: ListaApuntes Semntica: Muestra los apuntes dados de alta Precondiciones: 1. Muestra una lista de los apuntes Postcondiciones: 32. Obtener facturas Operacin: ObtenerFacturas() Clase retorno: ListaFacturas Semntica: Muestra las facturas dadas de alta Precondiciones: Postcondiciones: 33. 1. Muestra una lista de las fa cturas Obtener consumo Operacin: ObtenerConsumo() Clase retorno: ListaConsumo Semntica:

Muestra los artculos con su consumo Precondiciones: Postcondiciones: 1. Muestra una lista de los artculos y su consumo Pgina 123 34. Obtener Margen Operacin: ObtenerMargen() Clase retorno: ListaMargen Semntica: Muestra el margen de los artculos que han sido albaranados Precondiciones: 1. Muestra una lista del margen de los artculos albaranados Postcondiciones: 35. Obtener estado albaranes Operacin: ObtenerEstadoAlbaranes() Clase retorno: ListaAlbaranes Semntica: Muestra el estado de los albaranes Precondiciones: 1. Muestra una lista del estado de los albaranes

Postcondiciones: 36. Envo facturacin Operacin: EnvioFacturacion(fichero:string,fecha_inicio:date, fecha_fin:date) Clase retorno: ListadoIncidencias Semntica: Genera un fichero con la facturacin entre las fechas introducidas Precondiciones: Postcondiciones: 1. Genera un fichero con la facturacin y devuelve un listado con incidencias que se han producido en el proceso. 37. Generacin de listados Operacin: Listado(ListadoSeleccionado:string) Clase retorno: Listado Semntica: Genera el listado seleccionado Precondiciones: Postcondiciones: 1. Genera el listado seleccionado por el usuario. Pgina 124 PFC: Gestin de una Farmacia 4. Diseo

4.1 Introduccin En este captulo se explicar el trabajo realizado con el diseo del sistema. El diseo de software es la actividad de aplicar diferentes tcnicas y principios con el propsito de definir un sistema con el suficiente detalle para permitir su construccin fsica o implementacin. En definitiva definir como lo ha de hacer el sistema para llegar al objetivo. [ES:D1] La diferenci a principal entre la especificacin y el diseo es que la especificacin no tiene en cuenta las propiedades a conseguir como la cambiabilidad, portabilidad, interoperabilidad, eficiencia, etc ni la tecnologa que se utilizar para implementar el sistema. En cambio, durante el diseo se puede tener que cambiar los modelos para obtener las propiedades deseadas. [ES:D1] Pgina 125 4.2 Plataforma fsica En este apartado definiremos la plataforma fsica necesaria para nuestro proyecto, es decir los requerimientos hardware, equipos, dispositivos y medios necesarios mediante los que el sistema de informacin puede funcionar. Aqu tambin incluiremos los que permiten las comunicaciones y los enlaces de red. Estos recursos son ordenadores, monitores, impresoras, disquetes, componentes de almacenamiento, papel de impresin, cableado de red, Nuestro proyecto est basado en una empresa real mostraremos la plataforma fsica de un ejemplo real y luego generalizaremos para otro tipos de empresa. En nuestro caso, consiste en dos empresas de trabajo situadas en diferente localizacin. El explotador de datos desea ver tanto los datos de una empresa como de otra independientemente donde este. La introduccin de los datos se efectuar en los dos lugares. Nuestra plataforma consistir en: o 1 Servidor de Base de datos. o 2 Servidores administrador(1 en cada localizacin), nos proporciona la red de rea local y la salida a internet o 4 pcs de sobremesa en una empresa y 2 pcs de sobremesa en la otra empresa, mas 1 porttil que se puede conectar en cualquier empresa, todos con conectividad, es decir, tarjetas de red. o Impresoras para imprimir listados. Pgina 126

PFC: Gestin de una Farmacia Los pcs de cada empresa estarn conectados mediante una LAN, en una empresa es donde residir el servidor de base de datos. Las dos em presas tienen salida a internet, mediante una WAN conectaremos las dos LAN situadas en diferentes localizaciones, as tendremos acceso al servidor de base de datos desde empresa donde no reside el servidor de base de datos. La especificacin de cada componente es una bsica, para nuestro proyecto no necesitamos servidores ni ordenadores de gran potencia. En el siguiente grfico se refleja en lo que consiste nuestra plataforma: Pgina 127 De forma genrica obtendremos el siguiente grfico: LAN o WAN o Internet Pgina 128 PFC: Gestin de una Farmacia 4.3 Arquitectura del sistema software La arquitectura del software es una descripcin de los subsistemas y componentes de un sistema software y las relaciones entre los mismos. Es el resultado de realizar el diseo arquitectnico del software consiguiendo as que se cumplan, en mayor o menor grado, las propiedades que ha de tener una arquitectura. [ES:D1] Para determinar la arquitectura tenemos dos vas complementarias: Dados los requerimientos del sistema debidamente especificados, aplicar un conjunto de pasos genricos de forma ordenada y sistemtica definidos en un mtodo. Es un proceso muy guiado e independiente del problema. [ES:D1] Dados los requerimientos debidamente especificados, identificar los problemas a resolver, seleccionar soluciones genricas a problemas concretos (patrones) y adaptar su aplicacin al problema concreto. Es un sistema poco guiado y ms contextualizado al problema. [ES:D1] Mtodo Arquitectura

Especificacin Seleccin Patron Patrones de diseo Pgina 129 Adaptacin En este apartado definiremos la arquitectura seleccionada, para ello hemos teniendo en cuenta los requerimientos no funcionales y los recursos tecnolgicos disponibles. Nuestro sistema est diseado para correr en mltiples mquina s (multiplataforma) y la forma de implementarla es mediante una arquitectura de dos capas o cliente/servidor simple y orientacin a objetos dentro de cada capa. Un sistema de dos capas consiste en situar un trozo de la aplicacin en la plataforma del usuario y el resto del sistema en el servidor. Representacin de una arquitectura de dos capas: cliente Internet o algn otro Middleware cliente cliente Pgina 130 PFC: Gestin de una Farmacia [MC/S]Se clasifican los sistemas cliente/servidor de acuerdo al nivel de abstraccin del servicio que se ofrece. Se distinguen tres componentes bsicos de software: Interaccin con el usuario Lgica de la aplicacin -

Repositorio de datos En este tipo de arquitectura la interfaz del usuario (interaccin con el usuario) y la lgica del negocio (lgica de la aplicacin) son puestas en la plataforma del cliente. La base de datos y las asociaciones lgicas (Repositorio de datos) son puestas en el servidor el cual es llamado usualmente Servidor de Base de datos. [MC/S] En nuestro caso el servidor es un servidor de base de datos y la interaccin entre el cliente y el servidor se hace en forma de transacciones: El cliente realiza una peticin a la base de datos y recibe una respuesta de aquella. El servidor es responsable de mantener la base de datos. Representacin para una arquitectura cliente/servidor para aplicaciones de base de datos: [MC/S] Servicios de presentacin Lgica de aplicacin Lgica de base de datos Software de comunicaciones Peticin Respuesta Lgica de base de datos Software de comunicaciones Sistema gestor de base de datos Sistema operativo cliente Sistema operativo servidor Plataforma hardware Plataforma hardware

Estacin de trabajo cliente Servidor Pgina 131 Ventajas sobre esta arquitectura [MC/S]: Es simple de usar para transportar informacin entre las mquinas cliente y el servidor de base de datos. Utilizacin de componentes, tanto de hardware como de software, de varios fabricantes, esto favorece la flexibilidad en la implantacin y actualizacin de soluciones Facilita la integracin entre sistemas diferentes y compartir informacin, as podemos integrar pcs con sistemas medianos y grandes, sin que todas las maquinas tengan que utilizar el mismo sistema operacional. Inconvenientes sobre esta arquitectura [MC/S]: El principal problema de esta arquitectura es que requiere una computadora potente del lado del cliente dado que en ella radica la lgica del negocio (lo que le obliga a realizar muchos procesos). A este tipo de sistemas es ms complicado dar mantenimiento debido a que la aplicacin se encuentra distribuida en cada computadora que trabaja como cliente. Pgina 132 PFC: Gestin de una Farmacia 4.4 Diseo externo En este apartado se explica brevemente el criterio seguido para el diseo de la interfaz de usuario de nuestro sistema de informacin. Se pretende realizar una interfaz sencilla, clara y de fcil manejo. Para ello, las pantallas tendrn una estructura y apariencias comunes. Nuestro sistema de informacin tendr un men segn el grupo al que pertenezca nuestro usuario, saldrn unas opciones u otras. Todas las pantallas saldrn centradas a la pantalla del usuario y nicamente tendr activa el usuario una nica pantalla. El sistema mostrar la informacin y opciones en el idioma del usuario haciendo ms amigable la interficie con el usuario. 4.4.1 Diseo de pantallas Nuestro sistema estar formado por un men superior y una serie de pantallas que se mostraran en el centro de la pantalla. En la parte inferior el usuario siempre tendr visible que u

suario est conectado al sistema y cul es la empresa de trabajo. Pgina 133 El sistema mantendr una combinacin de colores constantes en las diferentes pantallas. Utilizaremos los siguientes colores: o Fondo: gris o Etiquetas: el negro si el campo no es obligatorio el rojo si el campo es obligatorio o Campos de texto: El fondo blanco si el campo de texto es modificable El fondo gris si el campo de texto no es modificable El texto en negro El sistema utilizar iconos identificativos para los procesos de alta, nuevo, filtro que siempre sern los mismos. El sistema tendr bsicamente tres tipos de pantallas: lista, ficha y filtros. Pantalla lista Desde este tipo de pantallas accederemos al resto de pantallas ficha y filtros. Para cada objeto se ha creado una pantalla lista que se accede desde el men. Estas pantallas listas estn formadas por un grid que muestra en cada lnea un registro de la base de datos y una serie de columnas que muestra los campos ms importantes del registro. En la parte superior a la izquierda se muestran una serie de iconos de edicin que sirven para acceder a la pantalla ficha, para eliminar el registro activo y para acceder a la pantalla filtros. Pgina 134 PFC: Gestin de una Farmacia En la parte superior a la derecha se muestran una serie de iconos de seleccin que sirven para cuando son accedidos estas listas desde una pantalla ficha y se quiere seleccionar un registro. En la parte inferior de la pantalla se mostrar la siguiente informacin un recuadro donde muestra el nmero de registros que se muestran en el datagrid, otro recuadro que muestra el nmero de registros totales, otro recuadro donde indica el filtro que se est aplicando a la lista. Un ejemplo de lista es el siguiente: Iconos de edicin Iconos de seleccin

Datagrid: lista de registros N registros datagrid N registros totales Filtro aplicado Pgina 135 Pantalla ficha Desde este tipo de pantallas accederemos a los datos para consultar, modificar o aadir los registros del sistema. Bsicamente estn formadas como mnimo por una pestaa donde contendr las etiquetas y los cuadros de texto donde se mostrar la informacin, y dos botones Aceptar/Aplicar y Cancelar. Desde la lista con el botn de nuevo se mostrar la misma ficha que si accedemos con el botn de propiedades o con doble click a un registro de la lista. La diferencia entre un caso u otro es que cuando es nuevo no se rellenan los campos y los botones son aplicar y cancelar; cuando se entra en propiedades los campos estn rellenados con sus correspondientes valores y los botones son aceptar y cancelar. Un ejemplo de pantalla ficha entrando como nuevo: Pgina 136 PFC: Gestin de una Farmacia Un ejemplo de pantalla ficha entrando como propiedades: Como ya hemos comentado en la introduccin las etiquetas rojos significan que el usuario para salir de la pantalla guardando los cambios tiene que rellenar los campos que tienen sus etiquetas en rojo. Pgina 137 Pantalla filtros Desde este tipo de pantallas accederemos a los filtros que podemos aplicar a las listas para buscar informacin. Estas pantallas estn formadas por una pestaa que contiene las etiquetas con sus correspondientes campos para aplicar los filtros. Adems contienen tres botones: aceptar : Aplica el filtro a la lista y sale de la pantalla filtros

o o cancelar: Salir de la pantalla de filtros sin hacer ningn cambio o aplicar: Aplicar los filtros correspondientes sin salir de la pantalla de filtros. Un ejemplo de pantalla filtros y de cmo se modifica la lista es el siguiente: Pantalla filtros: Pantalla lista: Pgina 1 38 PFC: Gestin de una Farmacia 4.5 Diseo interno En este apartado se explica cmo se ha diseado internamente nuestro sistema software. En nuestro caso hemos aplicado una Arquitectura fsica no distribuida de un SI en una capa: o Capa 1: La interaccin con el usuario y la lgica del negocio (Cliente). La interaccin del usuario la hemos explicado en el diseo externo y ahora explicaremos la lgica de negocio. o Capa2: La base de datos y las asociaciones lgicas. (Servidor) Capa Presentacin Capa del Dominio Capa de Gestin de datos. Capa Presentacin: Responsable de la interaccin con el usuario Capa del Dominio: Responsable de la implementacin de las funcionalidades del sistema. Lgica que tienen el sistema Capa de Gestin de Datos: Responsable de la interaccin con el SGBD/F [ES:D1] Nosotros tenemos una arquitectura fsica de una capa, donde la capa de presentacin, la capa de dominio y la capa de Gestin de Datos estn entrelazadas en el cdigo. Propiedades de la arquitectura: o Implementacin de funcionalidades: poco portable, poco cambiable y poco reusable pero muy eficiente [ES:D1] Pgina 139

4.5.1 Diseo de la capa En este apartado se explica cmo se ha diseado internamente nuestra aplicacin. En nuestro caso el estilo arquitectnico es mediante llamada y retorno mediante la orientacin a objetos. Este estilo arquitectnico tiene las siguientes caractersticas: o Cada componente agrupa (encapsula) los datos y los mecanismos para manipularlos. [ES:D1] o La comunicacin entre componentes se realiza mediante la invocacin de los servicios ofertados por los componentes (operaciones). [ES:D1] o Facilita la cambiabilidad y reusabilidad. [ES:D1] Objeto Objeto +Op1() +Op2() +Op3() Objeto +Op4() Nuestro sistema cumple el siguiente formato est formado por diferentes objet os. Dichos objetos estn formados por atributos y operaciones, se comunican entre ellos mediante las operaciones. Hemos agrupado los objetos segn su funcionalidad y hemos creado dependencias unos de otro segn la necesidad y funcionalidad de ello. La agrupacin de estos objetos las llamaremos paquetes. Pgina 140 PFC: Gestin de una Farmacia Con lo que las agrupaciones que hacemos servir en nuestra aplicacin tienen objetos con las funcionalidades bsicas de: o Enlace entre la base de datos y la parte de presentacin. (Gestin de datos) o Objetos de generacin de interficies. (lgica de negocio) o Objetos con funciones que hace servir el motor de la aplicacin. (lgica de negocio) Los paquetes creados son: Proyecto_Inicio: En este paquete encontramos los objetos necesarios para iniciar la aplicacin, esto quiere decir, la creacin del men, la creacin de eventos y la llamada a los objetos correspondientes segn el evento en el men. Los objetos son los siguientes: MenuMdi: Inicia la aplicacin, hace la llamada del usuario

para entrar en la aplicacin y crea el men. GeneradorMenu: Obtiene el men a cargar mediante el fichero men.xml y segn el usuario crea unas opciones u otras y es el objeto que obtiene los eventos del click del men. Motor: Este paquete ha sido dividido en paquetes ms pequeos segn su funcionalidad. Estos paquetes son internos sobre funcionalidades que otros paquetes pueden utilizar. M_nucleo: Contiene una serie de objetos que se hacen servir como enlace entre los diferentes paquetes y con diferentes funcionalidades. o Aplicacin: objeto genrico que contiene a los otros objetos de este paquete y que nos sirve para obtener funcionalidades y pasarlas a los otros paquetes mediante una nica variable. o BD: Objeto que interacta con la base de datos. Pgina 141 o Contantes : Objeto que contiene una serie de atributos que son constantes en toda la aplicacin. o Control: Objeto de enlace entre aplicacin y los procesos. o Diccionario: objeto que contiene los atributos y operaciones del diccionario. o Globales: objeto que engloba los siguientes objetos: Globales bd : objeto con las Globales que provienen de base de datos. Globales fichero : objeto con las Globales que provienen del fichero inicio.ini Globales memoria : objeto con las globales que estn en memoria o Proceso: Objeto proceso que contiene los atributos de los procesos o Procesos bd: Objeto que obtiene los procesos dados de alta en la base de datos. o Seguridad : Objeto que tiene las operaciones para mantener la seguridad de la aplicacin para que un usuario pueda ejecutar un proceso determinado. M_utiles: Sirve para crear los botones que pueden generarse en la aplicacin en las interfaces con el usuario. M_varios: Otros objetos que se usan para crear funcionalidades especiales. o Cadena: operaciones que se hacen servir dada una cadena de caracteres. o Fichero: Operaciones que se hacen servir dado un fichero. M_xml: sirve para crear operaciones sobre un fichero de xml

y utilizar las funciones bsicas sobre las interfaces de xml Pgina 142 PFC: Gestin de una Farmacia que nos proporciona nuestro lenguaje de programacin (MSXML2.DOMDocument30, IXMLDOMElement) que son estndares de xml. M_xmlgen: nos sirve para crear la coleccin de nodos que tenemos en el fichero men xml que usamos para crear el men. Entidades: En este paquete obtenemos todos los objetos que hacen referencia a tablas de la base de datos. Estos objetos tienen los atributos que son los campos de base de datos y las operaciones para interactuar con la base de datos: seleccionar, insercin, eliminacin y modificacin. Formularios: En e ste paquete obtenemos todas las interfaces con el usuario. Estos paquetes tienen una dependencia entre ellos para que puedan llamarse los objetos entre ellos: Proyecto inicio usa: o Entidades o Formularios o M_nucleo o M_varios o M_xmlgen o M_xml Formularios o Entidades o M_nucleo o M_utiles Entidades Pgina 143 o M_nucleo M_nucleo o M_varios M_utiles o M_nucleo M_xmlgen o M_xml Esta dependencia se ve reflejada en el siguiente esquema: Gestin de datos uses uses

Entidades uses uses m_varios uses uses m_nucleo Formularios uses Proyecto_Inicio uses uses uses m_utiles uses m_xml uses m_xmlgen uses Lgica de negocio Bsicamente la gestin de datos consiste en el paquete Entidades que es el que tiene todos los objetos de la base de datos. La lgica de negocio tenemos el resto, es decir, la parte de Interficies, peticiones de usuario, mens, dilogos,.. En esta agrupacin tambin hemos incluido funcionalidades que tiene el motor de la aplicacin. Pgina 144 PFC: Gestin de una Farmacia En nuestro diseo de la aplicacin ya hemos comentado que el men se crea a partir de un fichero XML, tambin utilizamos otro fichero para cargar constantes que puede hacer servir la aplicacin y queremos modificar desde el fichero. El siguiente esquema muestra la implicacin de estos ficheros en nuestro sistema. menu.xml:

Proyecto_Inicio inicio.ini: Pgina 145 Usuario Menu_Usuario Diagrama de secuencias donde interactan todas las capas Ponemos un ejemplo de la interactuacin de las diferentes capas de nuestro sistema, para ello utilizaremos de ejemplo el Alta de un articulo, siendo equivalente para los dems. Capa Presentacin Controlador Capa de presentacin Alta Artculo Capa Dominio Controlador Capa de dominio Alta Artculo Capa Gestin de datos Controlador Capa de gestin de datos Alta Artculo Pgina 146 PFC: Gestin de una Farmacia Donde la Capa Presentacin es nuestros formularios: Gestin de la interaccin con el usuario Presentacin de la informacin Comunicacin con la capa dominio Donde la Capa de Dominio es nuestras entidades, que son los objetos que se mapean de la base de datos Controla la validez Cambia el estado del dominio Se entera de las consultas Obtiene los resultados Comunica respuestas En nuestro ejemplo tendramos como formulario: FormArticulosFicha y como Entidad: EntArticulo. En enlace con la base de datos lo realizamos mediante una clase llamada bd que recibe las

sentencias sql y las ejecuta haciendo la llamada al SGBD. Pgina 147 :FormAltaArticulo Registro artculos :AltaArticulo Aceptar dicEmpresa:Diccionario Ejecutar() a:Articulo dicTipoIva:Diccionario e:Empresa Comprobar que tiene valor en todos los atributos get(id_empresa) Se crea el artculo ti:Tipos_Iva creasocAmb(a) creasocAmb(e) get(id_tipo_iva) creasocAmb(a) creasocAmb(ti) put(id_articulo,a) Se aade a al diccionario Capa Presentacin Capa dominio Pgina 148 dicArticulo:Diccionario PFC: Gestin de una Farmacia :AltaArticulo :EntArticulo Ejecutar() BDInsert()

a:Articulo SGBD Comprobar que tiene valor en todos los atributos Se crea el artculo Insert into articulos(codigo,.) values(015482,...) Capa dominio Capa gestin de datos Pgina 149 4.5.2 Diagramas de Secuencia Los diagramas de secuencia tienen como objetivo mostrar las interacciones entre los objetos cuando se produce un acontecimiento externo, se llama a una operacin, se ejecuta un caso de uso, etc..[ES:D1] 1. Registro de usuarios :AltaRegistroUsuario dicUsu:D iccionario Ejecutar() get(nombre) Mensaje1 Comprobar que no existe ninguna persona con este nombre u:Usuario Se da de alta un usuario put(id_usuario,u) Se aade u al diccionario Pgina 150 PFC: Gestin de una Farmacia 2. Modificar usuarios :ModifRegistroUsuario dicUsu:Diccionario Ejecutar() get(nombre) Mensaje1

dicGrupo:Diccionario Comprobar que no existe ninguna persona con este nombre get(id_usuario) u:Usuario g:Grupo Se modifica el usuario get(id_grupo) creassocAmb(u) * creassocAmb(g) get(id_grupo) elimassocAmb(u) * 3. Baja usuarios :BajaUsuario dicUsu:Diccionario Ejecutar() get(id_usuario) Mensaje1 Comprobar que existe usuario con id_usuario u:Usuario Baja() remove(id_usuario) Boolean X Se elimina u del diccionario Pgina 151 4. Introducir parmetros del sistema(constantes) :AltaParametro dicParam:Diccionario Ejecutar() get(nombre) Mensaje1 Comprobar que no existe ninguna constante con este nombre

c:Constante Se da de alta una constante put(id_constante,c) Se aade c al diccionario 5. Actualizar parmetros del sistema(constantes) :ModifParametro dicParam:Diccionario Ejecutar() get(nombre) Mensaje1 get(id_constante) Comprobar que no existe ninguna constante con este nombre Se modifica la constante Pgina 152 c:Constante PFC: Gestin de una Farmacia 6. Autentificacin de usuarios :Autentificarse dicUsu:Diccionario Ejecutar() u:Usuario get(nombre) Mensaje1 password() Comprobar que no existe ninguna persona con este nombre =password 7. Registro empresa de trabajo :AltaEmpresa dicTipoVia:Diccionario Ejecutar()

e:Empresa dicProvincia:Diccionario tv:Tipos_via Comprobar que tiene valor nombre Se crea la empresa get(id_tipo_via) p:Provincia creasocAmb(e) creasocAmb(tv) get(id_prov incia) creasocAmb(e) creasocAmb(p) put(id_empresa,e) Se aade e al diccionario Pgina 153 dicUsu:Diccionario 8. Registro Clientes :AltaClientes dicEmpresa:Diccionario Ejecutar() c:Cliente dicFormaPago:Diccionario dicDocPago:Diccionario e:Empresa Comprobar que tiene valor nombre e id_empresa get(id_empresa) Se crea el cliente fp:FormaPago

creasocAmb(c) creasocAmb(e) dicTipoIva:Diccionario get(id_forma_pago) creasocAmb(c) Id_forma_pago not null dp:DocsPago creasocAmb(fp) get(id_doc_pago) ti:Tipo_Iva creasocAmb(c) Id_doc_pago not null creasocAmb(dp) get(id_tipo_iva) creasocAmb(c) Id_tipo_iva not null creasoAmb(ti) dicCliente:Diccionario put(id_empresa,e) Se aade e al diccionario 9. Registro Asociaciones :AltaAsociacion dicEmpresa:Diccionario Ejecutar() Comprobar que tiene valor nombre, id_empresa e id_cliente a:Asociacin dicCliente:Diccionario dicTipoVia:Diccionario e:Empresa

get(id_empresa) Se crea la asociacin c:Cliente creasocAmb(a) creasocAmb(e) dicProvincia:Diccionario get(id_cliente) creasocAmb(a) tv:Tipo_Via creasocAmb(c) get(id_tipo_via) p:Provincia creasocAmb(a) Id_tipo_iva not null creasocAmb(tv) get(id_provincia) creasocAmb(a) Id_provincia not null creasoAmb(p) dicAsociacion:Diccionario put(id_asociacion,a) Se aade a al diccionario Pgina 154 PFC: Gestin de una Farmacia 10. Registro Artculos :AltaArticulo dicEmpresa:Diccionario Ejecutar() a:Articulo dicTipoIva:Diccionario

e:Empresa Comprobar que tiene valor en todos los atributos get(id_empresa) Se crea el artculo ti:Tipos_Iva creasocAmb(a) creasocAmb(e) dicArticulo:Diccionario get(id_tipo_iva) creasocAmb(a) creasocAmb(ti) put(id_articulo,a) Se aade a al diccionario 11. Registro stock :AltaStock dicArticulo:Diccionario Ejecutar() s:Stock a:Articulo Comprobar que tiene valor en todos los atributos get(id_articulo) Se crea el stock creasocAmb(s) creasocAmb(a) put(id_stock,s) Se aade a al diccionario Pgina 155 dicStock:Diccionario 12. Registro albaranes

:AltaAlbaran dicEmpresa:Diccionario Ejecutar() a:Albaran Comprobar que tiene valor en todos los atributos excepto bultos y observ. dicCliente:Diccionario dicAsoc:Diccionario e:Empresa get(id_empresa) Se crea el albaran c:Cliente creasocAmb(a) creasocAmb(e) get(id_cliente) creasocAmb(a) as:Asociacion creasocAmb(c) get(id_asociacion) creassocAmb(a) creassocAmb(as) dicAlbaran:Diccionario put(id_asociacion,a) Se aade a al diccionario :AltaLineas dicAlbaran:Diccionario Ejecutar() la:Linea Albaran dicArticulo:Diccionario a:Albaran

Comprobar que tiene valor en articulo y cantidad get(id_albaran) Se crea la lnea de albarn a:Articulo creasocAmb(la) creasocAmb(a) get(id_articulo) dicAlbaran:Diccionario creasocAmb(la) creasocAmb(a) put(id_lina,la) Se aade a al diccionario Pgina 156 PFC: Gestin de una Farmacia 13. Registro apuntes :AltaApunte dicEmpresa:Diccionario Ejecutar() a:Apunte dicAsoc:Diccionario dicAlbaran:Diccionario e:Empresa Comprobar que tiene valor en todos los atributos get(id_empresa) Se crea el apunte as:Asociacion creasocAmb(a) creasocAmb(e) get(id_asociacion) creasocAmb(a)

al:Albaran creasocAmb(as) get(id_albaran) creasocAmb(a) 1..2 creasocAmb(al) dicApunte:Diccionario put(id_apunte,a) Se cambia el estado del albaran 14. Se aade a al diccionario Registro facturas :AltaFactura dicEmpresa:Diccionario Ejecutar() f:Factura dicCliente:Diccio nario e:Empresa Comprobar que tiene valor en todos los atributos get(id_empresa) Se crea la factura c:Cliente creasocAmb(a) creasocAmb(e) get(id_cliente) creasocAmb(a) creasocAmb(c) dicFactura:Diccionario put(id_factura,f) Se aade f al diccionario

Pgina 157 Registro Lineas Factura :AltaLineasFactura dicFactura:Diccionario Ejecutar() lf:Linea Factura dicArticulo:Diccionario dicAlbaran:Diccionario f:Factura Comprobar que tiene valor todos los atributos get(id_factura) Se crea la linea a:Articulos creassocAmb(lf) creassocAmb(f) dicEmpresa:Diccionario get(id_articulo) creassocAmb(lf) al:Albaran creassocAmb(a) get(id_albaran) e:Empresa creassocAmb(lf) creassocAmb(al) get(id_empresa) creassocAmb(lf) creasscoAmb(e) dicLineaFac:Diccionario put(id_linea_factura,lf) Se aade lf al diccionario Pgina 158 PFC: Gestin de una Farmacia

15. Aviso de stock mnimo :AvisoStockMinimo Ejecutar() dicStock:Diccionario elements :Iterador first() is_done() current_item s:Stock get(existencia) a:Articulo * Si existencia < stock mnimo get(stock_minimo) Datos_Articulo() get(referencia) get(nombre) listaArticulosStock= listaArticulosStock + {referencia,nombre, existencia, stock_minimo} next() X Pgina 159 16. Actualizacin de los artculos :ActualizarArticulos Ejecutar() Obtener articulos fichero :Iterador first() is_done() current_item

dicArticulo:Diccionario get(id_articulo) Si existe el artculo, se actualizan los datos * Actualizar() Si no existe el articulo, se crea un nuevo objeto Se elimina, articulo si no existe en el fichero a:Articulo a:Articulo X next() X Pgina 160 PFC: Gestin de una Farmacia 17. Baja empresa de trabajo :BajaEmpresa dicEmpresa:Diccionario Ejecut ar() get(id_empresa) Mensaje1 Comprobar que existe empresa con id_empresa e:Empresa Baja() remove(id_empresa) Boolean X Se elimina e del diccionario 18.

Baja clientes :BajaClientes dicCliente:Diccionario Ejecutar() get(id_cliente) Mensaje1 Comprobar que existe cliente con id_cliente c:Cliente Baja() remove(id_cliente) Boolean X Se elimina c del diccionario Pgina 161 19. Baja asociaciones :BajaAsociaciones dicAsociacion:Diccionario Ejecutar() get(id_asociacion) Mensaje1 Comprobar que existe asociacin con id_asociacion a:Asociacion Baja() remove(id_asociacion) Boolean X Se elimina c del diccionario 20. Baja artculos :BajaArticulos dicArticulo:Diccionario Ejecutar() get(id_articulo) Mensaje1

Comprobar que existe articulo con id_articulo a:Articulo Baja() remove(id_articulo) Boolean X Se elimina a del diccionario Pgina 162 PFC: Gestin de una Farmacia 21. Baja stock :BajaStock dicStock:Diccionario Ejecutar() get(id_stock) Mensaje1 Comprobar que existe stock con id_stock s:Stock Baja() remove(id_stock) Boolean X Se elimina s del diccionario 22. Baja albaranes :BajaAlbaranes dicAlbaran:Diccionario Ejecutar() getMensaje1 ) (id_albaran Comprobar que existe albarn con id_albaran a:Albaran Baja() remove(id_albaran) Boolean

X Se elimina a del diccionario Pgina 163 23. Baja apuntes :BajaApuntes dicApunte:Diccionario Ejecutar() get(id_apunte) Mensaje1 Comprobar que existe apunte con id_apunte a:Apunte Baja() remove(id_apunte) Albaran Se elimina a del diccionario Act_Estado() Act_Estado() Boolean X 24. Baja facturas :BajaFacturas dicFactura:Diccionario Ejecutar() get(id_factura) Mensaje1 Comprobar que existe factura con id_factura f:Factura Baja() remove(id_factura ) Albaran Se elimina f del diccionario Act_Estado() Act_Estado() Boolean

X Pgina 164 PFC: Gestin de una Farmacia 25. Obtener empresa de trabajo :ObtenerEmpresas Ejecutar() dicEmpresa:Diccionario elements :Iterador first() is_done() current_item e:Empresa get(nombre) tv:TiposVia get(nif) get(calle) * get(codigo) get(numero) get(RestoDirecc) get(telefono) next() listaEmpresa= listaEmpresa + {nombre,nif, {codigo,calle,numero,Restodirecc}, telefono} X Pgina 165 26. Obtener clientes :ObtenerClientes Ejecutar() dicCliente:Diccionario elements

:Iterador first() is_done() current_item c:Cliente get(nombre) e:Empresa get(nif) * get(telefono) get(nombre) next() listaCliente =listaCliente + {nombre,nif, telefono, empresa.nombre} X Pgina 166 PFC: Gestin de una Farmacia 27. Obtener asociaciones :ObtenerAsociaciones Ejecutar() dicAsociaciones:Diccionario elements :Iterador first() is_done() current_item a:Asociacion get(nombre) tv:TiposVia get(nif) * get(calle) get(codigo) get(numero) get(RestoDirecc)

get(codigo) e:Empresa get(sucursal) c:Cliente get(nombre) get(nombre) next() X listaAsociacion= listaAsociacion + {nombre,nif, {codigo,calle,numero,Restodirecc}, codigo, sucursal, empresa.nombre, cliente.nombre} Pgina 167 28. Obtener artculos :ObtenerArticulos dicArticulo:Diccionario Ejecutar() elements :Iterador first() is_done() current_item a:Articulo get(codigo) * get(descripcion) get(pvp) next() listaArticulo =listaArticulo + {codigo, descripcion, pvp} X 29. Obtener stock

:ObtenerStock Ejecutar() dicStock:Diccionario elements :Iterador first() is_done() current_item s:Stock get(existencia) a:Articulo * get(stock_minimo) Datos_Artic ulo() get(referencia) get(nombre) listaArticulosStock= listaArticulosStock + {referencia,nombre, existencia, stock_minimo} next() X Pgina 168 PFC: Gestin de una Farmacia 30. Obtener albaranes :ObtenerAlbaranes Ejecutar() dicAlbaranes:Diccionario elements :Iterador first() is_done() current_item a:Albaran get(tipo_albaran) as:Asociacion

* get(total) get(fecha_albaran) e:Empresa get(nombre) get(nombre) next() X listaAlbaranes= listaAlbaranes + {tipo_albaran, total, fecha_albaranl, empresa.nombre, asociacion.nombre} Pgina 169 31. Obtener Apuntes :ObtenerApuntes Ejecutar() dicApuntes:Diccionario elements :Iterador first() is_done() current_item a:Apunte get(tipo1) get(tipo2) get(empresa) get(provincia) get(peticion) * get(fecha) get(Apunte) get(sucursal) get(CCC) get(total_tipo1) get(total_tipo2) get(total_base) get(total_iva) get(total)

next() X listaApuntes= listaApuntes + {tipo1,tipo2,empresa,provincia,peticion,fecha, apunte, sucursal, ccc, total_tipo1, total_tipo2, total_base, total_iva, total} Pgina 170 PFC: Gestin de una Farmacia 32. Obtener facturas :ObtenerFacturas Ejecutar() dicFacturas:Diccionario elements :Iterador first() is_done() current_item f:Factura c:Cliente get(total) * get(nombre) e:Empresa get(nombre) get(fecha_factura) next() X listaFacturas= listaFacturas + {fecha, cliente.nombre, asociacion.nombre, total} Pgina 171 33. Obtener consumo :ObtenerConsumo Ejecutar() dicConsumo:Diccionario elements :Iterador

first() is_done() current_item c:Consumo get(anyo) get(mes) * a:Articulo get(cantidad) Datos_Articulo() get(referencia) get(nombre) listaConsumos= listaConsumos + {referencia,nombre, anyo, mes, existencia} next() X Pgina 172 PFC: Gestin de una Farmacia 34. Obtener Margen :ObtenerMargen Ejecutar() dicMargen:Diccionario elements :Iterador first() is_done() current_item m:Margen get(id_albaran) get(id_empresa) get(margen) * get(fecha) get(nom_cliente) get(nom_articulo)

get(nom_asociacion) get(margen_aplicado) get(total_linea) listaMargen= listaMargen + {id_albaran, id_empresa, margen, fecha, nom_cliente, nom_articulo, nom_asociacion, margen_aplicado, total_linea} next() X Pgina 173 35. Obtener estado albaranes :ObtenerEstadoAlbaranes Ejecutar() dicAlbaranes:Diccionario elements :Iterador first() is_done() current_item a:Albaran get(estado) as:Asociacion * get(fecha_albaran) c:Cliente get(nombre) get(nombre) next() X listaEstadoAlbaranes= listaEstadoAlbaranes + {estado, fecha_albaran, cliente.nombre, asociacion.nombre} Pgina 174 PFC: Gestin de una Farmacia 36.

Envo facturacin :EnvioFacturas Ejecutar() dicFacturas:Diccionario elements :Iterador first() is_done() f:factura current_item get(fecha) get(id_empresa) * C:Cliente get(total) get(nombre) dicLineasFactura:Diccionario elements :Iterador first() lf:lineas_factura is_done() current_item() a:Articulo Datos_Articulos() get(codigo) get(nombre) get(cantidad) get(precio) next() X next() Exporta al fichero. listadoIncidencia= listadoIncidencia+{descripcion}

X listaFacturasExp= listaFacturasExp + {fecha, id_empresa,total, articulo.codigo, articulo.nombre, cantidad, precio} Pgina 175 4.5.3 Diseo de la Base de Datos Una vez que ya se ha elaborado el modelo conceptual (Apartado 3.3), se ha de realizar la transformacin del mismo a un modelo relacional general en este caso el estndar SQL-92 . [ES:D1] Mediante este proceso se obtiene el modelo lgico de esta aplicacin donde se describen las diferentes tablas, sus atributos y sus claves primarias y forneas. La clave primaria puede estar compuesta por uno o varios campos y su contenido identifican a cada registro de manera nica. La clave fornea indica la relacin entre las tablas. [ES:D1] El proceso de transformacin consta bsicamente de que la tecnologa relacional tiene las siguientes caractersticas: o No permite implementar directamente: Asociaciones n-aries, con n>2 Clases asociativas Asociaciones binarias *-* Jerarquas de especializacin o Proporciona mecanismos para: Gestionar la informacin derivada Controlar las restricciones de integridad. [ES:D1] Igual que en el modelo conceptual (apartado 3.3) en el modelo relacional lo dividiremos igual, Modelo Administracin, Modelo clientes, Modelo artculos, Modelo Albarn y Modelo Facturacin. Pgina 176 PFC: Gestin de una Farmacia Modelo Administracin Usuarios -id_usuario : int -nombre : string -password : string -idioma : string +privilegios_entidad() : int +privilegios_accion() : int +ejecutar_proceso() : bool +grupos() : int +Baja()() : bool

Modelo Administracin 0..* pertenece 0..* Usuarios_Grupos -id_usuario : int -id_grupo : int 0pertenece ..* 0..* Grupos -id_grupo : int -nombre : string -descripcion : string +usuarios() : int +entidades() : int +acciones() : int Privilegios_Acceso tiene 1 * -id_grupo : int -id_entidad : int -privilegio : string -Baja : bool sobre Entidades 1 * -id_entidad : int -nombre : string -descripcion : string Procesos 0..1 se basa * es basado Grupos

-id_grupo : int -nombre : string -descripcion : string +usuarios() : int +entidades() : int +acciones() : int * Privilegios_Accion tiene 1 * -id_grupo : int -id_entidad : int -privilegi o : string Acciones sobre * 1 -id_accion : int -nombre : string -descripcion : string 0..1 Constantes -id_constante : int -nombre : string -valor : string -descripcion : string +ExisteConstante(string)() : bool Diccionario -id_diccionario : int -etiq1 : string -etiq2 : string -texto : string -idioma : string +texto(string,string)() : string +textoEtiqueta(string)() : string +ExisteElemento(string)() : bool Pgina 177

-id_proceso : int -id_entidad : int -id_accion : int -ref : string -tipo : string -seguridad : string -clase_Entidad : string -descripcion : string Por cuestin de espacio falta en todos los objetos las funciones de obtencin y actualizacin de los atributos. Todos los atributos se pueden obtener y todos los atributos se pueden actualizar a excepcin del campo clave. Restricciones de integridad Un proceso como mnimo tiene que estar relacionado con una entidad o una accin. No existen dos usuarios con el mismo nombre No existen dos grupos con el mismo nombre USUARIOS (ID_USUARIO, NOMBRE, PASSWORD, IDIOMA) Clave primaria: id_usuario Observaciones: El atributo idioma solo puede tener los valores ESP,CAT. GRUPOS (ID_GRUPO, NOMBRE, DESCRIPCION) Clave primaria: id_grupo USUARIOS_GRUPOS (ID_USUARIO,ID_GRUPO) Clave primaria: id_usuario,id_grupo Clave fornea: id_usuario (USUARIOS), id_grupo (GRUPOS) ENTIDADES (ID_ENTIDAD, NOMBRE, DESCRIPCION) Clave primaria: id_entidad PRIVILEGIOS_ACCESO (ID_GRUPO, ID_ENTIDAD, PRIVILEGIO) Clave primaria: id_grupo,id_entidad Clave fornea: id_grupo (GRUPOS), id_entidad (ENTIDADES) Observaciones: El atributo privilegio solo puede tener los valores A: Actualizacin, L: Lectura. Pgina 178 PFC: Gestin de una Farmacia ACCIONES (ID_ACCION, NOMBRE, DESCRIPCION) Clave primaria: id_accion PRIVILEGIOS_ACCION (ID_GRUPO, ID _ACCION, PRIVILEGIO) Clave primaria: id_grupo,id_accion Clave fornea: id_grupo (GRUPOS), id_accion (ACCIONES) Observaciones: El atributo privilegio solo puede tener los valores X, N

PROCESOS (ID_PROCESO, ID_ENTIDAD, ID_ACCION, REF, TIPO, SEGURIDAD, CLASE_ENTIDAD, DESCRIPCION) Clave primaria: id_proceso Clave fornea: id_entidad (ENTIDADES), id_accion (ACCIONES) Observaciones: El atributo tipo puede contener los valores lista,ficha,filtros,genrica. El atributo seguridad puede contener los valores E y A. Si la Seguridad es E id_entidad es obligatorio, si la seguridad es A es obligatorio id_accion. CONSTANTES (ID_CONSTANTE, NOMBRE, VALOR, DESCRIPCION) Clave primaria: id_constante DICCIONARI (ID_DICCIONARIO, ETIQ1, ETIQ2, TEXTO, IDIOMA) Clave primaria: id_diccionario Pgina 179 Modelo cliente Modelo Cliente se situa Tipos_via -id_tipo_via : int -codigo : string -descripcion : string 1 Empresas -id_empresa : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -nif : string -id_tipo_via : int -id_provincia : int +ExisteNombre(string)() : bool +Baja() : bool 0..* Provincias -id_provincia : int -codigo : string -descripcion : string

-prefijo : string se localiza 1 0..* 1 trabaja con Formas_de_pago 1..* paga como Clientes 1 -id_cliente : int -id_empresa : int -nombre : string -nif : string -telefono : string -fax : string -email : string -DiaPago1 : int -DiaPago2 : int -DiaPago3 : int -Tarifa_PV : int -NumCopFac : int -Observaciones : string -id_forma_de_pago : int -id_docs_pago : int -id_tipo_iva : int +Baja() : bool -id_forma_de_pago : float -codigo : string -descripcion : string -vencimientos : int -decalaje : int 0..* Docs_pago paga con -id_docs_pa go : double -codigo : string -descripcion : string

1 0..* tiene 0..* 1 Tipos_iva -id_tipo_iva : double -descripcion : string -iva : int +desc_iva(int)() : string 1 se divide Tipos_via se situa 0..* 1 Asociaciones -id_asociacion : int -id_empresa : int -id_cliente : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -codigo : string -sucursal : string -id_tipo_via : int -id_provincia : int +Baja() : bool -id_tipo_via : int -codigo : string -descripcion : string 0..* Provincias se localiza 0..* 1

-id_provincia : int -codigo : string -descripcion : string -prefijo : string Pgina 180 PFC: Gestin de una Farmacia Por cuestin de espacio falta en todos los objetos las funciones de obtencin y actualizacin de los atributos. Todos los atributos se pueden obtener y todos los atributos se pueden actualizar a excepcin del campo clave. Restricciones de Integridad: No existen dos empresas con el mismo nombre TIPOS_VIA (ID_TIPO_VIA, CODIGO, DESCRIPCION) Clave primaria: id_tipo_via PROVINCIAS (ID_PROVINCIA, CODIGO, DESCRIPCION, PREFIJO) Clave primaria: id_provincia EMPRESAS (ID_EMPRESA, NOMBRE, CALLE, NUMERO, RESTODIR, CIUDAD, CODIGO_POSTAL, TELEFONO, FAX, NIF, ID_TIPO_VIA, ID_PROVINCIA) Clave primaria: id_empresa Clave fornea: id_tipo_via (TIPOS_VIA), id_provincia (PROVINCIAS) FORMAS_DE_PAGO (ID_FORMA_DE_PAGO, CODIGO, DESCRIPCION, VENCIMIENTOS, DECALAJE) Clave primaria: id_forma_de_pago DOCS_PAGO (ID_DOCS_PAGO, CODIGO, DESCRIPCION) Clave primaria: id_docs_pago TIPOS_IVA (ID_TIPO_IVA, DESCRIPCION, IVA) Clave primaria: id_tipo_iva Pgina 181 CLIENTES (ID_CLIENTE, ID_EMPRESA, NOMBRE, NIF, TELEFONO, FAX, EMAIL, DIAPAGO1, DIAPAGO2, DIAPAGO3, TARIFA_PV, NUM COPFAC, OBSERVACIONES, ID_FORMA_DE_PAGO, ID_DOCS_PAGO, ID_TIPO_IVA) Clave primaria: id_cliente Clave fornea: id_empresa (EMPRESAS), id_forma_de_pago (FORMA_DE_PAGO), id_docs_pago(DOCS_PAGO), id_tipo_iva (TIPOS_IVA) ASOCIACIONES (ID_ASOCIACION, ID_EMPRESA, ID_CLIENTE, NOMBRE,

CALLE, NUMERO, RESTODIR, CIUDAD, CODIGO_POSTAL, TELEFONO, FAX, CODIGO, SUCURSAL, ID_TIPO_VIA, ID_PROVINCIA) Clave primaria: id_asociacion Clave fornea: id_empresa (EMPRESAS), id_cliente (CLIENTES), id_tipo_via (TIPOS_VIA), id_provincia (PROVINCIAS) Pgina 182 PFC: Gestin de una Farmacia Modelo artculos Modelo Articulos Stock -id_stock : int -id_articulo : int -existencia : int -stock_minimo : int +Datos_Articulo(string,string)() : bool +Baja() : bool Empresas tiene 1 -id_empresa : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -nif : string -id_tipo_via : int -id_provincia : int +ExisteNombre(string)() : bool +Baja() : bool son pedidos por 1 1 Articulos -id_Articulo : double -id_empresa : int -codigo : string -descripcion : string -precio_venta : double -precio_compra : double -pvp : double -margen : double -id_tipos_iva : int

+consumos() : Consumo_anyo +stock() : int +stock_minimo() : bool +Baja() : bool * * tiene se1consume * Tipos_iva 1 -id_tipo_iva : double -descripcion : string -iva : int +desc_iva(int)() : string Consumo_anyo -id_consumo : int -id_articulo : int -anyo : int -mes : int -cantidad : int +Baja() : bool +Datos_Articulo(string,string)() : bool Por cuestin de espacio falta en todos los objetos las funciones de obtencin y actualizacin de los atributos. Todos los atributos se pueden obtener y todos los atributos se pueden actualizar a excepcin del campo clave. Pgina 183 Restricciones de Integridad: Un artculo solo tiene un consumo para cada ao y mes. ARTICULOS (ID_ARTICULO, ID_EMPRESA, CODIGO, DESCRIPCION, PRECIO_VENTA, PRECIO_COMPRA, PVP, MARGEN, ID_TIPOS_IVA) Clave primaria: id_articulo Clave fornea: id_empresa (EMPRESAS), id_tipo_iva (TIPOS_IVA) STOCK (ID_STOCK, ID_ARTICULO, EXISTENCIA, STOCK_MINIMO) Clave primaria: id_stock, clave_secundaria: id_articulo Clave fornea: id_articulo (ARTICULOS) CONSUMO_ANYO (ID_CONSUMO, ID_ARTICULO, ANYO, MES, CANTIDAD) Clave primaria: id_consumo, clave_secundaria: id_articulo,anyo,mes

Clave fornea: id_articulo (ARTICULOS) Pgina 184 PFC: Gestin de una Farmacia Modelo albarn Empresas Modelo Albaran -id_empresa : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -nif : string -id_tipo_via : int -id_provincia : int +ExisteNombre(string)() : bool +Baja() : bool trabaja con 1 1..* realizan 1 Albaranes -id_albaran : int -fecha_entrada : string -estado : string -ccc : string -direccion : string -poblacin : string -provincia : string -apunte : int -sucursal : string -peticion : string -tipo_albaran : string -bultos : int -gen_apunte : bool -numero_apunte : int -tipo_iva1 : double -tipo_iva2 : double -tipo_iva3 : double

-base1 : double -base2 : double -base3 : double -observaciones : string -id_empresa : int -id_cliente : int -id_asociacion : int +Baja() : bool +Total() : double +Total_iva() : double +Total_Base() : double +estado(string)() : bool +Act_Estado(string)() : bool +Numero_lineas() : double * Clientes recibe 1 * *1..2 se agrupa Apuntes se divide 1 1 Asociaciones son enviados Lineas_albaran -id_albaran -id_linea_albaran -id_articulo -desc_ar t -cantidad -precio -iva -total_base -total_iva -total_detalle -estado -plus +Base() : double

+total_iva() : double +total() : double * -id_cliente : int -id_empresa : int -nombre : string -nif : string -telefono : string -fax : string -email : string -DiaPago1 : int -DiaPago2 : int -DiaPago3 : int -Tarifa_PV : int -NumCopFac : int -Observaciones : string -id_forma_de_pago : int -id_docs_pago : int -id_tipo_iva : int +Baja() : bool 0..* 1 contenidas en * crea 1 Articulos es sobre * 1 1 -id_Articulo : double -id_empresa : int -codigo : string -descripcion : string -precio_venta : double -precio_compra : double -pvp : double -margen : double -id_tipos_iva : int

+consumos() : Consumo_anyo +stock() : int +stock_minimo() : bool +Baja() : bool -id_asociacion : int -id_empresa : int -id_cliente : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -codigo : string -sucursal : string -id_tipo_via : int -id_provincia : int +Baja() : bool Pgina 185 -id_apunte : int -tipo1 : int -tipo2 : int -empdesc : string -provaso : string -peticion : string -fecha_apunte : string -apunteemp : int -sucursal : string -ccc : string -totaltipo1 : double -totaltipo2 : double -totalbase : double -totaliva : double -totalapunte : double -numeroapunte : int -fecha_peticion : string -id_empresa : int -id_asociacion : int +Total() : double +Baja() : bool * tiene 1

Articulos -id_Articulo : double -id_empresa : int -codigo : string -descripcion : string -precio_venta : double -precio_compra : double -pvp : double -margen : double -id_tipos_iva : int +consumos() : Consumo_anyo +stock() : int +stock_minimo() : bool +Baja() : bool es sobre * Empresas -id _empresa : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -nif : string -id_tipo_via : int -id_provincia : int +ExisteNombre(string)() : bool +Baja() : bool trabaja con 1..* 1 1 obtiene 1 Margen -id_margen -margen -fecha -nom_cliente -nom_asociacion -nom_articulo

-margen_aplicado -total_linea -id_articulo -id_empresa -id_cliente -id_asociacion -id_albaran -id_linea_albaran +margen() : double +actualizar_margen() : double genera *1 * Clientes * referencia * 1 * es basado tiene se divide 1 Albaranes -id_albaran : int -fecha_entrada : string -estado : string -ccc : string -direccion : string -poblacin : string -provincia : string -apunte : int -sucursal : string -peticion : string -tipo_albaran : string -bultos : int -gen_apunte : bool -numero_apunte : int -tipo_iva1 : double contenidas en -tipo_iva2 : double 1 -tipo_iva3 : double *

-base1 : double -base2 : double -base3 : double -observaciones : string -id_empresa : int -id_cliente : int -id_asociacion : int +Baja() : bool +Total() : double +Total_iva() : double +Total_Base() : double +estado(string)() : bool +Act_Estado(string)() : bool +Numero_lineas() : double -id_cliente : int -id_empresa : int -nombre : string -nif : string -telefono : string -fax : string -email : string -DiaPago1 : int -DiaPago2 : int -DiaPago3 : int -Tarifa_PV : int -NumCopFac : int -Observaciones : string -id_forma_de_pago : int -id_docs_pago : int -id_tipo_iva : int +Baja() : bool 0..* Asociaciones 1 Lineas_albaran 1 -id_albaran -id_linea_albaran -id_articulo -desc_art -cantidad -precio -iva -total_base -total_iva

-total_detalle -estado -plus +Base() : double +total_iva() : double +total() : double Pgina 186 -id_asociacion : int -id_empresa : int -id_cliente : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -codigo : string -sucursal : string -id_tipo_via : int -id_provincia : int +Baja() : bool PFC: Gestin de una Farmacia Por cuestin de espacio falta en todos los objetos las funciones de obtencin y actualizacin de los atributos. Todos los atributos se pueden obtener y todos los atributos se pueden actualizar a excepcin del campo clave. Restricciones de Integridad: Un apunte contiene como mximo dos albaranes. Estos albaranes han de ser de diferente tipo pero misma asociacin y peticin. Existe un margen para cada lnea de albarn. ALBARANES (ID_ALBARAN, FECHA_ENTRADA, ESTADO, CCC, DIRECCIN, POBLACION, PROVINCIA, APUNTE, SUCURSAL, PETICION, TIPO_ALBARAN, BULTOS, GEN_APUNTE, NUMERO_APUNTE, TIPO_IVA1, TIPO_IVA2, TIPO_IVA3, BASE1, BASE2, BASE3, OBSERVACIONES, ID_EMPRESA, ID_CLIENTE, ID_ASOCIACION) Clave primaria: id_albaran Clave fornea: numero_apunte (APUNTES) , id_empresa (EMPRESAS) , id_cliente (CLIENTES) , id_asociacion (ASOCIACIONES) LINEAS_ALBARAN (ID_LINEA_ALBARAN, ID_ALBARAN, ID_ARTICULO, DESC_ART, CANTIDAD, PRECIO, IVA, TOTAL_BASE, TOTAL_IVA, TOTAL_DETALLE, ESTADO, PLUS) Clave primaria: id_linea_albaran

Clave fornea: id_albaran (ALBARANES), id_articulo (ARTICULOS) APUNTES (ID_APUNTE, TIPO1, TIPO2, EMPDESC, PROVASO, PETICION, FECHA_APUNTE, APUNTEEMP, SUCURSAL, CCC, TOTALTIPO1, TOTALTIPO2, TOTALBASE, TOTALIVA, TOTALAPUNTE, NUMERO_APUNTE, FECHA_PETICION, ID_EMPRESA, ID_ASOCIACION) Clave primaria: id_apunte Clave fornea: tipo1 (ALBARANES), tipo2 (ALBARANES), id_empresa(EMPRESAS), id_asociacion (ASOCIACIONES) Pgina 187 MARGEN (ID_MARGEN, MARGEN, FECHA , NOM_CLIENTE, NOM_ASOCIACION, NOM_ARTICULO, MARGEN_APLICADO, TOTAL_LINEA, ID_ARTICULO, ID_EMPRESA, ID_CLIENTE, ID_ASOCIACION, ID_ALBARAN, ID_LINEA_ALBARAN) Clave primaria: id_margen Clave fornea: id_articulo (ARTICULOS), id_empresa(EMPRESAS), id_cliente (CLIENTES), id_asociacion (ASOCIACIONES) , id_albaran (ALBARANES), id_linea_albaran(LINEAS_ALBARAN) Pgina 188 PFC: Gestin de una Farmacia Modelo facturacin Modelo Facturacin Clientes son recibidas Facturas 1 -id_factura : int -fecha_entrada : string -estado : string -total_bruto : double -observaciones : string -id_empresa -id_cliente +Baja() : bool +Total() : double +Numero_lineas() : double *

* 1 contiene -id_cliente : int -id_empresa : int -nombre : string -nif : string -telefono : string -fax : string -email : string -DiaPago1 : int -DiaPago2 : int -DiaPago3 : int -Tarifa_PV : int -NumCopFac : int -Observaciones : string -id_forma_de_pago : int -id_docs_pago : int -id_tipo_iva : int +Baja() : bool Empresas son creadas * 1 Detalle_facturas realiza -id_detalle_facturas -id_factura -descart -cantidad -precio -total_detalle -id_empresa -id_articulo -id_albaran -id_tipo_iva +Datos_Articulo(string,string)() : bool +total_detalle() : double +Baja() : bool * tiene 1

* * -id_empresa : int -nombre : string -calle : string -numero : string -restodir : string -ciudad : string -codigo_postal : string -telefono : string -fax : string -nif : string -id_tipo_via : int -id_provincia : int +ExisteNombre(string)() : bool +Baja() : bool Albaranes * es sobre se basa 1 * Tipos_iva Articulos -id_tipo_iva : double -descripcion : string -iva : int +desc_iva(int)() : string -id_Articulo : double -id_empresa : int -codigo : string -descripcion : string -precio_venta : dou ble -precio_compra : double -pvp : double -margen : double -id_tipos_iva : int +consumos() : Consumo_anyo +stock() : int +stock_minimo() : bool

+Baja() : bool 1 Pgina 189 -id_albaran : int -fecha_entrada : string -estado : string -ccc : string -direccion : string -poblacin : string -provincia : string -apunte : int -sucursal : string -peticion : string -tipo_albaran : string -bultos : int -gen_apunte : bool -numero_apunte : int -tipo_iva1 : double -tipo_iva2 : double -tipo_iva3 : double -base1 : double -base2 : double -base3 : double -observaciones : string -id_empresa : int -id_cliente : int -id_asociacion : int +Baja() : bool +Total() : double +Total_iva() : double +Total_Base() : double +estado(string)() : bool +Act_Estado(string)() : bool +Numero_lineas() : double Por cuestin de espacio falta en todos los objetos las funciones de obtencin y actualizacin de los atributos. Todos los atributos se pueden obtener y todos los atributos se pueden actualizar a excepcin del campo clave. FACTURAS (ID_FACTURA, FECHA_ENTRADA, TOTAL_BRUTO, OBSERVACIONES, ID_EMPRESA, ID_CLIENTE) Clave primaria: id_factura Clave fornea: id_empresa (EMPRESAS) ,id_cliente(CLIENTES) DETALLE_FACTURAS (ID_DETALLE_FACTURAS, ID_FACTURA, DESCART, CANTIDAD, PRECIO, TOTAL_DETALLE, ID_TIPO_IVA, ID_EMPRESA,

ID_ARTICULO, ID_ALBARAN, ID_TIPO_IVA) Clave primaria: id_detalle_facturas Clave fornea: id_empresa (EMPRESAS) ,id_articulo (ARTICULOS) , id_albaran(ALBARANES), id_tipo_iva (TIPOS_IVA) Pgina 190 PFC: Gestin de una Farmacia 5. Implementacin En este captulo se explicaran las consideraciones, a nivel de implementacin, que se han realizado a lo largo del desarrollo del proyecto. Bsicamente se explicar las tecnologas a nivel de lenguajes que se han utilizado para implementar nuestro sistema. Adems s e darn todas las definiciones necesarias para entender el funcionamiento interno del sistema. Aunque primero se expondrn los motivos por los que han escogido estas tecnologas y herramientas. Como ya se ha mencionado con anterioridad, se ha decidido que el sistema sea una aplicacin cliente/servidor. Los usuarios siempre estarn situados en los pcs que se instale la aplicacin y este entorno proporciona mayor rapidez a la hora de ejecutar consultas, adems de ser un entorno conocido y sencillo. Los lenguajes de programacin y herramientas de interfaz de usuario sern los siguientes: Visual Studio .Net C#, XML y Crystal Reports. Los objetivos del sistema son, entre otros, su escalabilidad, potencia, extensibilidad, etc. Por este motivo se ha decido que el desarrollo de la aplicacin sea en Visual Studio .Net C# que es un lenguaje de programacin orientado a objetos muy potente, sencillo y robusto que permitir conseguir estas metas. Como la aplicacin trabaja con Bases de Datos, se debe utilizar SQL. Como Gestor de Base de Datos en explotacin se ha decido MySQL dado que es una Base de Datos gratuita y muy ligera. Adems, se usarn sentencias SQL estndar por si en algn momento se decide cambiar el SGBD. La parte de definicin del men est basada en el uso del lenguaje descriptivo XML para dar un elevado nivel de parametrizacin. Para tratar este lenguaje se han escogido las Pgina 191 herramientas MSXML2.DOMDocument30 que permite poder manipular los documentos XML mediante libreras escritas en C#. Junto con esta tecnologa utilizamos DTD (Document Type Definition) que sirve para validar los XML. La parte de definicin y creacin de informes se utiliza Crystal Report ya que es una

herramienta bastante estndar para esta funcionalidad y que viene incorporada en el grupo Visual Studio .Net. Pgina 192 P FC: Gestin de una Farmacia 5.1 Lenguajes utilizados A continuacin se explicarn los diferentes lenguajes de programacin que se van a utilizar en el desarrollo de este sistema de informacin. Como ya se mencion en captulos anteriores, la aplicacin se desarrollar usando Visual Studio .Net C#. Tambin se utilizar la tecnologa XML para creacin del men consiguiendo mayor parametrizacin. 5.1.1 Visual C# C# (pronunciado "si sharp") es un lenguaje de programacin orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que despus fue aprobado como un estndar por la ECMA e ISO. Su sintaxis bsica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.NET el cual es similar al de Java aunque incluye mejoras derivadas de otros lenguajes (ms notablemente de Delphi y Java). El smbolo # viene de sobreponer "++" sobre "++" y eliminar las separaciones, indicando as su descendencia de C++. C#, como parte de la plataforma.NET, est normalizado por ECMA desde diciembre de 2001 (ECMA-334 "Especificacin del Lenguaje C#"). El 7 de noviembre de 2005 sali la versin 2.0 del lenguaje que inclua mejoras tales como tipos genricos, mtodos annimos, iteradores, tipos parciales y tipos anulables. El 2 de Febrero del 2008 sali la versin 3.0 de C# destacando entre las mejoras los tipos implcitos, tipos annimos y el LINQ (Language Integrated Query). Aunque C# forma parte de la plataforma.NET, sta es una interfaz de programacin de aplicaciones; mientras que C# es un lenguaje de programacin independiente diseado para generar programas sobre dicha plataforma. Ya existe un compilador implementado el que provee el Framework de DotGNU - Mono es que no generen programas para dicha plataforma, sino para una plataforma diferente como Win32 o UNIX / Linux. Microsoft Visual Studio es un entorn o de desarrollo integrado (IDE, por sus siglas en ingls) para sistemas Windows. Soporta varios lenguajes de programacin tales como Pgina 193 Visual C++, Visual C#, Visual J#, ASP.NET y Visual Basic .Net, aunque actualmente se han desarrollado las extensiones necesarias para muchos otros. Un entorno de desarrollo integrado es un programa compuesto por un conjunto de

herramientas para un programador. Puede dedicarse en exclusiva a un slo lenguaje de programacin o bien, poder utilizarse para varios. Un IDE es un entorno de programacin que ha sido empaquetado como un programa de aplicacin, es decir, consiste en un editor de cdigo, un compilador, un depurador y un constructor de interfaz grfica GUI. Visual Studio permite a los desarrolladores crear aplicaciones, sitios y aplicaciones web, as como servicios web en cualquier entorno que soporte la plataforma .NET (a partir de la versin 6). As se pueden crear aplicaciones que se intercomuniquen entre estaciones de trabajo, pginas web y dispositivos mviles. 5.1.2 XML XML es una tecnologa que tiene a su alrededor otras tecnologas que la complementan y la hacen mucho ms grande y con unas posibilidades mucho mayores. XML, con todas las tecnologas relacionadas, representa una manera distinta de hacer las cosas, ms avanzada, cuya principal novedad consiste en permitir compartir los datos con los que se trabaja a todos los niveles, por todas las aplicaciones y soportes. As pues, el XML juega un papel muy importante en este mundo actual, que tiende a la globalizacin y la compatibilidad de una manera segura, fiable y fcil. XML es interesante en el mundo de Internet y el e-bussiness, ya que existen muchos sistemas distintos que tienen que comunicarse entre s. Pero interesa por igual a todas las ramas de la informtica y el tratamiento de datos, ya que permite muchos av ances a la hora de trabajar con ellos. Pgina 194 PFC: Gestin de una Farmacia Un fichero XML se escribe en un documento de texto, igual que el HTML, y en la cabecera del documento se tiene que poner . En el resto del documento se deben escribir etiquetas. Las etiquetas se escriben anidadas, unas dentro de otras ......... . Cualquier etiqueta puede tener atributos, tantos como se deseen . Para definir qu etiquetas y atributos se deben utilizar al escribir en XML se debe pensar en guardar la informacin de una forma estructurada y ordenada. Se ilustrar con un ejemplo en el apartado 5.2 El XML se preocupa por estructurar la informacin que pretende almacenar. La estructura la marca la lgica propia de la informacin. XML se est desarrollando con rigor, siempre ajustado a lo que marca el estndar que desarrolla el W3C, entidad que est desarrollando XML. El XML se cre para que cumpliera varios objetivos:

Que fuese idntico a la hora de servir, recibir y procesar la informacin que el HTML, para aprovechar toda la tecnologa implantada para este ltimo. Que fuese formal y conciso desde el punto de vista de los datos y la manera de guardarlos. Que fuese extensible, para que lo puedan utilizar en todos los campos del conocimiento. Que fuese fcil de leer y editar. Que fuese fcil de implantar, programar y aplicar a los distintos sistemas. XML se puede usar para infinidad de trabajos y aporta muchas ventajas en amplios escenarios. Algunas ventajas del XML en algunos campos prcticos son: Comunicacin de datos: Si la informacin se transfiere en XML, cualquier aplicacin podra escribir un documento de texto plano con los datos que estaba Pgina 195 manejando en formato XML y otra aplicacin recibir esta informacin y trabajar con ella. Migracin de datos: Si tenemos que mover los datos de una Base de Datos a otra sera muy sencillo si las dos trabajasen en formato XML. Aplicaciones web: Hasta ahora cada navegador interpreta la informacin a su manera y los programadores de pginas web tienen que hacer unas cosas u otras en funcin del navegador del usuario. Con XML se puede tener una sola aplicacin que maneja los datos y para cada navegador o soporte se tendr una hoja de estilo o similar para aplicarle el estilo adecuado. 5.1.3 DTD (Document type definition) Crear una definicin del tipo de documento (DTD) es como crear nuestro propio lenguaje de marcado, para una aplicacin especfica. Por ejemplo, podramos crear un

DTD que defina una tarjeta de visitas. A partir de ese DTD, tendramos una serie de elemento XML que nos permitiran definir tarjetas de visita. La DTD define los tipos de elementos, atributos y entidades permitidas, y puede expresar algunas limitaciones para combinarlos. Los documentos que se ajustan a su DTD, se denominan "vlidos". El concepto de "validez" no tiene nada que ver con el de estar "bien formado". Un documento "bien formado" simplemente respeta la estructura y sintaxis definida por la especificacin de XML. Un documento "bien formado" puede adems ser "vlido" si cumple las reglas de una DTD determinada. Tambin existen documentos XML sin una DTD asociada, en ese caso no son "vlido", pero tampoco "invlido"... simplemente "bien formados"... o no. Una DTD puede residir en un fichero externo, y quizs compartido por varios (puede que miles) de documentos. O bien, puede estar contenido en el propio documento XML, como parte de su declaracin de tipo de documento. En nuestro caso tenemos un DTD externo y nos valida el xml de men que utilizamos para la creacin del men. Pgina 196 PFC: Gestin de una Farmacia La declaracin del tipo de documento empieza en la primera lnea y termina con ">". Las declaraciones DTD son las lneas que empiezan con "

You might also like