Full text
Proyecto Fin de Carrera Ingeniería en Informática Desarrollo de un ERP para una clínica veterinaria Santiago Gallego Rodríguez Director: Eduardo Mena Nieto Codirector: Luis Carlos Gallego Rodríguez Departamento de Informática e Ingeniería de Sistemas Escuela de Ingeniería y Arquitectura Universidad de Zaragoza Junio de 2011
Desarrollo de un ERP para una clínica veterinaria RESUMEN El presente Proyecto Fin de Carrera consiste en el desarrollo de un Enterprise Resource Planning(ERP) para la gestión de una clínica veterinaria y la posterior implantación en una clínica real: la Clínica Veterinaria Sinaí situada en Villanueva de Gállego (Zaragoza). Un ERP es un sistema de información gerencial que integra y automatiza muchas de las prácticas de negocio asociadas con los aspectos operativos o productivos de una empresa. El sistema de información desarrollado consta de dos partes, una aplicación de escritorio y una aplicación Web. ICAROVET es la aplicación de escritorio cuya finalidad es la organización de la información del día a día de la empresa llevando la información de empleados de la clínica, clientes y mascotas, economía de la empresa, información sobre los servicios que se ofrecen, y otro tipo de funcionalidades como la integración Web y la gestión de copias de seguridad. ICAROVET tiene un sistema de usuarios y permisos que permite que los diferentes empleados de una clínica veterinaria tengan acceso exclusivamente a la información que el administrador de la aplicación decida. Además el sistema ofrece la posibilidad de gestionar la información de los clientes de la clínica veterinaria y el historial médico de sus mascotas. Se almacena toda la información de un cliente, como puede ser visitas, citas, historial económico, asociación entre clientes, mascotas de un cliente, historial clínico, recordatorios o vacunaciones. La aplicación también es capaz de llevar la economía de la clínica veterinaria, tanto la de ingresos como la de gastos. También gestiona la información relativa al almacén, es decir, la organización de artículos y servicios que ofrece la clínica veterinaria a sus clientes, incluyendo un control de stock. Cada usuario en el sistema tendrá una agenda personal, donde podrá visualizar toda la información de la clínica que esta relacionada con él, ya sean citas, tareas a desarrollar, recordatorios de mascotas o alertas acerca del almacén. ICAROVET Web es un portal Web cuyo objetivo es publicitar los servicios de la clínica y ofrecer a sus clientes registrados un medio para ver los datos relativos a su historial y el de sus mascotas en la clínica. La aplicación Web tiene dos zonas diferenciadas, una de acceso público con información corporativa de la clínica, oferta de servicios, imágenes, formas de contacto, noticias e información general para publicitar la clínica. Y otra zona con acceso mediante identificación por usuario y contraseña con dos tipos de usuario, administrador y cliente. Un administrador tiene posibilidades similares a las de un gestor de contenidos Web, pudiendo editar la cabecera o pie de la página, así como información de contacto, noticias, anuncios y el resto de información que se genera dinámicamente en la página Web. Un cliente tiene acceso a través de la página, entre otras cosas, a la información existente en ICAROVET relativa a él y a sus mascotas.
It’s not denial. I’m just selective about the reality I accept Calvin
Agradecimientos Me gustaría agradecer este Proyecto Final de Carrera a todas las personas que lo han hecho posible, empezando por mis directores de proyecto Eduardo Mena y Luis Carlos Gallego, por su inestimable ayuda en todas las fases del proyecto (y durante toda la carrera). A Estefanía por otorgarme la posibilidad de diseñar un sistema de semejante entidad, por sus recomendaciones y por poder desplegarlo en su clínica. Agradecer a todas las personas que me han ayudado durante mis años de estudiante, amigos, compañeros, profesores y en definitiva a toda la buena gente que he conocido en la Universidad de Zaragoza. A nivel personal, los que me conocen saben que nunca me han gustado las listas de nombres, así que lo haré muy sencillo. Me gustaría agradecer a toda mi familia, amigos, compañeros y a toda la gente con la que he compartido o compartiré algún momento de mi vida, por aportarme la felicidad necesaria para poder vivir muy bien. Gracias a todos. Y por último, gracias a todas las personas que lean la memoria de este proyecto por su interés.
Índice general 1. Introducción 1 1.1. Objetivos ................................ 2 1.2. Motivación................................ 3 1.3. Entorno ................................. 4 1.4. Resumen................................. 4 2. Tecnologías utilizadas 5 2.1. ICAROVET............................... 5 2.1.1. MySQL ............................. 5 2.1.2. C# y plataforma .NET . . . . . . . . . . . . . . . . . . . . . 6 2.2. ICAROVETWeb............................ 7 2.2.1. PHP y Zend Framework . . . . . . . . . . . . . . . . . . . . 7 3. Sistema desarrollado 9 3.1. ICAROVET............................... 9 3.1.1. Sistema de usuarios . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.2. Clientes y mascotas . . . . . . . . . . . . . . . . . . . . . . . 10 3.1.3. Economía ............................ 12 3.1.4. Almacén............................. 13 3.1.5. Agenda ............................. 14 3.1.6. Configuración.......................... 15 3.1.7. Otras funcionalidades . . . . . . . . . . . . . . . . . . . . . . 15 3.2. ICAROVETWeb............................ 17 3.2.1. Zona pública de la Web . . . . . . . . . . . . . . . . . . . . 17 3.2.2. Administración de la Web . . . . . . . . . . . . . . . . . . . 17 3.2.3. Información para clientes registrados . . . . . . . . . . . . . 18 4. Conclusiones 19 4.1. Resultados y objetivos cumplidos . . . . . . . . . . . . . . . . . . . 19 4.2. Ampliaciones y posibilidades del sistema . . . . . . . . . . . . . . . 21 4.3. Cronograma............................... 21 iii
6CAPÍTULO 2. TECNOLOGÍAS UTILIZADAS tores determinantes, es que MySQL permite a la aplicación almacenar toda la información que necesitamos de una manera organizada y que es un gestor de base de datos que posee todas las funcionalidades que necesitamos en la aplicación. Además MySQL es un proyecto open source y el precio de las licencias de ORACLE impiden su uso para este proyecto. Para elegir el motor dentro de MySQL que gestionaría la base de datos se presentaban principalmente dos opciones: InnoDB y MyISAM. A pesar de que MyISAM es un motor más rápido, las funcionalidades que ofrece el motor InnoDB se van a utilizar en el desarrollo de la aplicación. Algunas de estas funcionalidades son un soporte de transacciones, la garantía de integridad sobre las tablas, el cumplimiento de las características ACID para las transacciones y la ventaja de comprobar las claves extranjeras [8]. Otras de las características importantes que se han utilizado de MySQL es la capacidad de realizar copias de seguridad con el comando mysqldump, la posibilidad de asignar disparadores a eventos, útiles cuando quieres actualizar información de tablas dependiendo de una acción previa sobre la base de datos. A la hora de trabajar durante el desarrollo del Proyecto Fin de Carrera se ha utilizado el MySQL Workbench [10] para interactuar con MySQL. 2.1.2. C# y plataforma .NET El desarrollo tiene que ser ágil, y debido a la similitud de muchos de los procesos informáticos del ERP [6] [31] con propiedades como la herencia o la orientación a objetos, el lenguaje que se escoja debe cumplirlos. Las opciones que se presentaron fueron JAVA [16] [33] y C# [34] y la plataforma .NET [13]. Ambas tecnologías tienen una amplia cuota de mercado, lo que a priori nos da la seguridad para pensar que son muy válidos para nuestro diseño. Probablemente para nuestro caso se podría usar cualquiera de ellos con resultados similares. Se terminó eligiendo C# y la plataforma .NET por inquietudes personales para adquirir experiencia en el desarrollo .NET y C#, sabiendo con seguridad que dichas tecnologías eran una base con la que se podía construir eficientemente la aplicación. Además la Clínica Veterinaria Sinaí [18] tenía ya una pequeña aplicación de clientes desarrollada en esta plataforma de la que algo se podría aprovechar. Las ventajas que se han conseguido al usar este lenguaje aparte de las ya mencionadas, es la de una gran base para la creación de formularios, fácil integración con Excel para generar informes, y poder usar CrystalReports para generar facturas. El desarrollo se ha realizado con Microsoft Visual Studio 2008. Además el proyecto ha estado en todo momento bajo control de versiones, usando para esto Subversion [24]. Un sistema de control de versiones es una herramienta útil para proyectos informáticos entre otras cosas para poder llevar un control de los cambios realizados a lo largo del tiempo y poder recuperar versiones
2.2. ICAROVET WEB 7 anteriores de ficheros en caso necesario. El cliente utilizado de Subversion ha sido el Tortoise-SVN [17]. 2.2. ICAROVET Web Los requisitos de la aplicación Web a desarrollar hacen necesario un lenguaje de programación Web con capacidad para ejecutar código en el lado del servidor. Es necesario también un gestor de base de datos y un servidor Web. 2.2.1. PHP y Zend Framework En cuanto a lenguaje de programación Web se planteó la posibilidad de usar PHP [30] [1] [2] o ASP.Net [25]. Ambos cumplían los requisitos para poder programar la aplicación Web [5]. Los requisitos principales eran la conexión a una base de datos, renderizado dinámico de páginas Web y la seguridad en la autentificación de usuarios. Sin embargo la decisión final de usar PHP se debe a la experiencia adquirida previamente en dicho lenguaje y en la preferencia y necesidad personal para adquirir experiencia con el uso de Zend Framework [23] [32]. Se ha usado Zend Framework por ser un framework con una gran capacidad base para poder construir una aplicación Web de manera rápida, flexible, con una buena metodología y muchas funciones y elementos complejos ya desarrollados [4]. El desarrollo con Zend Framework permite seguir el patrón de diseño modelovista-controlador(MVC) [26], que es una forma de tener módulos con una gran independencia y reusabilidad, otorgando la posibilidad de crear aplicaciones Web rápidamente, con módulos implementados y probados por equipos de desarrollo reconocidos. El patrón MVC permite separar la lógica de la Web en modelos, que son los que acceden a los datos, en vistas, encargadas de mostrar información y recibir entrada del usuario, y por último en controladores que son los encargados de recibir las peticiones Web y de interactuar con los modelos para por último enviar la información a las vistas. Esta separación por niveles facilita mucho la programación. Además de esto, Zend posee una buena base para la creación de listados, formularios y plantillas de manera dinámica, que con todo lo anterior otorga una potencia de programación importante. Para el desarrollo de la aplicación con PHP y Zend Framework se ha usado el entorno Eclipse [15], y se han usado también CSS y Jquery [35]. En cuanto a la base de datos se ha usado MySQL [9] [28], por los mismos motivos que los elegidos para la aplicación de escritorio, y como servidor Web se ha escogido Apache [14]. El uso de Apache, MySQL y PHP es muy frecuente, lo cual es una ventaja a la hora de encontrar documentación y soporte para desarrollar un proyecto con estas tecnologías.
8CAPÍTULO 2. TECNOLOGÍAS UTILIZADAS
Capítulo 3 Sistema desarrollado En este capítulo se explican las funcionalidades básicas del sistema desarrollado. Debido a la limitada extensión de la memoria me centraré en los aspectos más importantes tanto de la aplicación de escritorio desarrollada como del portal Web creado para la Clínica Veterinaria Sinaí. El nombre que ha recibido el sistema final para la aplicación de escritorio es ICAROVET y para el portal Web ICAROVET Web. 3.1. ICAROVET ICAROVET es la aplicación de escritorio cuyas características principales engloban un sistema de usuarios, un módulo para clientes y mascotas, un módulo para la gestión del almacén de una clínica, un módulo para la organización económica y un módulo con la agenda personal de usuarios de la aplicación. Además hay distintos aspectos reseñables sobre la configuración del sistema y sincronización con el apartado Web. A continuación se explica cada uno de estos módulos y sus características. Para una mayor profundización en los mismos a nivel técnico (análisis y diseño) acudir al anexo A. 3.1.1. Sistema de usuarios El sistema de usuarios a desarrollar debe permitir a distintas personas acceder de forma limitada a los distintos módulos de la aplicación en función de una serie de características propias de cada persona. Para conseguir esto, dentro del sistema existen cuatro entidades importantes: usuarios, grupos, perfiles y permisos. Los usuarios tendrán acceso limitado al sistema dependiendo del tipo de usuario que sea y los grupos a los que pertenezca. Los usuarios se identifican en el sistema mediante usuario y contraseña. El 9
10 CAPÍTULO 3. SISTEMA DESARROLLADO primer objetivo y más claro es evitar accesos no deseados a nuestro sistema, solo usuarios registrados en el sistema podrán acceder a la aplicación. El sistema de usuarios ha sido diseñado para poder gestionar usuarios dentro de grupos creados en la aplicación. Por ejemplo, tener un grupo de usuarios que sean empleados nuevos de la clínica, otro grupo de administradores, etc. Esto es de utilidad para la gestión de personal dentro de una clínica veterinaria sabiendo a que grupos pertenece cada usuario. Sin embargo la parte más interesante de la gestión de usuarios viene con los permisos y los perfiles. Los permisos de usuario se dividen en cuatro tipos diferentes por sección de la aplicación. Por ejemplo, para la sección de clientes podremos tener permiso de lectura, modificación, inserción y borrado. Un perfil define los permisos existentes para toda la aplicación. Una vez tenemos un perfil definido, se puede asociar estos perfiles a los grupos de usuarios. Con este método podemos restringir el acceso del usuario según a los grupos a los que pertenezca. Por ejemplo,si un usuario pertenece al grupo de Empleados nuevos que solo tienen permiso para ver su agenda, y también pertenece al grupo de Encargados de almacén que tienen acceso a toda la sección del almacén, este usuario podrá acceder a la unión de todo lo que sus grupos le permitan. Pero podemos querer definir permisos relativos al usuario, sin depender de los grupos a los que pertenezca, así que también se puede relacionar un usuario con un perfil específico, para que al final sus permisos queden definidos por la suma de los grupos a los que pertenezca, más su perfil asociado. Gracias a esto podemos decir que se ha desarrollado un sistema de usuarios y permisos lo suficientemente complejo como para limitar el acceso de los usuarios exclusivamente a lo que el administrador desee. 3.1.2. Clientes y mascotas Ésta es una de las partes del sistema que más se van a utilizar en el trabajo diario de cualquier clínica veterinaria. Gestiona una cantidad considerable de información con lo cual era importante saber organizarla y separarla correctamente. Con ese fin en mente se han creado tres categorías diferentes, pero relacionadas entre ellas como se va a explicar. Estas categorías son: clientes, mascotas y visitas. Clientes Nuestro ERP [6] [31] debe ser capaz de gestionar información acerca de los clientes de la clínica. Esta información variará en función de si los clientes son empresas o particulares. Se almacenan datos de contacto, datos para poder facturar a los clientes y además diferenciamos los clientes para que puedan optar a distintos niveles de tarificación. En función de la tarifa de cada cliente obtendrá unos precios especiales (por volumen, por condición, etc). Es necesario también (y común con todos los módulos) un sistema de
3.1. ICAROVET 11 filtrado que permite acceder a la información de un cliente concreto de la forma más rápida posible. Se puede dar la situación de que haya clientes con personas relacionadas que se encarguen de las mascotas en ciertos momentos, o hagan las visitas en nombre de otra persona. El sistema debe ser capaz de gestionar dichas situaciones y para ello en la sección de clientes existen los contactos y las asociaciones entre clientes. Los contactos de un cliente son personas que están relacionadas con este cliente, pero no tienen las suficientes características como para ser un cliente de la clínica. Estos contactos pueden, por ejemplo, ser familiares de un cliente que vienen a hacer una visita espontánea, y se necesita su información para hacerle una factura, pero no es necesario dar de alta un nuevo cliente, simplemente asociarlo como contacto del cliente principal. También existe el escenario en el que varios clientes estén relacionados pero pertenezcan a un grupo. Por ejemplo un matrimonio con dos mascotas distintas. A la gerencia de la clínica le va a interesar acceder a la información de forma conjunta como por separado. ICAROVET permite llevar un control sobre la información económica y de facturación, pudiendo crear nuevas ventas, facturas, etc, y tener un acceso rápido a la información de gastos del cliente dentro de la clínica. Existe además un historial de visitas y de citas que hayan realizado los clientes. Desde esta sección de clientes también se podrá tener acceso a la gestión de mascotas, que explicaremos a continuación. Mascotas En la gestión de mascotas se puede almacenar información específica de cada mascota, como puede ser el número de chip, número de pasaporte, fechas de nacimiento, baja, especie, etc. Además de toda esta información existe un sistema de recordatorios para la mascota. Los recordatorios serán eventos de algún tipo determinado como puede ser una vacunación, desparasitación, etc. que tienen que realizarse en alguna fecha o fechas concretas. En dicho sistema se distinguen entre recordatorios periódicos y no periódicos. En los recordatorios periódicos se podrán generar avisos para periodos de tiempo concretos, dependiendo de la frecuencia del evento. Por ejemplo una vacunación mensual podrá generar doce avisos para un periodo anual. Los recordatorios no periódicos son más simples y solo almacenan información sobre la fecha prevista, la fecha de realización y la información relativa al recordatorio. También se puede consultar y gestionar toda la información relativa al historial clínico de una mascota, es decir, se pueden ver historiales de pesos, vacunaciones, recordatorios o consultas realizadas en la clínica. Por último se permite asociar ficheros externos a la ficha de la mascota, por
12 CAPÍTULO 3. SISTEMA DESARROLLADO ejemplo esto es útil si tenemos los resultados de un análisis en formato pdf y lo queremos asociar a la ficha de la mascota a la que pertenecen dichos análisis. Visitas La última parte de esta sección corresponde a las visitas de un cliente a la clínica. En el módulo de visitas podremos almacenar información sobre el cliente que realiza la visita, el tipo de visita realizada (normal, urgencias, etc.) y el resto de información administrativa de una visita. Además una visita normalmente tendrá asociada consultas. Las consultas están relacionadas con una mascota del cliente que realiza la visita, y tendrán información específicamente clínica como puede ser la historia, síntomas, tratamiento, etc. Por último en cada visita se podrán crear albaranes y facturas asociados al cliente que la realiza y a la propia visita. Así se podrá tener información sobre los gastos que realiza un cliente en sus visitas a la clínica. 3.1.3. Economía Esta sección de la aplicación es la que se encarga de gestionar la economía de la empresa, que incluye ventas e ingresos, así como los gastos de la clínica. Por esta distinción ICAROVET tiene dos secciones diferentes, gastos e ingresos. Y como constante en la aplicación, aquí también podemos filtrar todos estos datos para ver información útil como los albaranes que aun no han sido facturados, facturas que todavía no se han pagado, etc. El desarrollo de este módulo se ha realizado teniendo en cuenta en todo momento la legislación vigente [11]. Ingresos La gestión de ingresos engloba la administración de albaranes y facturas. Los albaranes podrán tener información sobre el cliente al que se está vendiendo algún servicio o cobrando algún trabajo. Además de la información del cliente, en los albaranes podremos ver los servicios disponibles en la clínica, viendo precios de estos artículos y calculando automáticamente datos útiles como pueden ser descuentos según el tipo de cliente, o llevando el control de stock en caso de que sea la venta de un artículo que tenga el control de stock activado. También existe la información sobre las líneas de factura que son lo que saldrá finalmente en la factura, en caso de facturar el albarán, y que tienen toda la información económica necesaria para llevar la contabilidad de ingresos de una empresa. Además en nuestra aplicación se permite la separación de ingresos según el lugar de la clínica que realice la venta. Es decir, se pueden separar los ingresos dependiendo, por ejemplo, de si son de la clínica o de la tienda que hay en la clínica. Se puede ver la información asociada a los pagos de albaranes o facturas, es decir, fechas en las que se realizan los pagos, métodos de pagos o la posibilidad
3.1. ICAROVET 13 de realizar pagos fraccionados. Por último se pueden generar facturas usando CrystalReports con un formato atractivo para imprimir al cliente la factura cuando realiza una visita o una compra en la clínica. Gastos En esta sección se puede gestionar la información asociada a los albaranes y facturas que realizan principalmente proveedores a la clínica veterinaria. Para ello posee un sistema similar al de los ingresos en cuanto a las líneas de factura y los pagos, pero teniendo en cuenta que en este apartado no hay que generar códigos de facturas, sino que la clínica veterinaria es la que tiene que realizar el pago y el código de factura viene generado por el vendedor externo. Además de dicha información, en la sección gastos se pueden categorizar las facturas para asociar el gasto a proveedores, lugar de la clínica o agruparlas según criterios administrativos de la clínica para la posterior generación de informes. Toda la información de ingresos y gastos que existe en la aplicación se usa para una de las funciones más importantes de la sección económica de ICAROVET, la generación de un informe de gastos e ingresos. Dada una fecha de inicio y una fecha final, la aplicación analizará todas las facturas de gastos e ingresos, y generará un informe detallado en formato Excel, en el que por un lado separará los gastos según la categoría a la que pertenecen y según el grupo o el proveedor al que pertenecen y por otro separará los ingresos según el lugar de la clínica al que pertenezcan. Estos informes son una herramienta muy útil para llevar la contabilidad de la empresa y facilitar decisiones empresariales según la relevancia de la información recuperada. 3.1.4. Almacén La aplicación gestiona toda la información relacionada con un almacén de una clínica veterinaria en esta sección. Se distinguen tres subapartados: servicios, proveedores y pedidos. Servicios Esta sección está dividida en dos tipos de servicios: artículos y trabajos. La diferencia entre éstos es que los artículos son objetos de venta, y los trabajos son servicios que ofrece la clínica por un precio, como puede ser realizar una consulta, ir de urgencia a algún sitio, etc. Dentro de los artículos se puede gestionar la información sobre los precios de compra a proveedores de dicho artículo, para luego comprobar margenes de beneficio, asignar precios según el tipo de cliente, valorar posibles descuentos, etc. También se puede controlar la información sobre los pedidos existentes en el sistema sobre los artículos. Para los servicios se puede poner un precio mínimo y un precio
14 CAPÍTULO 3. SISTEMA DESARROLLADO máximo, que será luego orientativo para decidir al crear un albarán el precio que se le cobra a un cliente. Se ha implementado un control de stock para los servicios de la clínica. Las funcionalidades del control de stock serán mantener actualizado el número de unidades disponibles de un servicio en la clínica, aumentando dichas unidades cuando se reciben los pedidos, y decrementando las unidades cuando se realiza una venta de dicho servicio. También sirve este control de stock para avisar en la agenda de los empleados en caso de que el número de unidades disponibles de un artículo baje de un mínimo marcado en la ficha del servicio. Por último el control de stock posee la funcionalidad avanzada de llevar un control por lotes, para así saber no solo el artículo que se está vendiendo, sino también llevar el control de stock del artículo según el lote para controlar las fechas de caducidad. Además se enlaza con la agenda para avisar en caso de que haya artículos que están a punto de caducar. Proveedores En este apartado se gestiona la información de los proveedores, datos empresariales, formas de contacto y todos los datos necesarios de un proveedor para poder decidir si usar dicho proveedor en la clínica. Pedidos En esta sección del almacén se puede acceder a la información de los pedidos de la clínica. El proceso de un pedido viene dividido en cuatro estados: pendiente de realizar, realizado, recibido parcialmente y completado. Se gestiona la información sobre fechas en las que se realizó el pedido, proveedor utilizado, así como una lista de artículos y unidades pedidas y recibidas para mantener el control de stock en caso de que sea necesario porque está activada la opción de control de stock. 3.1.5. Agenda El módulo de la agenda se encarga de llevar el día a día de los usuarios de ICAROVET, para que puedan encontrar con facilidad sus tareas dentro de la clínica. Este módulo se divide en tres apartados: citas, tareas y ver agenda. Citas Esta parte de la aplicación consiste en asignar citas de clientes con empleados. Se puede configurar el horario y el lugar dentro de la clínica donde dará lugar dicha cita. También es posible controlar el estado y la prioridad de las citas que luego se verá reflejado en la agenda. Tareas La zona de tareas está dirigida hacia trabajos internos de la clínica. Se puede asignar una fecha determinada o no, un empleado encargado de dicha tarea y el lugar de la clínica a la que pertenece la tarea. También es posible
3.1. ICAROVET 15 controlar el estado y la prioridad de las tareas que luego se verá reflejado en la agenda. Ver Agenda La agenda es una de las partes más importantes de la aplicación. El apartado visual básico del calendario se ha obtenido de Codeprojet [3]. Se ha modificado el código de ese calendario para conectarlo a la base de datos utilizada por ICAROVET, filtrar y mostrar eventos con colores según el estado y la prioridad de los elementos de la agenda. La agenda tiene varios modos de visualización. El primero de ellos es la vista de un único día, donde se puede ver el horario diario. El segundo modo es semanal, donde se pueden ver varios días con su horario diario, y el último modo es el mensual donde se ven varías semanas de una manera más comprimida. La agenda contiene la información sobre citas, tareas, recordatorios de mascotas y artículos con poco stock o a punto de caducar. Se pueden añadir nuevos elementos de citas, tareas y recordatorios en este mismo menú usando el apartado visual de la agenda. Además existen filtros para ver los elementos de la agenda de algún empleado en concreto o de todos los empleados de la clínica, por supuesto si se tiene permisos para ello. Si el empleado solo puede ver su agenda los filtros no le permitirán acceder a otra información que no sea la suya. 3.1.6. Configuración ICAROVET permite también configurar la información que aparece en distintos lugares del sistema, como por ejemplo la información que se muestra al crear una factura para el cliente (cabeceras, dirección de la clínica, etc.), los datos del servidor de correo utilizado para enviar notificaciones por correo electrónico a clientes o los colores para ciertos listados de la aplicación, donde por ejemplo se pueden ver las facturas no cobradas de color rojo para que quede visualmente más destacado. Esta información se guardará en un fichero XML en el directorio donde la aplicación esté instalada y se carga al iniciar la aplicación o en el menú de configuración. 3.1.7. Otras funcionalidades ICAROVET también posee otras funcionalidades interesantes pero independientes de las anteriores y sin entidad como para suponer un subapartado propio, que se presentan a continuación. Existe una opción para crear plantillas de correo y enviar correos electrónicos a clientes de la aplicación. Esto es útil para tener, por ejemplo, una plantilla de correo con un modelo de recordatorio de vacunación, y rápidamente
22 CAPÍTULO 4. CONCLUSIONES Despliegue y mantenimiento (abril 2011- mayo 2011) En esta fase se realizó el despliegue en un servidor real de la Clínica Veterinaria Sinaí y se realizó una validación del cliente de la aplicación creada para más tarde sacar una versión que mejorará las funcionalidades de la versión inicial amoldándolo todavía mas a las necesidades del cliente. Figura 4.1: Cronógrama del desarrollo El desarrollo de este Proyecto Fin de Carrera se planteó de manera inicial para acabar en Marzo del 2011, y depositarlo en Abril del 2011. Los planes iniciales de las fases de análisis y diseño se fueron cumpliendo según los plazos esperados. Sin embargo, la inclusión de varios módulos que se incluyeron como opcionales en la propuesta provocaron retrasos durante la fase de implementación y que la entrega del proyecto se pospusiera un par de meses respecto al planteamiento inicial. El desarrollo final en el tiempo del sistema de información creado se puede ver en detalle en la Figura 4.1. 4.4. Opinión personal El trabajo realizado ha sido muy satisfactorio y me ha aportado muchos conocimientos de ingeniería en todos los niveles del desarrollo de software. En primer lugar, tratar con un problema que no tiene relación directa con la informática, como es la gestión y administración de una clínica veterinaria, y llegar a comprender lo que quiere el dueño de ésta. He comprendido en un ejemplo real que el cliente final
4.4. OPINIÓN PERSONAL 23 no es un ingeniero en informática, que aunque parezca evidente es muy importante. Por ejemplo, puedes haber desarrollado un software muy completo y con una base tecnológica impactante para darte cuenta de que cuando el cliente espera un botón para facilitar una cosa, el software no le parece bueno hasta que no lo tiene. Creo que esta experiencia me va a ser de mucha utilidad cuando desarrolle aplicaciones para otros clientes. Por otro lado es muy agradable haber podido, tras cinco años de carrera, tocar muchas y muy diversas tecnologías que no había utilizado durante la carrera y darme cuenta de que gracias a los conocimientos adquiridos la curva de aprendizaje ha sido muy ligera. Tanto C# [34] y la plataforma .NET [13], Zend Framework [23] [32], Jquery [35], y el resto de tecnologías y herramientas utilizadas en este Proyecto Fin de Carrera me aportan una base de conocimientos tecnológicos para mi vida laboral. Además de conocer tecnologías y haber programado muchas horas con ellas, se ha realizado el despliegue en un entorno real y es algo que también es muy interesante para mí, ya que en la carrera no se tiene demasiadas oportunidades para hacer despliegues de verdad. La parte negativa de este proyecto viene con la implementación de una cantidad importante de formularios. Como en este Proyecto Fin de Carrera me tocaba hacer de ingeniero y también de programador y encargado de hacer todo, muchas veces terminaba siendo una programación demasiado repetitiva y aburrida, cuando en este caso con un equipo de desarrollo colaborando podría haberme centrado más en los papeles interesantes de un ingeniero, como puede ser el diseño de la aplicación. La informática tiene muchos campos interesantes y estar meses programando algo que puede llegar a ser aburrido y no supone un reto en ciertos momentos, no es algo demasiado agradable, y más cuando varios meses de mi Proyecto Fin de Carrera se solaparon con mi incorporación laboral en una empresa, acumulando demasiadas horas de trabajo al día. Lo bueno es que al final con trabajo y constancia se acabó consiguiendo acabar el proyecto y obtener un buen resultado. Quitando esta parte negativa, la mayoría de las cosas que me ha aportado este proyecto son buenas tanto por lo aprendido como por lo trabajado. La mejor sensación que me deja este Proyecto Fin de Carrera, además de por supuesto obtener el título de ingeniero tras unos cuantos años, es ver un sistema desarrollado por mí en funcionamiento y que le puede ser de mucha utilidad a la dueña (y también familia) de la Clínica Veterinaria Sinaí.
24 CAPÍTULO 4. CONCLUSIONES
Bibliografía [1] Learning PHP and MySQL. 2006. [2] Wiley: PHP & MySQL Web Development All-in-One Desk Reference For Dummies. 2008. [3] Calendar View de Codeproject. Visualización de una agenda personal, 2011. http://www.codeproject.com/KB/docview/WinFormsCalendarView.aspx. [4] Características Zend Framework, 2011. http://framework.zend.com/about/overview. [5] Comparativa de PHP vs ASP vs ASP.NET, 2011. http://www.bizfive.com/articles/web-design/comparing-php-and-asp.net/. [6] ERP Definition, 2011. http://www.erpdefinition.net/. [7] Google Maps, 2011. http://maps.google.es/. [8] InnoDB vs MyISAM, 2011. http://www.tufuncion.com/myisam-vs-innodb. [9] MySQL, 2011. http://mysql.com/. [10] MySQL Workbench, 2011. http://wb.mysql.com/. [11] Noticias jurídicas y legislación vigente, 2011. http://noticias.juridicas.com/base_datos/. [12] ORACLE, 2011. http://www.oracle.com/es/index.html. [13] Página de Microsoft sobre .NET, 2011. http://www.microsoft.com/net/. [14] Página oficial de Apache, 2011. http://www.apache.org/. [15] Página oficial de Eclipse, 2011. http://www.eclipse.org/. [16] Página oficial de JAVA, 2011. http://www.java.com/es/. [17] Página oficial de Tortoise-SVN, 2011. http://tortoisesvn.tigris.org/. 25
26 BIBLIOGRAFÍA [18] Página Web Oficial de la Clínica Veterinaria Sinaí, 2011. http://www.sinaiveterinaria.com/. [19] SQL Server, 2011. http://www.microsoft.com/spain/sql/2008/default.aspx. [20] SQL Server VS MySQL vs ORACLE comparativa, 2011. http://www.microsoft.com/sqlserver/en/us/default.aspx. [21] Web oficial del ERP QVET, 2011. http://www.qvet.net/. [22] Web oficial del ERP WINVET, 2011. http://www.qcompusoft.com/. [23] Zend Framework, 2011. http://framework.zend.com/. [24] C. Michael Pilato Ben Collins-Sussman, Brian W. Fitzpatrick. Version Control with Subversion. 2010. [25] Devin Rader Bill Evjen, Scott Hanselman. Professional ASP.NET 3.5: In C# and VB. 2008. [26] Johnson R. Vlissides J. Gamma E., Helm R. Design Patterns: Elements of Reusable Object-Oriented Software. 1995. [27] VALDURIEZ P. GARDARIN G. Relational Databases and Knowledge Bases. 1989. [28] W.Jason Gilmore. Beggining PHP and MySQL. 2010. [29] SILBERSCHATZ A. KORTH H. Database System Concepts. 1986. [30] Rasmus Lerdorf. OReilly: Programming PHP. 2006. [31] Luis Muñiz. ERP Guía práctica para la selección e implantación. 2004. [32] Armando Padilla. Beggining Zend Framework. 2009. [33] Herb Schildt. Java Programming Cookbook. 2008. [34] Rafael Caballero Roldán Yolanda Cerezo López, Olga Peñalba Rodríguez. Iniciación a la programación en C#: un enfoque práctico. 2007. [35] Richard York. JavaScript and CSS Development with JQuery. 2009.
Anexos 27
Apéndice A Análisis y diseño Este anexo contiene la documentación técnica relevante generada durante las fases de análisis y diseño del proyecto. En el apartado de análisis recoge la información recibida con el cliente, para hacer un análisis funcional de los requisitos del sistema. En el apartado de diseño se muestran los diagramas más representativos y que más importancia han tenido a la hora desarrollar el sistema a posteriori, es decir, se centra en aspectos de arquitectura del sistema y sobre todo en el diseño de la base de datos utilizada. A.1. Análisis El sistema de información a desarrollar se encargará de la gestión integral de una clínica veterinaria. Tras las entrevistas con el cliente de la clínica se llega a las conclusiones de que se desea una aplicación que se gestione toda la información que entra en la empresa, y que controle también los procesos internos. Los principales objetivos son la gestión de clientes, la gestión económica de la empresa, el control sobre el almacén clínico y herramientas para facilitar el trabajo diario, llevando una agenda con todos los eventos que se pueden dar en la clínica. Por lo tanto se puede dividir el desarrollo del sistema en los siguientes módulos: clientes y mascotas, economía, agenda, almacén y el sistema de usuarios. A.1.1. Clientes y mascotas Este apartado será el encargado de gestionar un gran porcentaje de la información que recibe una clínica veterinaria, ya que manejará los datos de los clientes y de sus mascotas, así como de todas las visitas que los clientes hacen a la clínica con todos los datos que estos procesos generan. Los clientes pueden ser personas físicas u organizaciones, como puede ser una protectora de animales. En caso de ser una 29
30 APÉNDICE A. ANÁLISIS Y DISEÑO organización, se podrán añadir contactos a dicha organización, que funcionarían como representantes de ésta. Para los clientes que son personas físicas se necesitarán todos sus datos personales, DNI, nombre, apellidos, dirección, teléfono, etc. Además debe existir un lugar para visualizar la información económica sobre sus gastos y los pagos que ha realizado dicho cliente. Esto permitirá realizar filtros de clientes para ver listados interesantes como clientes que tienen pagos pendientes o clientes que más beneficio generan a la empresa. También es conveniente almacenar la información sobre su ultima fecha de visita a la clínica, su historial de compras y por supuesto las mascotas asociadas al cliente. Existirá también un apartado con preferencias de compra del cliente y su periodicidad para tener una posible información sobre el consumo que puede hacer el cliente en la clínica. La aplicación permitirá la asociación de varios clientes como uno solo a efectos prácticos. Esto puede ser útil para por ejemplo parejas de clientes que cada uno tiene sus mascotas pero a la hora de visitar la clínica cualquiera de los dos suele pagar lo del otro, o llevar la mascota del otro a la clínica con lo que en el albarán creado por la visita no tendrá que salir el nombre del dueño de la mascota, sino de la persona que paga. Así la información económica pasará a ser conjunta en un principio. Se seguirá pudiendo desglosar la información por cliente individual o disociar a los clientes. Para gestionar las mascotas se almacenará la información personal de dicha mascota: nombre, número de chip, especie, raza, etc. Si una mascota fallece, se podrá dar de baja indicando la fecha de defunción. Las mascotas podrán cambiar de dueño y en el caso de que haya visitas pasadas o gastos no pagados estos seguirán asociados a su cliente anterior. Además de los datos personales, las mascotas tendrán un historial de consultas a la clínica con la información detallada de cada una de ellas. También tendrán un apartado para recordatorios (posibles vacunas, desparasitaciones, visitas futuras, etc.). Dichos recordatorios podrán ser periódicos en caso de que se repitan cada cierto periodo de tiempo determinado. Se podrá indicar una fecha con el día que se debería realizar el evento del recordatorio y otra con la fecha de la realización, por ejemplo una vacunación que debería hacerse un día pero se hace tres días más tarde. Existirá un apartado para subir documentos adjuntos a la mascota, como pueden ser radiografías, analíticas, imágenes, etc. Se podrá gestionar a su vez las visitas de un cliente a la clínica. En una visita se podrá añadir información sobre ésta como puede ser una descripción, el tipo de visita o unas observaciones y luego se podrá guardar datos sobre la consulta a las mascotas, es decir, la historia, los síntomas, el diagnóstico, el tratamiento o la próxima revisión. Además se podrá crear albaranes y facturas asociados al cliente que ha visitado la clínica. En caso de que en una visita traiga varias mascotas se podrá ir añadiendo varias consultas de una en una a la misma visita. Podemos concluir con que los requisitos funcionales de este módulo son las
A.1. ANÁLISIS 31 siguientes: Añadir y modificar la información de los clientes Convertir un cliente en inactivo Añadir y modificar la información de las mascotas Cambiar el dueño de una mascota Dar de baja una mascota Añadir una visita del cliente con una o más mascotas. Asociada a la visita se podrá crear un albarán con gastos del cliente. A.1.2. Caja El módulo caja será el encargado de organizar toda la información económica de la clínica veterinaria. Para ello será necesario dividirlo en dos partes. La primera de ellas estará dedicada a los ingresos, y la segunda a los gastos. En este módulo tanto como para ingresos como para gastos se trabajará con albaranes y con facturas. Por ejemplo un cliente al hacer una visita, para cobrarle el trabajo y los productos que pueda adquirir, se creará un albarán con esa información. Más tarde a partir de uno o más albaranes se podrá crear una factura a dicho cliente. En una clínica los gastos e ingresos pueden venir de diferentes fuentes así que al igual que en los albaranes creados en las visitas, se guardará si la fuente de ingresos o gastos es la clínica, la tienda, la peluquería, etc. También será necesario en este módulo tener una lista de proveedores para la clínica. Para el apartado gastos podremos crear albaranes, que tendrán asociado un número de albarán y un proveedor, así como el tipo de gasto del que se trata (clínica, tienda, etc.). De un albarán querremos saber además si esta facturado o no y si hay algo pagado. Además se podrá seleccionar varios importes en un albarán dependiendo de si hay IVAs diferentes. Es decir en el mismo albarán podemos tener una parte con 1000$ de total bruto al 7% de IVA y otra parte con 2000$ de total bruto al 12% IVA. Se podrán seleccionar uno o más albaranes del mismo proveedor para crear una factura. En la factura tendremos la información de los albaranes, además de la fecha en la que se ha realizado la factura, la forma de pago, y la cantidad pagada hasta el momento. Tanto en las facturas como en los albaranes se podrá indicar que es un abono en el caso necesario. En dicha factura se podrá añadir varios vencimientos con importes parciales junto con la fecha de dichos vencimientos. A la hora de crear una factura se elegirán varias opciones para clasificar el tipo de gasto por niveles y poder crear un informe con los gastos desglosados de la
38 APÉNDICE A. ANÁLISIS Y DISEÑO Este es el esquema inicial que sirvió como base para desarrollar la aplicación. La explicación detallada del esquema entidad-relación se muestra con el esquema final, que se encuentra en el apartado siguiente. Figura A.3: Diseño entidad relación inicial(parte2)
A.2. DISEÑO 39 A.2.3. Modelo de datos final En esta sección se explica el modelo de datos de ICAROVET, separado por diferentes zonas del esquema y únicamente con los atributos y entidades relevantes para que se pueda entender con más facilidad.
40 APÉNDICE A. ANÁLISIS Y DISEÑO Figura A.4: Sistema de acceso de usuarios La primera parte es la que viene dada por la Figura A.4. Este esquema detalla el sistema del sistema de usuarios implementado. La entidad usuarios representa el personal de la clínica que tiene acceso a ICAROVET, del cual se recogen datos personales, usuario y contraseña para acceder a la aplicación. Un usuario puede pertenecer a grupos de los cuales se guarda una descripción. Los grupos tendrán un perfil asociado y la entidad usuario podrá tener a su vez un perfil asociado. Después tenemos las secciones de la aplicación, donde se guardará la información de una sección y sus permisos. Por ejemplo una sección de un listado de clientes que tenga opciones de visualización, borrado, modificación e inserción. La relación
A.2. DISEÑO 41 entre secciones de padre e hijo, es para saber si una sección de la aplicación tiene hijos, y si un usuario no tiene acceso al padre no podrá tener acceso al hijo. Por último existe la relación entre un perfil y una sección, un perfil puede estar asociado a muchas secciones, y muchas secciones pueden tener diferentes privilegios para muchos perfiles. Es una relación N-M. En la relación tenemos los atributos de ver, modificar, borrar e insertar para saber si dicho perfil tiene esos permisos para una sección en concreto. Figura A.5: Relaciones con el usuario El esquema de la Figura A.5 muestra las relaciones de los usuarios con otras entidades del modelo, más concretamente con las que tiene relación en la agenda, exceptuando los recordatorios que aparecerán mas adelante al explicar la entidad cliente. Podemos ver la relación que tiene un usuario con citas y tareas, ambas son relaciones 1-N, es decir, un usuario podrá tener de cero a N citas o tareas, y una cita o tarea puede pertenecer como máximo a un usuario. Las citas son para representar un encuentro con un cliente, con una fecha de inicio y una fecha de finalización conocidas. También puede conocerse el sitio de la clínica donde se tendrá lugar dicha cita. Las tareas no tienen relación con el cliente, pueden tener fecha o no, y puede también relacionarse con algún sitio de la clínica. Tanto citas como tareas tienen campos de estado y prioridad para facilitar su organización en la agenda.
42 APÉNDICE A. ANÁLISIS Y DISEÑO Figura A.6: Clientes, mascotas, visitas y consultas El esquema de la Figura A.6 detalla el modelo de datos para clientes y sus entidades relacionadas, excepto las mascotas y la economía que se explicará en los posteriores esquemas. Un cliente puede ser una empresa o una persona y de un cliente se almacenarán todos los datos personales necesarios, información económica, datos administrativos y toda la información necesaria para una ficha de cliente en este tipo de aplicaciones. Hay dos tipos de relaciones entre clientes, contactos y asociación. La relación de contactos es 1-N puesto que una persona solo puede ser contacto de un cliente, y la de asociación es N-M puesto que un cliente puede tener varios asociados, y a su vez ser asociado de varios clientes. Un cliente pertenece a un tipo de cliente, como puede ser VIP, normal, etc. El cliente está relacionado con las mascotas 1-N, una mascota solo puede tener un dueño, y un dueño puede tener de 0 a N mascotas. Por último vemos que un cliente está relacionado con visitas 1-N, un cliente puede realizar de 0 a N visitas y una visita es de un cliente. Por último una visita puede tener relación con varias mascotas de dicho cliente, ya que se pueden hacer varias consultas en la misma visita. Una mascota puede recibir consultas a su vez en varias visitas.
A.2. DISEÑO 43 Figura A.7: Mascotas El esquema de la Figura A.7 detalla el modelo de datos para las mascotas. Una mascota puede tener una relación con ficheros adjuntos 1-N, es decir, una mascota puede tener N ficheros y un fichero solo puede pertenecer a una mascota. En el fichero se guarda la ruta para encontrarlo en la red y una descripción. Una mascota está relacionado con recordatorios y su historial de pesos 1-N. En el recordatorio se guardará la información sobre el tipo de recordatorio del que se trata, si es periódico o no, y un listado de fechas para el recordatorio en caso de que sea periódico. Por último hay una relación en caso de que el recordatorio este asignado a un usuario del sistema.
44 APÉNDICE A. ANÁLISIS Y DISEÑO Figura A.8: Servicios El esquema de la Figura A.8 muestra como está organizado el modelo de datos para el almacén del sistema. Por un lado tenemos tipo de servicio que puede ser artículo o trabajo. Del tipo de servicio se guarda toda la información económica y administrativa necesaria. Tiene una relación con tipo de cliente para conocer la información de posibles precios especiales según el tipo de cliente. Además de un artículo sale una relación a stock lotes, para tener la información del control de stock por lotes en caso de que sea necesario. Después tenemos la información sobre los pedidos, que tienen relación con los artículos N-M, un pedido puede constar de N artículos, y un artículo puede estar en M pedidos diferentes. En la relación se guardará también información relativa al número de unidades pedidas y recibidas. Por último existe la entidad proveedor, que estará relacionada con los pedidos, para
A.2. DISEÑO 45 Figura A.9: Economía saber a que proveedor se realiza un pedido, y con los artículos para conocer los precios de un artículo dependiendo de la fecha, y para conocer cual es el proveedor preferido de ciertos artículos. La última parte del esquema es la Figura A.9 que muestra el modelo de datos para facturas, albaranes y pagos de la aplicación. Un albarán y una factura solo pueden pertenecer a un cliente, y un cliente puede tener de 0 a N facturas y albaranes. Además un albarán y una factura pueden estar asociados o no a visita, en caso de que el albarán o la factura sea generado durante una visita. De albaranes y facturas se guardará toda la información económica necesaria en estos casos, si es un ingreso o un gasto y la relación con las líneas de factura que la componen. Una línea de factura además podrá estar vinculada a un sitio de la clínica para saber de que lugar viene en caso de que sea un ingreso. Por último, los albaranes y
46 APÉNDICE A. ANÁLISIS Y DISEÑO las facturas están relacionados con la entidad pago, que indica el pago de éstos, la fecha en la que se ha realizado el pago, el importe, el método y si se ha realizado el pago. Una vez diseñado el esquema entidad-relación para el sistema, se siguió un proceso básico de normalización, para asegurarse de que por lo menos estaba en segunda forma normal, y por último se paso a lenguaje SQL tomando alguna decisión de diseño físico. En cuanto a la normalización, está en primera forma normal puesto que ninguna entidad tiene atributos multievaluados, y también cumple la segunda forma normal, puesto que cumple la primera y no hay dependencias funcionales parciales, es decir, atributos no clave que dependen de parte de la clave. En cuanto a la tercera forma normal, en la fase de diseño lógico si que la cumplía puesto que no existían dependencias transitivas, pero a la postre no tiene importancia, porque el diseño físico iba a hacer que la tercera forma normal no se cumpliera. Las tablas grandes como clientes y mascotas, tienen algunos campos desnormalizados, como puede ser la actitud o la capa de una mascota. Esto es debido a que al consultar una mascota va a interesar siempre esa información y se puede evitar hacer joins innecesarios, cuando es una consulta constante en la aplicación y mantener la coherencia entre los datos no resulta nada costoso. Tras todo el proceso de diseño de la base de datos el script SQL generado para la primera versión de la aplicación se compone de setecientas líneas de fichero, dando a entender que la base de datos final de la aplicación es de tamaño considerable. A.2.4. Prototipos de funcionamiento de la aplicación En esta sección se muestran los prototipos creados durante la fase de diseño que intentan describir el funcionamiento básico del sistema de información a desarrollar. El sistema será una aplicación de ventanas cuya ventana principal tendrá diferentes opciones dependiendo del tipo de usuario conectado al sistema. Un usuario con todos los privilegios debería tener las opciones de la Figura A.10 como mínimo. Archivo En el menú Archivo un administrador podrá crear nuevos usuarios ver, editar y borrar usuarios rellenando los datos necesarios. Dentro de cada usuario podrá a su vez editar los privilegios que tiene dentro del sistema. En el apartado backups se podrá hacer copias de seguridad de la base de datos para intentar evitar pérdidas de información. Existe la opción de poner que te recuerde cada cierto número de días. También existe la posibilidad de restaurar el sistema a un backup antiguo. En principio se usará el sistema de backups del sistema gestor de la base de datos.
A.2. DISEÑO 47 Figura A.10: Prototipo 1 Clientes/Mascotas Tanto en clientes como en mascotas tendremos un listado, donde se mostrarán los datos del sistema acerca de ellos. Deben existir todos los filtros posibles para poder visualizar únicamente los clientes o las mascotas que desee la persona que esté utilizando la aplicación. Tras insertar un cliente con sus datos, la información que se debe mostrar al editarlo sería como mínimo la de la Figura A.11.
54 APÉNDICE A. ANÁLISIS Y DISEÑO con ICAROVET. La mayor diferencia se da en el sistema de mensajería creado explícitamente para la página Web y que se ha agrupado y filtrado la información de ICAROVET para que un cliente sólo vea lo que la clínica veterinaria desee. Figura A.15: Esquema entidad-relación de la página Web En el esquema por un lado se encuentran los usuarios que son los clientes registrados en la página Web, cuya asociación con los datos de ICAROVET vendrá dada por el campo código ICARO. El usuario tiene dos relaciones 1-N con los mensajes, una como emisor y otra como destinatario. Un usuario puede tener N mensajes de salida, y un mensaje solo puede haber sido enviado por un usuario, y el mismo razonamiento cumple la relación de mensajes de entrada. Luego un usuario se relaciona con citas 1-N también. Un usuario puede tener N citas con la
A.2. DISEÑO 55 clínica, y una cita es siempre de un único usuario. La cita tiene fecha, descripción y lugar donde se da la cita. Por otro lado tenemos la relación de un usuario con sus mascotas 1-N, un usuario puede poseer N mascotas, y la mascota sólo tiene un dueño. De la mascota se almacena parte de la información que había en ICARO. Una mascota a su vez tiene tres relaciones 1-N con las entidades peso, historial y recordatorios. Dichas entidades aportan información sobre el historial clínico de la mascota, aportando informaciones dependientes de alguna fecha. Por último está la entidad alertas Web que es la encargada de gestionar la información de las noticias y los anuncios de la página. El último problema al diseñar la página Web fue el traspaso de datos de la base de datos del servidor de la clínica a la base de datos del servidor Web, que en este caso no es la misma. La solución final implementada consiste en darle al usuario de la aplicación de escritorio una opción en el menú para actualizar los datos Web. Dicha opción lo que hace es consultar todos los clientes registrados en la base de datos del servidor Web y su campo código ICARO. Utilizando ese campo recupera toda la información de dichos usuarios, sus mascotas e historiales y sus citas en la base de datos de ICAROVET, y actualiza la base de datos del servidor Web.
56 APÉNDICE A. ANÁLISIS Y DISEÑO
Apéndice B ICAROVET en funcionamiento En esta sección están las guías de funcionamiento para los usuarios tanto de ICAROVET como de ICAROVET Web, junto con imágenes del sistema y del portal Web. B.1. ICAROVET Una vez instalado ICAROVET ejecute la aplicación para entrar en el sistema. La primera vez que se ejecute el sistema pedirá unos datos para la configuración correcta de la aplicación. Esta pantalla es la misma que se puede modificar más tarde en el menú de configuración. Una vez realizado esto en la primera entrada a la aplicación podemos ver la pantalla de login de la Figura B.1. Aquí el usuario tiene que rellenar su nombre de usuario y su contraseña correctamente para entrar en el sistema. Una vez iniciada sesión saldrá una ventana que posee un menú superior con todas las opciones que tiene disponibles su usuario. Figura B.1: Pantalla de login 57
58 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO B.1.1. Listados Todos los listados de la aplicación tienen la misma estructura de botones y filtros. La estructura superior de botones nos permite crear, modificar, borrar, imprimir o exportar a excel en el listado en el que se encuentre el usuario. También hay unos filtros superiores para cada columna del listado cuya misión es restringir la búsqueda por palabras, por fechas o por algún tipo de selector, dependiendo del tipo de dato que contenga dicha columna. Estos filtros facilitan las búsquedas de información al usuario. Además algunos listados como el de la Figura B.8 poseen selectores para indicar opciones adicionales, como mostrar empresas o clientes inactivos. En todos los listados de la aplicación al hacer doble click sobre una de las filas se abrirá la ficha con la información de dicho elemento para modificación. B.1.2. General En el menú general están disponibles las opciones de administración de usuarios, copias de seguridad, y actualización Web como se puede ver en la Figura B.2 Figura B.2: Menú general
B.1. ICAROVET 59 La primera opción disponible es la de usuarios, donde podrá crear, modificar y borrar usuarios del sistema con los botones superiores del listado. En la Figura B.3 podemos ver el listado de usuarios, así como el formulario abierto de inserción de un nuevo usuario. El formulario de inserción o modificación de usuario tiene los siguientes campos para rellenar: usuario y contraseña, el perfil al que pertenece el usuario, su nombre y apellidos y una descripción. Figura B.3: Listado de usuarios y formulario de inserción
60 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO La segunda opción del menú general es la de grupos. En este apartado podemos administrar los grupos, crear, editar y borrar los grupos, así como los usuarios que hay en ellos. Podemos ver una imagen del listado de grupos y el formulario para gestionar sus usuarios en la Figura B.4. El formulario para añadir o modificar un grupo pide una descripción y un perfil asociado. Una vez creados los grupos para añadir usuarios a los grupos hay que darle al botón agregar y se visualizará una ventana como la de la Figura B.5. En dicho formulario salen arriba todos los usuarios del sistema que no pertenecen al grupo, y se pueden añadir al grupo presionando incluir o incluir todos. Para quitar usuarios de un grupo se pueden seleccionar usuarios del listado inferior y presionar quitar o quitar todos. Figura B.4: Listado de grupos
B.1. ICAROVET 61 Figura B.5: Formulario de agregar o quitar usuarios a un grupo La última opción del menú general de administración de usuarios es perfiles. En esta sección podemos ver un listado con opciones de crear, editar y borrar perfiles como se puede ver en la Figura B.6. En el formulario de nuevo perfil están los permisos disponibles para las diferentes secciones de la aplicación como se puede ver en la Figura B.7. El botón de todos y ninguno facilita seleccionar o borrar la selección de todos los permisos con un solo click.
62 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Figura B.6: Listado de perfiles Figura B.7: Formulario de inserción de un nuevo perfil La siguiente opción del menú general es la de hacer copias de seguridad. Si pulsamos sobre ella podremos ver dos opciones como vemos en la Figura B.8, hacer copia de seguridad de la base de datos actual y restaurar la base de datos a partir de alguna copia guardada. La primera opción preguntará por la ruta donde guardar el fichero con la copia de la base de datos y la segunda opción abrirá un
B.1. ICAROVET 63 selector de ficheros para indicarle que copia restaurar. Figura B.8: Gestor de copias de seguridad Por último, la última opción del menú general es la de actualizar los datos de la página Web. Una vez presionada dicha opción los datos de ICAROVET que necesite la página Web se moverán a la base de datos de ICAROVET Web. Durante este proceso aparecerá una barra de progreso para informar del tiempo restante aproximado de la actualización.
70 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO En la pestaña de datos económicos de la Figura B.15 está el resumen de gastos del cliente, y de sus asociados en caso de que los tenga, así como información bancaria del cliente. Figura B.15: Ficha de clientes, pestaña de datos económicos
B.1. ICAROVET 71 En la pestaña historial de la Figura B.16 hay dos listados, uno con las visitas y otro con las citas del cliente a la clínica veterinaria. Figura B.16: Ficha de clientes, pestaña de historial
72 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Por último existe una pestaña de observaciones/otros de la Figura B.17 en caso de que se necesite apuntar algún otro tipo de información. Figura B.17: Ficha de clientes, pestaña de observaciones
B.1. ICAROVET 73 La segunda opción del menú de clientes y mascotas es la opción para gestionar mascotas. En este listado de la Figura B.18 están todas las mascotas existentes en la aplicación así como su información mas relevante para el listado principal. Si hacemos doble click sobre alguna de las mascotas o se crea una nueva se desplegará la ficha de una mascota. En la ficha podemos ver seis pestañas: general, recordatorios, historiales, consultas, observaciones y ficheros. Figura B.18: Listado de mascotas
74 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO La pestaña general de la Figura B.19 contiene toda la información básica de una mascota, información sobre su dueño, su raza, chip, etc. En esta ficha existen campos de formulario de fechas con selector, para cuando no se conoce dicha información se puede dejar sin rellenar si no se marca. Se pueden crear también en la ficha de la mascota nuevas especies, razas, capas, pelos y caracteres para facilitar la creación rápida de mascotas. También existe la posibilidad de crear nuevos pesos desde la pestaña general, con el botón de añadir nuevo peso. Figura B.19: Listado de mascotas
B.1. ICAROVET 75 En la pestaña recordatorios podremos gestionar recordatorios de la mascota. En la Figura B.20 se ve que los recordatorios pueden ser periódicos o no periódicos. Figura B.20: Ficha de mascota, pestaña general
76 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Para la ficha de un recordatorio se puede indicar el tipo de recordatorio del que se trata, una descripción, la fecha prevista para hacerlo y la fecha en la que realmente se produjo la realización, el encargado y unas observaciones. En el caso de los recordatorios periódicos tendremos una opción para generar las fechas de los recordatorios para ciertos periodos de tiempo como se ve en la Figura B.21. Por ejemplo, para generar un recordatorio mensual para el próximo año, se puede marcar la opción de un mes para los próximos doce meses, y se presiona el botón de generar fechas de recordatorios, y en el listado aparecerás las nuevas fechas. Figura B.21: Ficha de mascota, pestaña recordatorios
B.1. ICAROVET 77 En la pestaña historiales de la Figura B.22 esta la información sobre el historial de pesos y la opción de añadir nuevos pesos, así como un historial de consulta de eventos pasados como vacunaciones,desparasitaciones u otros. Figura B.22: Ficha de mascota, pestaña historiales
78 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO En la pestaña consultas dela Figura B.23 está la información a las visitas realizadas por el cliente en las que la mascota ha recibido una consulta. Figura B.23: Ficha de mascota, pestaña consultas
B.1. ICAROVET 79 La pestaña observaciones está para gestionar algún otro tipo de información. Por último en la pestaña ficheros (Figura B.24) existe la opción de subir nuevos ficheros a la red para tenerlos como adjuntos a la ficha de la mascota. Aquí se pueden adjuntar fotos, análisis, o cualquier tipo de fichero relacionado con la mascota. Figura B.24: Ficha de mascota, pestaña ficheros
86 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Al crear un nuevo ingreso vemos un formulario de detalle de albarán como el de la Figura Figura B.32. En el podemos indicar si es una venta rápida marcando cliente anónimo, y luego en la segunda línea del formulario podemos filtrar entre los clientes de la clínica por DNI o por nombre para seleccionar el cliente al que se realiza la venta Figura B.32: Ficha de albarán
B.1. ICAROVET 87 El siguiente listado muestra servicios de la clínica, cargando precios según el tipo de cliente y mostrando el control de stock en caso necesario como en la Figura Figura B.33. Figura B.33: Ficha de servicio en el albarán Una vez insertado los servicios se pueden convertir en línea de facturas, incluso agrupar varios en la misma línea de factura como se puede ver en la Figura B.34. En la parte inferior podemos ver el resumen económico del albarán. Figura B.34: Ficha de línea de factura
88 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO En la segunda pestaña se pueden gestionar los pagos como se ve en la Figura B.35 y la ficha de un pago donde se indica el método, la fecha, la cantidad y si el pago se ha realizado o no como en la Figura B.36. Una vez introducidos los datos del albarán se puede aceptar, o aceptar y facturar para crear la factura de dicho albarán a continuación. Figura B.35: Ficha de albarán, pestaña de pagos
B.1. ICAROVET 89 Figura B.36: Formulario de nuevo pago El listado de facturas es similar al de albaranes en cuanto a la información mostrada. El formulario de factura sin embargo posee campos diferentes para poder seleccionar los datos de facturación del cliente al que se realiza la factura como se puede ver en la Figura B.37. La gestión de pagos también es la misma que la vista previamente con los albaranes.
90 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Figura B.37: Ficha de nueva factura Sin embargo en el listado de facturas podemos ver un opción en el menú superior para imprimir una factura. Al pulsarlo se generará una factura mediante CrystalReports con el formato de la Figura B.38.
B.1. ICAROVET 91 Figura B.38: Ficha de nueva factura En cuanto a los listados de gastos también tienen una estructura similar a la de ingresos. Sin embargo los formularios para albaranes y facturas de gastos tienen algunos campos diferentes para adaptarlo a un gasto. El formulario de albaranes se puede ver en la Figura B.39. El formulario de facturas se puede ver en la Figura B.40 y contiene una pestaña más para la gestión organizativa de las facturas de gastos.
92 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Figura B.39: Ficha de nuevo albarán de gastos
B.1. ICAROVET 93 Figura B.40: Ficha de nueva factura, pestaña de clasificación
94 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO La opción del menú de venta rápida es un acceso rápido a la creación de un nuevo albarán.La última opción del menú es la de generar un informe pregunta entre dos fechas, una de inicio y una final como en la Figura B.41 y luego genera un excel con los gastos e ingresos con el formato que se puede ver en la Figura B.42. El informe hace un desglose de los gastos por proveedor y grupo, y en la parte inferior suma todos los ingresos dependiendo de la categoría del ingreso. Al final realiza los totales de los ingresos y gastos. Figura B.41: Generar informe de ingresos y gastos Figura B.42: Informe en Excel
B.1. ICAROVET 95 B.1.5. Almacén En el menú del almacén podemos gestionar artículos, trabajos, proveedores y pedidos El listado de artículos se puede ver en la Figura B.43. Figura B.43: Listado de artículos
102 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO En el formulario de detalle del pedido de la Figura B.50 tiene diferentes fechas a insertar, fecha de inserción del pedido en el sistema, fecha de realización del pedido y fecha en la que se ha completado. También se puede indicar el proveedor, el estado del pedido y los artículos. Por último se puede editar el estado del pedido y si se presiona el botón de completar pedido, el pedido pasa a estado completado y se marcan como recibidos todos lo artículos del pedido. Figura B.50: Ficha detalle de un pedido
B.1. ICAROVET 103 B.1.6. Agenda El módulo de la agenda tiene tres apartados: gestión de citas, gestión de tareas y ver la agenda. Tanto en citas como tareas podemos ver listados de ambos como se puede ver en la Figura B.51 y la Figura B.52. Figura B.51: Listado de citas Figura B.52: Listado de tareas
104 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO La Figura B.53 es el formulario de detalle de una cita, donde se puede elegir el cliente, el encargado de la cita, el lugar y la fecha, así como estado y prioridad para la agenda. Las tareas tienen una estructura parecida como se puede ver en la Figura B.54. Figura B.53: Ficha de una cita Figura B.54: Ficha de una tarea
B.1. ICAROVET 105 La agenda tiene el aspecto visual de la Figura B.55. Se ven claramente cuatro zonas claramente diferenciadas. La zona propia de la agenda donde se ven los eventos en un calendario, el calendario de meses, filtrado de información y un selector de listados sobre los eventos de la agenda. Haciendo click izquierdo sobre el calendario saldrá un menú contextual para crear una cita, tarea o recordatorio, que abrirá el formulario adecuado con la fecha indicada en la agenda. En la parte de filtros podemos seleccionar por usuarios las citas, tareas o recordatorios que aparecen en la agenda. Por último en la parte derecha vemos listados con la información que está apareciendo en la agenda y además también con información sobre artículos con poco stock y artículos a punto de caducar. Figura B.55: Agenda de ICAROVET, vista diaria
106 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Arriba podemos indicar el modo de selección sobre el calendario de meses. Así se podrá seleccionar manualmente, por día, por semana o por mes, cambiando la interfaz de la parte derecha como se ve en la Figura B.55 y la Figura B.56, donde la primera está en modo manual señalando un solo día y la segunda está en modo mensual. Figura B.56: Agenda de ICAROVET, vista mensual
B.1. ICAROVET 107 B.1.7. Configuración En este menú se podrá gestionar el envío de correos electrónicos y plantillas de correo de ICAROVET, la configuración y la creación de otros listados útiles. En la pantalla de configuración que se puede ver en la Figura B.57 se pueden modificar los datos de la clínica. Figura B.57: Configuración de ICAROVET
108 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO En la pestaña de la Figura B.58 se pueden modificar los datos del servidor de correo y base de datos, y en la última pestaña se pueden elegir los colores de ciertos listados. Figura B.58: Configuración de ICAROVET, servicios
B.1. ICAROVET 109 En el apartado listados de la Figura B.59 se pueden elegir sacar unos listados concretos, por ejemplo uno de los listados que aparecen sería el de la Figura B.60 con todo el historial clínico de una mascota. Figura B.59: Listados disponibles en ICAROVET Figura B.60: Ejemplo de listado del historial de una mascota
110 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Por último en la sección de plantillas de correo se pueden gestionar estos elementos creando nuevas plantillas con asunto y contenido como se puede ver en la Figura B.61. Figura B.61: Listado de plantillas
B.1. ICAROVET 111 Luego se pueden redactar correos electrónicos usando dichas plantillas, seleccionando los clientes a los que se enviará el correo con el selector o por DNI como se puede ver en la Figura B.62. Figura B.62: Ejemplo de redacción de un correo electrónico
118 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO La página del mapa sirve para indicar a los clientes como llegar a la clínica veterinaria, proporcionando un enlace a Google Maps [7]. Figura B.68: Situación geográfica de la clínica
B.2. ICAROVET WEB 119 La página de enlaces sirve para proporcionar los medios para contactar con otras páginas Web relacionadas de algún modo con la clínica veterinaria, como pueden ser enlaces a protectoras de animales. Figura B.69: Enlaces de interés
120 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO La página de contacto es donde se recopila toda la información para poder contactar por cualquier medio con la clínica veterinaria, ya sea teléfono, correo electrónico, en persona, etc. Figura B.70: Página de contacto
B.2. ICAROVET WEB 121 B.2.2. Zona privada Hay dos tipos de acceso a la zona privada: acceso de administrador y acceso de cliente. El acceso de administrador posee las características de gestión de los datos de la clínica, clientes, noticias, anuncios y mensajes. La página de la Figura B.71 muestra los datos de la clínica. El administrador puede modificar estos datos que se verán reflejados en la zona pública para cambiar teléfonos, horarios de la clínica o formas de contacto. Figura B.71: Página administración, datos de la clínica
122 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO La página de la Figura B.71 es para la administración de clientes, donde se puede ver un listado de clientes de la Web, con la posibilidad de crear nuevos, modificar los existentes o borrar alguno. Figura B.72: Página administración, gestión de clientes
B.2. ICAROVET WEB 123 En la página de datos de un cliente se muestra un formulario para rellenar la información de dicha persona. La primera vez que se crea un cliente se le envía un correo electrónico a la dirección indicada con la clave generada automáticamente por el sistema. El código de ICARO es el código del cliente en ICAROVET. Si tiene activo el selector de recibir notificaciones por correo se enviarán a los usuarios correos electrónicos cada vez que reciba un mensaje en el portal Web. Figura B.73: Página administración, crear nuevo cliente
124 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO La página para administrar noticias muestra un listado de las noticias de la Web. En el listado se muestra el estado, es decir, si esta visible para el público o no, la fecha de publicación y el titular. En este apartado se pueden crear nuevas noticias y modificar o borrar las ya existentes. Figura B.74: Página administración, noticias de la Web
B.2. ICAROVET WEB 125 La página de inserción de noticia posee un selector de fecha, áreas de texto para el titular y cuerpo de la noticia y por último un selector indicativo de si la noticia está visible o no. Figura B.75: Página administración, creación de una nueva noticia
126 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Los anuncios de la Web siguen una estructura similar al de las noticias. La diferencia es que van a una sección diferente de la página y que las noticias pueden llevar imágenes. Figura B.76: Página administración, anuncios de la Web
B.2. ICAROVET WEB 127 El formulario de inserción o modificación de un anuncio tiene los mismos campos que el formulario de noticia, añadiendo un selector de fichero que admite imágenes que se suben al servidor Figura B.77: Página administración, creación de un nuevo anuncio
134 APÉNDICE B. ICAROVET EN FUNCIONAMIENTO Por último los clientes tienen acceso al mismo sistema de mensajería que tenía el administrador. El único cambio es que un cliente solo puede enviar o recibir mensajes del administrador de la clínica. Figura B.84: Página cliente, enviar mensaje Si el cliente lo desea puede finalizar la sesión de usuario en la Web presionando salir, y volverá a la zona pública, en concreto a la portada de la página Web de la clínica.