diff --git a/1introduccion.tex b/1introduccion.tex index 2ca0d3a..82c9112 100644 --- a/1introduccion.tex +++ b/1introduccion.tex @@ -9,6 +9,7 @@ \section{Presentación} Tiene como objetivo establecer la naturaleza y funciones del sistema para su evaluación al final del semestre. Este documento debe ser aprobado por los principales responsables del proyecto. Este documento es el Documento de Análisis del proyecto “Fran Farmacias”. +Este proyecto se realiza para la solución de los multiples problemas que presenta la Franqucia de Farmacias "Fran Farmacias" los cuales son: Problemas de inventario por multiples perdidas de existencias en el almacen cuya causa es desconocida, Un balance financiero deficiente ya que los saldos de las sucursales tienen variaciones con respecto a las correspondientes, Un control no muy útil sobre los multiples empleados que operan en las sucursales asi como la distribución de medicamentos por parte de los proveedores. \section{para qué sirve.} Este documento sirve para un manejo optimo del sistema, presentamos y describimos la completa operación del sistema asi como sus posibles errores y soluciones.\\ diff --git a/2modelonegocio.tex b/2modelonegocio.tex index 3682ffa..4d907e8 100644 --- a/2modelonegocio.tex +++ b/2modelonegocio.tex @@ -432,7 +432,10 @@ \section{Modelo de Dominio del problema} \cdtEntityRelSection \brRel{\brRelComposition}{Lote}{El Ingreso tiene un Lote} - \brRel{\brRelComposition}{Lote}{El Ingreso tiene muchos proveedores} + \brRel{\brRelComposition}{Proveedor}{El Ingreso tiene muchos proveedores} + \brRel{\brRelComposition}{Proveedor}{El Ingreso tiene muchos proveedores} + \brRel{\brRelComposition}{Cajero}{El Ingreso lo registra un cajero} + \brRel{\brRelComposition}{Sucursal}{El Ingreso se realiza en una Sucursal} \end{cdtEntidad} @@ -492,178 +495,146 @@ \section{Modelo de Dominio del problema} %------------------------------------------------------ \newpage \section{Reglas del Negocio} -\begin{BussinesRule}{BR1}{Control de Acceso.} +%----------------------------------------------------------------------------------------- +\begin{BussinesRule}{BR1}{Desactivar Estado del empleado.} \BRitem[Tipo:] Regla de Autorización. - \BRitem[Clase:] Habilitadora. \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:] El acceso al Sistema sera manejado mediante un control de acceso, el cual solo permitira ingresar al sistema una vez que el Dueño,Supervisor o Cajero ingrese de manera correcta su Usuario y Contraseña. - \BRitem[Motivación:] Evitar posibles fraudes en las operaciones y funcionamiento del sistema de la farmacia. + \BRitem[Descripción:] Si el empleado renuncia al trabajo O decide no renovar su contrato con nosotros simplemente se le desactivara su cuenta, así podemos checar todas las operaciones que este Empleado reviso durante su estadía en la sucursal o sucursales que operaba + \BRitem[Motivación:] Evitar el acceso a todas las personas que no están registradas en el sistema o que no tienen un estado activado \BRitem[Ejemplo positivo:] \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] \hyperlink{CU1}{CU1}. \end{BussinesRule} -\begin{BussinesRule}{BR2}{Eliminar Un Medicamento.} - \BRitem[Tipo:] Regla de Autorización. - \BRitem[Clase:] Habilitadora. - \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:] Solo el dueño puede eliminar medicamentos que han sido registrados en el sistema. - \BRitem[Motivación:] Evitar posibles fraudes en las operaciones y funcionamiento del sistema de la farmacia. - \BRitem[Ejemplo positivo:] - \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] \hyperlink{CU3}{CU3}. -\end{BussinesRule} -%------------------------------------------------------------------------------------ -\begin{BussinesRule}{BR3}{Realizar Una Venta.} - \BRitem[Tipo:] Regla de Operacion. +%----------------------------------------------------------------------------------------- +\begin{BussinesRule}{BR2}{Caducidad del Medicamento.} + \BRitem[Tipo:] Regla de condición. \BRitem[Clase:] Cronometrada. \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:] El numero de medicamentos en el almacén debe de ser mayor a la cantidad solicitada por el cliente que se realiza al momento de la venta. - \BRitem[Motivación:] Evitar problemas con el inventario de la Farmacia . -\BRitem[Sentencia:] - \begin{displaymath} - Inventario>=Venta\\ - Inventario= CantidadInventario-Venta; - \end{displaymath} - \BRitem[Ejemplo positivo:] - \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] \hyperlink{CU5}{CU5}. -\end{BussinesRule} - -%------------------------------------------------------------------------------------ -\begin{BussinesRule}{BR4}{Aplicar Un Descuento.} - \BRitem[Tipo:] Regla de Operación. - \BRitem[Clase:] Ejecutive. - \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:] El dueño es la única persona con autoridad para aplicar, eliminar o modificar descuentos sobre los medicamentos, o aplicar Paquetes de medicamentos con descuento. Una vez determinados los medicamentos, se les aplicara el descuento que el Dueño proporcione. - \BRitem[Motivación:] Evitar perdida de dinero al dejar que los medicamentos que casi no tienen salida de almacén se queden guardados y terminen caducando. -\BRitem[Sentencia:] - \begin{displaymath} - MedicamentoConDescuento=Medicamento*Descuento\\ - \end{displaymath} - \BRitem[Ejemplo positivo:] - \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] CU13, CU14, CU15, CU16, CU17 + \BRitem[Descripción:] Un medicamento esta caduco cuando la fecha del medicamento es menor que la fecha actual + \BRitem[Motivación:] Evitar venta de medicamento caducado + \BRitem[Ejemplo positivo:] CaducidadMedicamentoFechaActual \end{BussinesRule} - -%------------------------------------------------------------------------------------ -\begin{BussinesRule}{BR5}{Abrir Turno de Caja.} - \BRitem[Tipo:] Regla de Integridad Referencial. - \BRitem[Clase:] Ejecutive. +%----------------------------------------------------------------------------------------- +\begin{BussinesRule}{BR3}{Reporte Mensual de Mes.} + \BRitem[Tipo:] Cronometrada. + \BRitem[Clase:] Condicional. \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:]Al inicio de cada jornada laboral el supervisor debe ser el que Abre el turno de caja para iniciar con las operaciones diarias de la farmacia. - \BRitem[Motivación:] Tener un Reporte de ventas que sea relevante y descriptivo sobre las operaciones de cierto periodo en la farmacia. + \BRitem[Descripción:] La fecha limite para Presentar el reporte de venta mensual de la sucursal sera los Dias 28 de cada Mes. + \BRitem[Motivación:] Control Económico de la sucursal rápido y eficaz. \BRitem[Ejemplo positivo:] \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] \hyperlink{CU27}{CU27}. \end{BussinesRule} - -%------------------------------------------------------------------------------------ -\begin{BussinesRule}{BR6}{Cerrar Turno de Caja.} - \BRitem[Tipo:] Regla de Integridad Referencial. - \BRitem[Clase:] Ejecutive. +%----------------------------------------------------------------------------------------- +\begin{BussinesRule}{BR4}{Cancelar una Venta.} + \BRitem[Tipo:] Habilitador. + \BRitem[Clase:] Autorización. \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:]Al final de cada jornada laboral el supervisor se encargara del cierre de caja. - \BRitem[Motivación:] Evitar Perdias de dinero en la farmacia y que al final de cada turno de caja las ventas realizadas coincidan con el reporte de ventas. + \BRitem[Descripción:] En dado caso de que el cliente cancele su compra, el Supervisor debe de cancelar la operación de venta. + \BRitem[Motivación:] Control sobre las acciones que puede realizar cada empleado \BRitem[Ejemplo positivo:] \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] \hyperlink{CU28}{CU28}. \end{BussinesRule} %----------------------------------------------------------------------------------------- -\begin{BussinesRule}{BR7}{Desactivar Estado del empleado.} - \BRitem[Tipo:] Regla de Autorización. - \BRitem[Clase:] Habilitadora. +\begin{BussinesRule}{BR5}{Cancelar una Venta.} + \BRitem[Tipo:] Habilitador. + \BRitem[Clase:] Autorización. \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:] Si el empleado renuncia al trabajo O decide no renovar su contrato con nosotros simplemente se le desactivara su cuenta, así podemos checar todas las operaciones que este Empleado reviso durante su estadía en la sucursal o sucursales que operaba - \BRitem[Motivación:] Evitar el acceso a todas las personas que no están registradas en el sistema o que no tienen un estado activado + \BRitem[Descripción:] En dado caso de que el cliente cancele su compra, el Supervisor debe de cancelar la operación de venta. + \BRitem[Motivación:] Control sobre las acciones que puede realizar cada empleado \BRitem[Ejemplo positivo:] \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] \hyperlink{CU4}{CU4}. \end{BussinesRule} - %----------------------------------------------------------------------------------------- -\begin{BussinesRule}{BR8}{Activar Estado del empleado.} - \BRitem[Tipo:] Regla de Autorización. - \BRitem[Clase:] Habilitadora. - \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:] Si un empleado que decidió no renovar su contrato con nosotros y decide regresar a aceptar un nuevo contrato, en lugar de generarle una cuenta nueva, simplemente se le reactivara la cuenta que operaba antes de retirarse del empleo - \BRitem[Motivación:] Facilidad de operación sobre los antiguos empleados de la sucursal y evitar duplicidades con respecto a las cuentas - \BRitem[Ejemplo positivo:] - \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] \hyperlink{CU7}{CU7}. +\begin{BussinesRule}{BR6}{Cantidad Máxima de venta a mostrador.} + \BRitem[Tipo:] Habilitador. + \BRitem[Clase:] Integridad Referencial. + \BRitem[Nivel:] Cronometrada. % Otras opciones para nivel: Control, Influencia. + \BRitem[Descripción:] La cantidad de medicamentos máxima que el cajero puede realizar es de 20 + \BRitem[Motivación:] Control sobre las acciones que puede realizar cada empleado + \BRitem[Ejemplo positivo:] Venta Al Mostrador<20. + \BRitem[Ejemplo negativo:] Venta al Mostrador>20. \end{BussinesRule} - %----------------------------------------------------------------------------------------- -\begin{BussinesRule}{BR9}{Devolución al Cliente.} - \BRitem[Tipo:] Regla de Autorización. - \BRitem[Clase:] Habilitadora. +\begin{BussinesRule}{BR7}{Cantidad Excedente de venta a mostrador.} + \BRitem[Tipo:] Habilitador. + \BRitem[Clase:] Integridad Referencial. + \BRitem[Nivel:] Ejecutiva. % Otras opciones para nivel: Control, Influencia. + \BRitem[Descripción:] Si la cantidad a vender excede la cantidad de 20 , esta requiere autorización por parte del supervisor + \BRitem[Motivación:] Control sobre las acciones que puede realizar cada empleado + \BRitem[Ejemplo positivo:] Venta Al Mostrador>20. + \BRitem[Ejemplo negativo:] Venta al Mostrador<20. +\end{BussinesRule} +%------------------------------------------------------------------------------------------- +\begin{BussinesRule}{BR8}{Compra del Medicamento.} + \BRitem[Tipo:] Regla de condición. + \BRitem[Clase:] Cronometrada. \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:] Las devoluciones al cliente solo se efectuaran cuando presenten el medicamento sobre el cual se efectuara la devolución y su ticket de compra, una vez que el cliente presenta el medicamento y el ticket el cliente puede escoger si quiere que se le de un medicamento por el mismo valor de compra o si se le otorgara un monedero electrónico con una bonificación de dinero virtual el cual solo podrá gastar en productos de nuestras sucursales - \BRitem[Motivación:] Satisfacción al cliente - \BRitem[Ejemplo positivo:] - \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] CU30, CU31, CU32, CU. + \BRitem[Descripción:] Los medicamentos que compramos a nuestros proveedores deben de tener una fecha de caducidad mayor a 2 años + \BRitem[Motivación:] Evitar venta de medicamento caducado + \BRitem[Ejemplo positivo:] CaducidadMedicamento>FechaActual + \BRitem[Ejemplo negativo:] CaducidadMedicamento14:00; Turno Vespertino 14:00->22:00; Turno Nocturno 22:00->6:00 + \BRitem[Motivación:] Sacar el máximo provecho de las operaciones diarias de las sucursales \BRitem[Ejemplo positivo:] - \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] CU18. CU19, CU20, CU21 + \BRitem[Ejemplo negativo:] \end{BussinesRule} - %----------------------------------------------------------------------------------------- -\begin{BussinesRule}{BR13}{Manejo de los medicamentos.} - \BRitem[Tipo:] Regla de Autorización. - \BRitem[Clase:] Habilitadora. + + +\begin{BussinesRule}{BR11}{Jornadas Laborales.} + \BRitem[Tipo:] Regla de condición. + \BRitem[Clase:] Cronometrada. \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:] El dueño es la única persona autorizada para poder agregar nuevos medicamentos en el sistema así como su Activación y Desactivación para la venta,. - \BRitem[Motivación:] Control sobre el sistema de inventario de las sucursales. + \BRitem[Descripción:] La jornada Laboral de cada turno sera no mayor a 8 horas, entendiéndose que tenemos 3 turnos laborales; Turno Matutino 6:00 ->14:00; Turno Vespertino 14:00->22:00; Turno Nocturno 22:00->6:00 + \BRitem[Motivación:] Sacar el máximo provecho de las operaciones diarias de las sucursales \BRitem[Ejemplo positivo:] - \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] CU10, CU11, CU13. + \BRitem[Ejemplo negativo:] \end{BussinesRule} - %----------------------------------------------------------------------------------------- -\begin{BussinesRule}{BR13}{Manejo de los Proveedores.} - \BRitem[Tipo:] Regla de Autorización. - \BRitem[Clase:] Habilitadora. + + +\begin{BussinesRule}{BR12}{Apertura de caja.} + \BRitem[Tipo:] Regla de condición. + \BRitem[Clase:] Cronometrada. \BRitem[Nivel:] Control. % Otras opciones para nivel: Control, Influencia. - \BRitem[Descripción:] El dueño es la única persona autorizada para poder agregar nuevos Proveedores en el sistema así como su Activación y Desactivación para la Compra,. - \BRitem[Motivación:] Control de información sobre los múltiples proveedores en el sistema. + \BRitem[Descripción:] Al inicio de cada turno la caja debe de contar con un mínimo de \$1,500 pesos en cambio en caja. + \BRitem[Motivación:] Evitar problemas con dinero en cambio. \BRitem[Ejemplo positivo:] - \BRitem[Ejemplo negativo:] - \BRitem[Referenciado por:] CU43, CU44, CU45, CU46. + \BRitem[Ejemplo negativo:] \end{BussinesRule} +%----------------------------------------------------------------------------------------- + + \newpage diff --git a/3Identificacionrequerimientos.tex b/3Identificacionrequerimientos.tex index d8d342c..3a6ac90 100644 --- a/3Identificacionrequerimientos.tex +++ b/3Identificacionrequerimientos.tex @@ -1,8 +1,163 @@ -\chapter{Identificación de Requerimientos} -\section{Objetivo General} -Objetivos especificos. -\section{Requerimientos Funcionales} -id,nombre,descripción,prioridad. -\section{Requerimientos de Plataforma} -\section{Interacción con el Usuario} -\section{Propiedades del software} +\chapter{Identificación de requerimientos} +\label{cap:reqUsr} + + En este capítulo se modela el alcance del sistema. + + +%--------------------------------------------------------- +\section{Objetivo General Del Proyecto} +Llevar el control completo de la farmacia, mediante un único sistema conectado y utilizado por todos los empleados en las diferentes sucursales de la franquicia. +\section{Objetivos Específicos} +\begin{itemize} +\item Resolver los problemas que surjan en el entendimiento del negocio. + +\item Reducir los problemas de inventario con base a las salidas y entradas de medicamento. + +\item Tener una visión en general sobre el ámbito laboral de las múltiples sucursales como de los empleados que operan en ellas. + +\end{itemize} + +\section{Requerimientos del Usuario} +\begin{itemize} + +\item RU1 Registrar Medicamentos\\ +Descripción: El dueño necesita registrar los nuevos medicamentos que se venderán en la farmacia.\\ +\item RU2 Registrar entregas de proveedores\\ +Descripción: El cajero necesita registrar los medicamentos que llegarón de un proveedor, de la misma forma necesita información del proveedor que hace la entrega ,requiere la hora y fecha en que se realizó la entrega, y un comprobante de parte del proveedor.\\ + +\item RU3 Consultar Medicamento por cada Sucursal\\ +Descripción:El usuario necesita conocer el medicamento que se maneja así como la cantidad de cada uno de estos medicamentos por cada una de las sucursales.\\ + +\item RU4 Registrar Empleados\\ +Descripción:El dueño necesita tener una forma para registrar la información de los nuevo trabajadores que laboran en la franquicia de la farmacia, de la misma manera necesita asignarles sucursal para laborar; en caso de que sea supervisor asignarle un máximo de 3 y un mínimo de 1.\\ + +\item RU5 Control de la caja. +Descripción: El dueño necesita que alguien monitorice el dinero con el que se empieza cada turno (matutino, vespertino, nocturno) así como al final de estos.\\ + +\item RU6 Realizar una Venta\\ +Descripción: El cajero requiere registrar nombre,costo y unidades de cada medicamento en la venta.\\ + +\item RU7 Registrar Sucursal\\ +Descripción: El dueño requiere registrar información de cada nueva sucursal( dirección,el nombre y teléfono).\\ + +\item RU8 Consultar Ventas por día\\ +Descripción: El supervisor necesita conocer las ventas que se realizaron durante la hora de atención de la farmacia(9:00am A 12:00pm) para tener una visión de las ventas.\\ + +\item RU9 Registrar Proveedor +Descripción: El dueño Necesita Registrar a los proveedores que le surten de medicamentos.\\ + +\item RU10 Consultar Proveedores +Descripción: El dueño necesita consultar a los proveedores para hacer algún pedido, +o en su defecto aclarar algún inconveniente.\\ + +\item RU11 Recibir Medicamentos\\ +Descripción: El cajero necesita modificar las existencias de los medicamentos que se venderán en la farmacia conforme a entregas de los proveedores.\\ +\end{itemize} +\newpage +\section{Requerimientos funcionales} +RF1 Registrar Medicamento\\ +Descripcion: El sistema Guarda la información de forma estructurada de los campos de importancia de un medicamento, que son: su nombre, ingredientes Activos con su dosificación, Precios de compra y venta, caducidad, presentación, vía de administración, laboratorio,lote,advertencias y existencias.\\ +Prioridad: MA\\ +RU:RU1.\\ +\\ +RF2 Registrar Entregas +Descripcion: El sistema guarda la información de las entregas realizadas por el proveedor tales como fecha, hora, nombre del proveedor, y todos los campos mencionados en la entidad ``Ingreso" y también en la entidad ``Lote" En la Sección ``Modelo del dominio del problema" en el Capitulo anterior.\\ +Prioridad:A\\ +RU:RU2.\\ +\\ +RF3 Registrar Clientes\\ +Descripcion:El Sistema Guarda información de un cliente, los campos que Guarda del Cliente están Especificados en la entidad ``Cliente" En la Sección ``Modelo del dominio del problema" en el Capitulo anterior.\\ +Prioridad:M\\ +RU:RU3\\ +\\ +RF4 Registrar Empleados\\ +Descripcion: El sistema guarda la información de un empleado, este Empleado puede ser un Cajero o un Supervisor, la información que guarda de cada uno de estos se encuentra Especificada en las Entidades ``Cajero" y ``Supervisor" En la Sección ``Modelo del dominio del problema" en el Capitulo anterior.\\ +Prioridad:A\\ +RU:RU4\\ +\\ +RF5 Abrir Caja\\ +Descripcion:El sistema Permite Que el usuario pueda Abrir la Caja la cual contara con 1500\$ como base para operar de forma adecuada.\\ +\\ +Prioridad:A\\ +RU:RU5 +\\ +RF6 Cerrar caja\\ +Descripcion: El sistema va a calcular las ganancias del turno que se cerrará y se marcará que en caja solo quedán 1500\$ y una vez realizado esto permite cerrar la caja.\\ +Prioridad:A\\ +RU:RU5\\ +\\ +RF7\\ +Nombre: Realizar Una Venta\\ +Descripcion:El sistema cuando se realiza una venta Guarda todos los datos especificados en la entidad ``Venta" y la entidad ``detalle Venta" En la Sección ``Modelo del dominio del problema" en el Capitulo anterior, Aparte en el mismo proceso reduce las existencias del medicamento que se vendió e imprime un comprobante con la información de ``Venta" junto con el nombre de los medicamentos comprados, la cantidad adquirida y su precio desde una impresora.\\ +Prioridad:MA\\ +RU:RU6\\ +\\ +RF8 Consultar Medicamento Local\\ +Descripcion: El sistema Mostrará una tabla con los medicamentos que se tienen en la sucursal y datos esenciales como su nombre, precio, Existencias y proporciona al usuario un botón para que pueda visualizar la demás información del medicamento.\\ +Prioridad:M\\ +RU:RU7\\ +\\ +RF9 Registrar Sucursal\\ +Descripcion: El sistema Guarda la información de una sucursal la cual se especifica en la entidad ``Sucursal" En la Sección ``Modelo del dominio del problema" en el Capitulo anterior. \ +Prioridad:A\\\ +RU:RU8\\ +\\ +RF 9 Consultar Ventas Por día\\ +Descripcion: Genera una reporte en formato .pdf con los productos vendidos, su cantidad y precio y con los ingresos totales de la sucursal.\\ +Prioridad: MA\\ +RU:RU9\\ +\\ +RF13 Registrar Proveedor +Descripcion: El sistema guarda la Información del proveedor La Cual se especifica en la entidad ``Proveedor" En la Sección ``Modelo del dominio del problema" en el Capitulo anterior.\\ +Prioridad: A\\ +RU:RU10\\ +\\ +RF14 Consultar Proveedor\\ +Descripcion: El sistema muestra una tabla que enlista a los proveedores que están registrados en el sistema junto con sus datos que son nombre del proveedor, email, teléfono, RFC y estado. +Prioridad: M\\ +RU:RU11\\ +\newpage + +%--------------------------------------------------------- +\section{Especificación de plataforma} + +\begin{description} + + \item[Tipo de sistema:] Web. + \item[Software requerido:]Apache, Maria-DB,google-chrome,firefox,edge. + \item[OS:] Arch Linux x86\_64. + \item[Kernel Release:] 4.14.47-1-MANJARO. + \item[RAM:] 2006 MB / 3835 MB + \item[Processor Type:] Intel(R) Celeron(R) CPU B830 @ 1.80GHz. + \item[servicios:] servicios del servidor de base de datos 10.1.33-MariaDB MariaDB Server.\\También se Ocupan servicios del serve API Apache 2.0 Handler +Con la Version de Apache: Apache/2.4.33 (Unix) PHP/7.2.6. + \item[Mysql Support:] mysqlnd 5.0.12-dev - 20150407. + \item[Hosting:]Se Compra un servidor dedicado con el proveedor ``Go Daddy". + Se compra un servidor dedicado, para que se pueda dar soporte a todos los empleados en todas las sucursales, tal vez al principio se tendrá espacio y servidor de sobra, pero de esta forma aumenta la productividad y se quitan los riesgos de tráfico en el servidor. + \item[servidor Hosting:]4 núcleos de CPU @ 3.1 GHz +Memoria de 4 GB +1 TB de almacenamiento (RAID-1)\^ +Ancho de banda sin medición(El proveedor no limita el ancho de banda) +3 IP dedicadas +Certificado SSL gratis durante 1 año. + \item[Dominio:] Se Compra el dominio ``www.Farmacias.francs.com"\\ con el mismo proveedor a un precio muy razonable con contrato de un año al igual que el servicio de hosting. + \item[Seguridad web:]El mismo proveedor de hosting ofrece seguridad SSL + con las siguientes Características:Asegura un sitio web +Sólido cifrado SHA2 y encriptación de 2048 bits\\ +Disponible en Certificados SSL DV, OV y EV.\\ +El SSL EV hace que la barra del navegador se ponga verde +Incrementa el posicionamiento de tu sitio en Google.\\ +Marca confiable McAfee SECURE.\\ +\end{description} +\begin{figure}[htbp!] + \begin{center} + \fbox{\includegraphics[width=18cm, height=20cm]{images/arquitectura}} + \caption{Arquitectura del sistema.} + \label{fig:arquitectura} + \end{center} +\end{figure} + +En la figura~\ref{fig:arquitectura} se describe la estructura del sistema, en ella se detallan los servicios de base de datos que se necesitan, las conexiones al servidor apache, así como las especificaciones que necesita el CPU de la sucursal en la que se monta el sistema de la farmacia. + + + diff --git a/cu/cu1.tex b/cu/cu0.tex similarity index 72% rename from cu/cu1.tex rename to cu/cu0.tex index f30ad75..11016e8 100644 --- a/cu/cu1.tex +++ b/cu/cu0.tex @@ -1,58 +1,58 @@ - \begin{UseCase}{CU1}{Control de Acceso}{ - Operación inicial para poder acceder al sistema. De éste Caso de uso se extiende a todos los demás casos de uso. - } - \UCitem{Versión}{\color{Gray}0.1} - \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} - \UCitem{Supervisa}{\color{Gray}.} - \UCitem{Actor}{Cajero,Supervisor,Dueño} - \UCitem{Propósito}{Ingresar al Sistema para poder Realizar Transacciones diarias de la farmacia} - \UCitem{Entradas}{Dirección URL de la pagina web de la farmacia,Contraseña y Correo Electrónico} - \UCitem{Origen}{Teclado} - \UCitem{Salidas}{Pantalla principal \IUref{IU1}{Pantalla Principal}} - \UCitem{Destino}{Pantalla} - \UCitem{Precondiciones}{Se debe introducir la dirección de la pagina en el navegador de internet } - \UCitem{Postcondiciones}{El Empleado,Supervisor o Dueño podrá hacer transacciones de su índole} - \UCitem{Errores}{Que la pagina no este disponible por razones tales de: Error de conexión, Mantenimiento de los servidores, Que no exista el usuario,Que la contraseña este Incorrecta,Que no exista el correo electrónico} - \UCitem{Observaciones}{} - \UCitem{Estado}{En revision} - \end{UseCase} -%-------------------------------------- - \begin{UCtrayectoria}{Principal} - \UCpaso[\UCactor] Ingresa a la pagina web escribiendo la URL en un navegador. - \UCpaso Genera Y despliega la Pantalla \IUref{IU0}{Login} - \UCpaso [\UCactor] Ingresa su Correo Electrónico y Contraseña y presiona el botón Aceptar - \UCpaso Verifica que el [\UCactor] haya haya proporcionado los datos requeridos en la pantalla \IUref{IU0}{Login} - \UCpaso Verifica que el correo proporcionado cumpla con el formato ``Ejemplo@ejemplo.com'' \Trayref{A} - \UCpaso Busca la cuenta asociada al correo ingresado. \Trayref{B} - \UCpaso Verifica que dicha cuenta este activa. \Trayref{C} - \UCpaso Verifica que la contraseña ingresada coincida con la contraseña asociada a la cuenta.\Trayref{F} - \UCpaso Otorga el acceso al sistema - \UCpaso Muestra la pantalla correspondiente al tipo de cuenta. - \UCpaso [\UCactor] Usa el sistema. - \UCpaso [\UCactor] Solicita cerrar sesión. - \UCpaso Revoca el acceso. - \UCpaso Muestra \IUref{IU1}{Login} - \end{UCtrayectoria} - -%-------------------------------------- - \begin{UCtrayectoriaA}{A}{El Correo no esta Correcto} - \UCpaso Muestra el Mensaje {\bf MSG01-}`` Error en la Operación[{\em correo con formato }] Introduzca un correo con el formato Ejemplo@ejemplo.com.''. - \UCpaso Continúa en el paso 3 del \UCref{CU1}. - \end{UCtrayectoriaA} -%---------------------------------------- - \begin{UCtrayectoriaA}{B}{El \UCactor no esta registrado} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la operación [{\em Usuario no Encontrado}] El usuario y/o contraseña no existen .''. - \UCpaso[\UCactor] Oprime el botón \IUbutton{Aceptar}. - \UCpaso[] Continua en el paso 3 del \UCref{CU1}. - \end{UCtrayectoriaA} -%-------------------------------------- - \begin{UCtrayectoriaA}{C}{La cuenta a la que intenta acceder no esta activa} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la operación [{\em Cuenta Desactivada}] Contacta con el Dueño para resolver el problema .''. - \UCpaso[\UCactor] Oprime el botón \IUbutton{Aceptar} - \UCpaso Continua en el paso 3 del \UCref{CU1}. - \end{UCtrayectoriaA} -%-------------------------------------- - \begin{UCtrayectoriaA}{F}{La Contraseña es incorrecta} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em Contraseña invalida}] La contraseña ingresada no coincide con la cuenta.''. - \UCpaso Continúa en el paso 2 del \UCref{CU1}. - \end{UCtrayectoriaA} + \begin{UseCase}{CU0}{Control de Acceso}{ + Operación inicial para poder acceder al sistema. De éste Caso de uso se extiende a todos los demás casos de uso. + } + \UCitem{Versión}{\color{Gray}0.1} + \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} + \UCitem{Supervisa}{\color{Gray}.} + \UCitem{Actor}{Cajero,Supervisor,Dueño} + \UCitem{Propósito}{Ingresar al Sistema para poder Realizar Transacciones diarias de la farmacia} + \UCitem{Entradas}{Dirección URL de la pagina web de la farmacia,Contraseña y Correo Electrónico} + \UCitem{Origen}{Teclado} + \UCitem{Salidas}{Pantalla principal \IUref{IU1}{Pantalla Principal}} + \UCitem{Destino}{Pantalla} + \UCitem{Precondiciones}{Se debe introducir la dirección de la pagina en el navegador de internet } + \UCitem{Postcondiciones}{El Empleado,Supervisor o Dueño podrá hacer transacciones de su índole} + \UCitem{Errores}{Que la pagina no este disponible por razones tales de: Error de conexión, Mantenimiento de los servidores, Que no exista el usuario,Que la contraseña este Incorrecta,Que no exista el correo electrónico} + \UCitem{Observaciones}{} + \UCitem{Estado}{En revision} + \end{UseCase} +%-------------------------------------- + \begin{UCtrayectoria}{Principal} + \UCpaso[\UCactor] Ingresa a la pagina web escribiendo la URL en un navegador. + \UCpaso Genera Y despliega la Pantalla \IUref{IU0}{Login} + \UCpaso [\UCactor] Ingresa su Correo Electrónico y Contraseña y presiona el botón Aceptar + \UCpaso Verifica que el [\UCactor] haya haya proporcionado los datos requeridos en la pantalla \IUref{IU0}{Login} + \UCpaso Verifica que el correo proporcionado cumpla con el formato ``Ejemplo@ejemplo.com'' \Trayref{A} + \UCpaso Busca la cuenta asociada al correo ingresado. \Trayref{B} + \UCpaso Verifica que dicha cuenta este activa. \Trayref{C} + \UCpaso Verifica que la contraseña ingresada coincida con la contraseña asociada a la cuenta.\Trayref{F} + \UCpaso Otorga el acceso al sistema + \UCpaso Muestra la pantalla \IUref{01}{Pantalla Principal}. + \UCpaso [\UCactor] Usa el sistema. + \UCpaso [\UCactor] Solicita cerrar sesión. + \UCpaso Revoca el acceso. + \UCpaso Muestra \IUref{IU0}{Login} + \end{UCtrayectoria} + +%-------------------------------------- + \begin{UCtrayectoriaA}{A}{El Correo no esta Correcto} + \UCpaso Muestra el Mensaje en la \IUref{IU0}{Login} {\bf MSG01-}`` Error en la Operación[{\em correo con formato }] Introduzca un correo con el formato Ejemplo@ejemplo.com.''. + \UCpaso Continúa en el paso 3 del \UCref{CU0}. + \end{UCtrayectoriaA} +%---------------------------------------- + \begin{UCtrayectoriaA}{B}{El \UCactor no esta registrado} + \UCpaso Muestra el Mensaje en la \IUref{IU0}{Login} {\bf MSG01-}``Error en la operación [{\em Usuario no Encontrado}] El usuario y/o contraseña no existen .''. + \UCpaso[\UCactor] Oprime el botón \IUbutton{Aceptar}. + \UCpaso[] Continua en el paso 3 del \UCref{CU0}. + \end{UCtrayectoriaA} +%-------------------------------------- + \begin{UCtrayectoriaA}{C}{La cuenta a la que intenta acceder no esta activa} + \UCpaso Muestra el Mensaje en la \IUref{IU0}{Login} {\bf MSG01-}``Error en la operación [{\em Cuenta Desactivada}] Contacta con el Dueño para resolver el problema .''. + \UCpaso[\UCactor] Oprime el botón \IUbutton{Aceptar} + \UCpaso Continua en el paso 3 del \UCref{CU0}. + \end{UCtrayectoriaA} +%-------------------------------------- + \begin{UCtrayectoriaA}{F}{La Contraseña es incorrecta} + \UCpaso Muestra el Mensaje en la \IUref{IU0}{Login} {\bf MSG01-}``Error en la Operación [{\em Contraseña invalida}] La contraseña ingresada no coincide con la cuenta.''. + \UCpaso Continúa en el paso 2 del \UCref{CU0}. + \end{UCtrayectoriaA} diff --git a/cu/cu13.tex b/cu/cu13.tex new file mode 100644 index 0000000..3caa79f --- /dev/null +++ b/cu/cu13.tex @@ -0,0 +1,48 @@ +\begin{UseCase}{CU13}{Consultar Proveedor}{ + La farmacia consta con múltiples proveedores que nos surten medicamentos, y para poder checar los datos de todos los proveedores que nos venden medicamentos necesitamos un listado de los proveedores con sus datos correspondientes, la consulta del proveedor se realizara mediante una barra de búsqueda la cual estará en la \IUref{15}{Tabla Proveedores} en la que se introduce ya sea el nombre, Identificador o el correo electrónico del proveedor que deseamos buscar y una vez que presionamos el botón buscar se desplegara una tabla con los datos del proveedor. + } + \UCitem{Versión}{\color{Gray}0.8} + \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} + \UCitem{Supervisa}{\color{Gray} Zamora Gachuz Felipe Jesús} + \UCitem{Actor}{Dueño} + \UCitem{Propósito}{Control rápido y eficaz sobre los múltiples proveedores de la Farmacia.} + \UCitem{Entradas}{Nombre del Proveedor, Correo Electrónico del Proveedor,RFC} + \UCitem{Origen}{Teclado} + \UCitem{Salidas}{ Nombre del Proveedor, Correo Electrónico del Proveedor, Teléfono, RFC, Estado.} + \UCitem{Destino}{Pantalla} + \UCitem{Precondiciones}{El proveedor debe de estar registrado en el sistema.} + \UCitem{Postcondiciones}{No Aplica.} + \UCitem{Errores}{La pagina sea inaccesible por el momento debido a fallas con los servidores, Que el empleado tenga su cuenta no este registrado} + \UCitem{Observaciones}{} + \UCitem{Estado}{Revisión} + \UCitem{Viene de}{CU0} + \end{UseCase} +%-------------------------------------- + \begin{UCtrayectoria}{Principal} + \UCpaso Incluye el caso de uso \UCref{CU0} + \UCpaso[\UCactor] Selecciona La opción compras en la \IUref{01}{Pantalla Principal} presionando el botón \IUbutton{Compras}. + \UCpaso verifica que los permisos de usuario sean permisos de Dueño. \Trayref{A} + \UCpaso Despliega las opciones de Compras \IUref{01} + \UCpaso [\UCactor] Selecciona La opción Proveedores en la \IUref{01}{Pantalla Principal} presionando el botón \IUbutton{Proveedores}. + \UCpaso Genera la lista de opciones de búsqueda de proveedor las cuales son: Nombre, RFC y correo + \UCpaso Genera y Despliega la \IUref{15}{Tabla Proveedores} con el listado de los proveedores con su Nombre , Correo Electrónico , Teléfono, RFC, Estado. + \UCpaso[\UCactor] Selecciona la opción con la cual buscara al proveedor en la lista desplegable que se genera junto al campo de búsqueda. + \UCpaso[\UCactor] Introduce el Nombre ó Correo ó RFC del proveedor a buscar en el campo de Búsqueda y Presiona el \IUbutton{Buscar} en la \IUref{15}{Tabla Proveedores}. + \UCpaso Filtra y Despliega una lista que coincida con la búsqueda realizada en la \IUref{15}{Tabla Proveedores}. según el campo seleccionado \Trayref{B} + \UCpaso [\UCactor] Presiona la opción Escritorio en la \IUref{15}{Tabla Proveedores}. + \UCpaso Redirige al [\UCactor] a la \IUref{01}{Pantalla Principal}. + \end{UCtrayectoria} + +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{A}{Permiso denegado.} + \UCpaso Muestra el Mensaje {\bf MSG04-}``Cancelado [{\em Permiso Denegado}] No cuentas con los permisos necesarios.''. + \UCpaso Redirige al [\UCactor] a la \IUref{01}{Pantalla Principal}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- + +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{B}{Proveedor no encontrado.} + \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em Proveedor no encontrado}] \IUref{15}{Tabla Proveedores}.''. + \UCpaso Continúa en el paso 4 del \UCref{CU13}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- diff --git a/cu/cu14.tex b/cu/cu14.tex new file mode 100644 index 0000000..aa898e1 --- /dev/null +++ b/cu/cu14.tex @@ -0,0 +1,61 @@ +\begin{UseCase}{CU14}{Recibir Medicamento}{ + Si el proveedor llega con un nuevo lote de medicamentos el cajero debe de tener una opción para poder ingresar esos medicamentos, Los medicamentos que recibe el cajero se registraran seleccionando la opción de ingresos en la \IUref{01}{Pantalla Principal}. lo cual nos desplegara la \IUref{20}{Formulario Ingreso} y en esta pantalla ingresaremos los datos del Medicamento que recibimos, las unidades que se reciben y el lote del medicamento + } + \UCitem{Versión}{\color{Gray}0.8} + \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} + \UCitem{Supervisa}{\color{Gray}Zamora Gachuz Jesús Felipe} + \UCitem{Actor}{Cajero} + \UCitem{Propósito}{Control rápido y eficaz sobre el inventario de la farmacia.} + \UCitem{Entradas}{Lote, Proveedor, Nombre del Medicamento, Unidades a Recibir del Medicamento, Precio de compra del medicamento, Precio de venta del medicamento} + \UCitem{Origen}{Teclado, Lector de Código de Barras} + \UCitem{Salidas}{Lote, ID del Cajero, Nombre de la Sucursal, Fecha y Hora, ID del Medicamento, Unidades recibidas del Medicamento, Total a Pagar.} + \UCitem{Destino}{Pantalla} + \UCitem{Precondiciones}{El Medicamento debe estar registrado en el sistema.} + \UCitem{Postcondiciones}{Las unidades del Medicamento deben de aumentar de acuerdo a las unidades ingresadas en la sucursal actual.} + \UCitem{Errores}{La pagina sea inaccesible por el momento debido a fallas con los servidores, Que el empleado tenga su cuenta no este registrado} + \UCitem{Observaciones}{} + \UCitem{Estado}{Revisión} + \UCitem{Viene de}{CU0} + \end{UseCase} +%-------------------------------------- + \begin{UCtrayectoria}{Principal} + \UCpaso Incluye el caso de uso \UCref{CU0} + \UCpaso[\UCactor] Selecciona La opción Compras en la \IUref{01}{Pantalla Principal} presionando el botón \IUbutton{Compras}. + \UCpaso Despliega las opciones de Compras en la \IUref{01} + \UCpaso [\UCactor] Selecciona La opción Ingresos en la \IUref{01}{Pantalla Principal} presionando el botón \IUbutton{Ingresos}. + \UCpaso Llena el campo ID del cajero con el ID del cajero actualmente en sesión. + \UCpaso Llena el campo Nombre de la Sucursal con el Nombre de la sucursal actualmente en sesión. + \UCpaso Llena el campo Fecha y Hora con la fecha y hora actual del sistema. + \UCpaso Genera una lista de los proveedores actualmente registrados en el sistema, sera mostrado mostrado en el campo de Proveedor. + \UCpaso Genera y Despliega la \IUref{20}{Formulario Ingreso} con los campos especificados anteriormente llenos. + \UCpaso[\UCactor] Selecciona el proveedor de la lista generada en el campo proveedor. \Trayref{A} + \UCpaso[\UCactor] Introduce el Lote del medicamento que recibe, Código de barras del medicamento, unidades que recibe del medicamento. \Trayref{B} + \UCpaso Llena el campo de Precio Compra, Precio Venta del medicamento recién capturado por el lector de código de barras. + \UCpaso [\UCactor] Modifica el precio de compra y precio de venta dependiendo de la especificación del proveedor. + \UCpaso Calcula el total a pagar mediante la cantidad de unidades que se reciben del medicamento multiplicado por el precio de compra del medicamento + \UCpaso[\UCactor] Confirma la operación presionando el botón \IUbutton{Guardar} + \UCpaso Verifica que el Nombre del medicamento Ingresado Exista en la lista de medicamentos registrados actualmente en el sistema. + \UCpaso Genera y despliega la ventana. \IUref{MSG0}{Operación Realizada Con Éxito} \Trayref{C} + \UCpaso [\UCactor] Cierra la ventana presionando el \IUbutton{OK}. + \UCpaso Aumenta las unidades de medicamento que acaba de recibir en el sistema conforme a las unidades que se ingresaron. + \UCpaso Actualiza el precio de compra y venta del medicamento existente con el que acaba de ingresar. + \UCpaso Redirige al [\UCactor] a la \IUref{01}{Pantalla Principal}. + \end{UCtrayectoria} + + +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{A}{Proveedor no encontrado.} + \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em Proveedor no encontrado}] El proveedor que buscas no esta registrado en el sistema \IUref{20}{Formulario Ingreso}.''. + \UCpaso Continúa en el paso 10 del \UCref{CU14}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{B}{Medicamento no encontrado.} + \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em Error en Operación}] El medicamento Ingresado no existe en el inventario del sistema \IUref{20}{Formulario Ingreso}.''. + \UCpaso Continúa en el paso 11 del \UCref{CU14}. + \end{UCtrayectoriaA} + +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{C}{Error al guardar los datos.} + \UCpaso Muestra el Mensaje {\bf MSG1-}`` [{\em Error en la operación}] Hubo un error al intentar guardar los datos \IUref{IU3}{Formulario Sucursal}.''. + \UCpaso Continúa en el paso 6 del \UCref{CU15}. + \end{UCtrayectoriaA} diff --git a/cu/cu15.tex b/cu/cu15.tex new file mode 100644 index 0000000..ae9c953 --- /dev/null +++ b/cu/cu15.tex @@ -0,0 +1,100 @@ +\begin{UseCase}{CU15}{Agregar nueva sucursal}{ + Se requiere una forma para agregar una nueva sucursal en el sistema. Para esto el Dueño selecciona la opción de sucursales en la \IUref{01}{Pantalla Principal} lo cual nos lleva a \IUref{14}{Tabla Sucursales} y en esta pantalla se seleccionara la opción de +Nuevo y nos despliega la \IUref{IU3}{Formulario Sucursal} en la cual damos de alta los datos de la nueva sucursal que queremos agregar en el sistema; Una vez que damos de alta la nueva sucursal, aparecerá registrada en el sistema la próxima vez que ingresemos a la \IUref{14}{Tabla Sucursales} + } + \UCitem{Versión}{\color{Gray}0.8} + \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} + \UCitem{Supervisa}{\color{Gray} Correa Medina Carlos Miguel} + \UCitem{Actor}{\hyperlink{Alumno}{Dueño}} + \UCitem{Propósito}{Tener el control de una nueva sucursal y que este disponible para operar.} + \UCitem{Entradas}{Nombre de la sucursal, Dirección de la sucursal,Teléfono de la sucursal, Estado República} + \UCitem{Origen}{Teclado} + \UCitem{Salidas}{Nombre de la sucursal, Dirección de la sucursal,Teléfono de la sucursal, Estado de la sucursal.} + \UCitem{Destino}{Pantalla} + \UCitem{Precondiciones}{Debe haber una sucursal nueva física, que aun no este registrada en el sistema.} + \UCitem{Postcondiciones}{Aparecerá una nueva sucursal en el sistema.} + \UCitem{Errores}{La pagina sea inaccesible por el momento debido a fallas con los servidores.} + \UCitem{Observaciones}{.} + \UCitem{Estado}{Aprobado} + \UCitem{Viene de}{CU0} + \end{UseCase} + + +%-------------------------------------- + + + \begin{UCtrayectoria}{Principal} + \UCpaso Se incluye el caso de uso \UCref{CU0} + \UCpaso[\UCactor] Selecciona la opción Sucursales en la \IUref{01}{Pantalla Principal} + \UCpaso verifica que los permisos de usuario sean permisos de Dueño. \Trayref{A} + \UCpaso Genera y Despliega la \IUref{14}{Tabla Sucursales} + \UCpaso[\UCactor] Selecciona la opción para registrar una nueva sucursal presionando el botón \IUbutton{+Nuevo} en la \IUref{14}{Tabla Sucursales}. + \UCpaso Genera y despliega la \IUref{IU3}{Formulario Sucursal} con los campos vacíos y listos para llenar. + \UCpaso Genera una lista de los Estados de la República y los muestra en una lista desplegable en el campo de Estado República. + \UCpaso[\UCactor] Introduce el nombre de la sucursal, Dirección de la forma: Estado,Av,Calle y número; el teléfono de la nueva sucursal y el Estado de la República en la que se encuentra la sucursal en la \IUref{IU3}{Formulario Sucursal}, de manera que cada dato corresponda con la información que se pide y presiona el botón \IUbutton{Guardar} . + \UCpaso Verifica que el campo de nombre sea llenado una cadena de caracteres no mayor a una longitud de de 30. \Trayref{B} + \UCpaso Verifica que el campo de nombre no se repita con uno de las sucursales existentes en el sistema. \Trayref{C} + \UCpaso Verifica que el campo de Dirección sea llenado con una cadena de caracteres no mayor a una longitud de 200. \Trayref{D} + \UCpaso Verifica que el campo de Dirección no se repita con uno de las sucursales existentes en el sistema. \Trayref{E} + \UCpaso Verifica que el campo de Teléfono sea llenado con una cadena de caracteres no mayor a una longitud de 40. \Trayref{F} + \UCpaso Verifica que el campo de Teléfono no se repita con el teléfono de otra sucursal existentes en el sistema. \Trayref{G} + \UCpaso Verifica que la dirección sea una dirección valida buscando en google maps. \Trayref{H} + \UCpaso Guarda los datos de la nueva sucursal en el Sistema y se mostrara la siguiente vez que se acceda a la \IUref{14}{Tabla Sucursales}.. \Trayref{I} + \UCpaso Genera y despliega la ventana. \IUref{MSG0}{Operación Realizada Con Éxito} + \UCpaso [\UCactor] Cierra la ventana presionando el \IUbutton{OK}. + \UCpaso Redirige al [\UCactor] a la \IUref{14}{Tabla Sucursales}. + \end{UCtrayectoria} + + + + +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{A}{Permiso denegado.} + \UCpaso Muestra el Mensaje {\bf MSG04-}``Cancelado [{\em Permiso Denegado}] No cuentas con los permisos necesarios.''. + \UCpaso Redirige al [\UCactor] a la \IUref{01}{Pantalla Principal}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- + +%------------------------------------------------------------------------- + + +\begin{UCtrayectoriaA}{B}{El campo Nombre no cumple con los requerimientos.} + \UCpaso Muestra el Mensaje {\bf MSG1-}`` [{\em Error en la operación}]Verifique que el nombre sea una cadena de texto no mayor a una longitud de 30 caracteres \IUref{IU3}{Formulario Sucursal}.''. + \UCpaso Continúa en el paso 6 del \UCref{CU15}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{C}{El campo Nombre contiene un nombre que ya existe en el sistema.} + \UCpaso Muestra el Mensaje {\bf MSG1-}`` [{\em Error en la operación}] El nombre ingresado existe ya en otra sucursal registrada en el sistema \IUref{IU3}{Formulario Sucursal}.''. + \UCpaso Continúa en el paso 6 del \UCref{CU15}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- + +\begin{UCtrayectoriaA}{D}{El campo Dirección no cumple con los requerimientos.} + \UCpaso Muestra el Mensaje {\bf MSG1-}`` [{\em Error en la operación}]Verifique que la Dirección sea una cadena de texto no mayor a una longitud de 200 caracteres \IUref{IU3}{Formulario Sucursal}.''. + \UCpaso Continúa en el paso 6 del \UCref{CU15}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{E}{El campo Dirección contiene una Dirección que ya existe en el sistema.} + \UCpaso Muestra el Mensaje {\bf MSG1-}`` [{\em Error en la operación}] La dirección ingresada existe ya en otra sucursal registrada en el sistema \IUref{IU3}{Formulario Sucursal}.''. + \UCpaso Continúa en el paso 6 del \UCref{CU15}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{F}{El campo Teléfono no cumple con los requerimientos.} + \UCpaso Muestra el Mensaje {\bf MSG1-}`` [{\em Error en la operación}]Verifique que el teléfono sea una cadena de texto no mayor a una longitud de 40 caracteres \IUref{IU3}{Formulario Sucursal}.''. + \UCpaso Continúa en el paso 6 del \UCref{CU15}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{G}{El campo Teléfono contiene un teléfono que ya existe en el sistema.} + \UCpaso Muestra el Mensaje {\bf MSG1-}`` [{\em Error en la operación}] El teléfono ingresado existe ya esta asignado a otra sucursal en el sistema \IUref{IU3}{Formulario Sucursal}.''. + \UCpaso Continúa en el paso 6 del \UCref{CU15}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- + +\begin{UCtrayectoriaA}{H}{Dirección Invalida.} + \UCpaso Muestra el Mensaje {\bf MSG1-}`` [{\em Error en la operación}] La dirección ingresada no es una dirección valida \IUref{IU3}{Formulario Sucursal}.''. + \UCpaso Continúa en el paso 6 del \UCref{CU15}. + \end{UCtrayectoriaA} +%------------------------------------------------------------------------- +\begin{UCtrayectoriaA}{I}{Error al guardar los datos.} + \UCpaso Muestra el Mensaje {\bf MSG1-}`` [{\em Error en la operación}] Hubo un error al intentar guardar los datos \IUref{IU3}{Formulario Sucursal}.''. + \UCpaso Continúa en el paso 6 del \UCref{CU15}. + \end{UCtrayectoriaA} diff --git a/cu/cu2.tex b/cu/cu2.tex deleted file mode 100644 index 8fb6f59..0000000 --- a/cu/cu2.tex +++ /dev/null @@ -1,58 +0,0 @@ -\begin{UseCase}{CU2}{Recuperar Contraseña}{ - El empleado puede cometer la equivocación de perder la contraseña asociada a la cuenta con la que ingresa al sistema, por lo cual se requiere de una forma para poder recuperar la contraseña. La recuperación de realizara mediante un correo electrónico el cual se le enviara al empleado con la posibilidad de reasignar una nueva contraseña - } - \UCitem{Versión}{\color{Gray}0.1} - \UCitem{Autor}{\color{Gray}Enrique Aguilera Rosas Landa} - \UCitem{Supervisa}{\color{Gray}Correa Medina Carlos Miguel} - \UCitem{Actor}{\hyperlink{Empleado}{Supervisor, Cajero}} - \UCitem{Propósito}{Conceder el acceso al sistema de nuevo mediante la recuperación de la contraseña.} - \UCitem{Entradas}{Correo Electrónico.} - \UCitem{Origen}{Teclado} - \UCitem{Salidas}{Contraseña Asociada con la cuenta.} - \UCitem{Destino}{Pantalla} - \UCitem{Precondiciones}{El empleado debe estar registrado en el sistema y que no recuerde su contraseña asociada .} - \UCitem{Postcondiciones}{El empleado recuperara su contraseña y su acceso al sistema.} - \UCitem{Errores}{Que el acceso a la pagina sea incorrecto debido a razones de Errores De conexión o Mantenimiento de los Servidores, Que el usuario no este registrado en el sistema} - - \UCitem{Observaciones}{} - \UCitem{Estado}{Corrección} - \end{UseCase} -%-------------------------------------- - \begin{UCtrayectoria}{Principal} - \UCpaso Incluye el caso de uso \UCref{CU1}. - \UCpaso[\UCactor] Presiona el botón \IUbutton{¿Olvidaste tu Password?}. - \UCpaso [\UCactor] Proporciona su Correo Electrónico asociado a la contraseña perdida y Confirma la operación presionando el botón \IUbutton{Aceptar}. - \UCpaso Verifica que el correo proporcionado cumpla con el formato ``Ejemplo@ejemplo.com'' \Trayref{A} - \UCpaso Busca la cuenta asociada al correo ingresado. \Trayref{B} - \UCpaso Verifica que dicha cuenta este activa. \Trayref{C}. - \UCpaso Envía un correo electrónico al correo proporcionado; el cual contara con un link que lleva a la \IUref{12}{Recuperar Contraseña} para asignar una nueva contraseña. \Trayref{D}. - \UCpaso Redirecciona al \UCactor a la \IUref{IU1}{Pantalla Principal}. - \end{UCtrayectoria} - -%-------------------------------------- - \begin{UCtrayectoriaA}{A}{El Correo no esta Correcto} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em correo con formato incorrecto}] Introduzca un correo con el formato xxx@xx.xx .''. - \UCpaso Continúa en el paso 3 del \UCref{CU2}. - \end{UCtrayectoriaA} -%---------------------------------------- - \begin{UCtrayectoriaA}{B}{El \UCactor no esta registrado} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la operación [{\em Usuario no Encontrado}] El usuario y/o contraseña no existen .''. - \UCpaso[\UCactor] Oprime el botón \IUbutton{Aceptar}. - \UCpaso[] Continua en el paso 3 del \UCref{CU2}. - \end{UCtrayectoriaA} -%-------------------------------------- - \begin{UCtrayectoriaA}{C}{La cuenta a la que intenta acceder no esta activa} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la operación [{\em Cuenta Desactivada}] Contacta con el Dueño para resolver el problema .''. - \UCpaso[\UCactor] Oprime el botón \IUbutton{Aceptar} - \UCpaso Continua en el paso 3 del \UCref{CU2}. - \end{UCtrayectoriaA} -%-------------------------------------- - \begin{UCtrayectoriaA}{D}{Correo Electrónico de recuperación de contraseña no se envió} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la operación [{\em Correo no enviado}] Revisa tu conexión y vuelve a enviar el mensaje .''. - \UCpaso[\UCactor] Oprime el botón \IUbutton{Aceptar} - \UCpaso Continua en el paso 7 del \UCref{CU2}. - \end{UCtrayectoriaA} -%-------------------------------------- - - - diff --git a/cu/cu3.tex b/cu/cu3.tex deleted file mode 100644 index e0be461..0000000 --- a/cu/cu3.tex +++ /dev/null @@ -1,46 +0,0 @@ -\begin{UseCase}{CU3}{Modificar datos de Empleado}{ - Los datos del empleado se tienen que modificar, por inconsistencia en los datos registrados en el sistema con sus datos actuales - } - \UCitem{Versión}{\color{Gray}0.1.3} - \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} - \UCitem{Supervisa}{\color{Gray}Correa Medina Carlos Miguel} - \UCitem{Actor}{\hyperlink{Alumno}{Dueño}} - \UCitem{Propósito}{Evitar problemas con los empleados por datos erróneos guardados en el sistema.} - \UCitem{Entradas}{Nombre completo del solicitante, Edad, Dirección, Curp, RFC, Puesto , Sucursal} - \UCitem{Origen}{Teclado} - \UCitem{Salidas}{No Aplica.} - \UCitem{Destino}{Pantalla} - \UCitem{Precondiciones}{El empleado debe de estar dado de alta en el sistema.} - \UCitem{Postcondiciones}{Los datos del empleado serán diferentes.} - \UCitem{Errores}{Exista algún duplicado en los datos del empleado, sus cambios no sean guardados} - \UCitem{Observaciones}{} - \UCitem{Estado}{Corrección} - \end{UseCase} -%-------------------------------------- - \begin{UCtrayectoria}{Principal} - \UCpaso Incluye el caso de uso \UCref{CU1}. - \UCpaso[\UCactor] Selecciona La opción de ver Lista de Empleados presionando el botón \IUbutton{Ver Lista de Empleado}. - \UCpaso Incluye el caso de uso \UCref{CU5}. - \UCpaso[\UCactor] Introduce el Nombre del empleado a buscar en el campo de Búsqueda y presiona el botón \IUbutton{Buscar} \Trayref{A} . - \UCpaso Genera y Despliega una lista que coincida con la búsqueda realizada - \UCpaso[\UCactor] Selecciona la opción editar datos Del empleado Deseado presionando\IUbutton{Editar}. - \UCpaso Genera el formulario Datos del empleado con todos los datos del empleado y los despliega. - \UCpaso[\UCactor] Cambia los datos que el empleado necesita modificar y guarda los cambios presionando el botón \IUbutton{Actualizar} \Trayref{B}. - \UCpaso Redirige al [\UCactor] a la \IUref{01}{Pantalla Principal}. - \end{UCtrayectoria} - - -%------------------------------------------------------------------------- - - -\begin{UCtrayectoriaA}{A}{Empleado no encontrado.} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em Empleado no encontrado}] revisa que los campos sean llenados correctamente.''. - \UCpaso Continúa en el paso del \UCref{CU3}. - \end{UCtrayectoriaA} -%------------------------------------------------------------------------- - - -\begin{UCtrayectoriaA}{B}{Algún campo del Empleado tiene un error.} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em Error en un dato del Empleado}] revisa que los campos sean llenados correctamente.''. - \UCpaso Continúa en el paso 9 del \UCref{CU3}. - \end{UCtrayectoriaA} diff --git a/cu/cu4.tex b/cu/cu4.tex deleted file mode 100644 index 54b2c97..0000000 --- a/cu/cu4.tex +++ /dev/null @@ -1,40 +0,0 @@ -\begin{UseCase}{CU4}{Desactivar estado de Empleado}{ - Por razones laborales, es mejor desactivar el estado de un empleado que eliminarlo y revocar el acceso al sistema - } - \UCitem{Versión}{\color{Gray}0.1.3} - \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} - \UCitem{Supervisa}{\color{Gray}Correa Medina Carlos Miguel} - \UCitem{Actor}{\hyperlink{Alumno}{Dueño}} - \UCitem{Propósito}{Revocar acceso al sistema del empleado.} - \UCitem{Entradas}{Nombre del Empleado, Id de Empleado} - \UCitem{Origen}{Teclado} - \UCitem{Salidas}{No Aplica.} - \UCitem{Destino}{Pantalla} - \UCitem{Precondiciones}{El empleado debe de estar registrado en el sistema y con un estado activo.} - \UCitem{Postcondiciones}{El empleado perderá su acceso al sistema y su estado cambiara a desactivado .} - \UCitem{Errores}{La pagina sea inaccesible por el momento debido a fallas con los servidores, Que el empleado tenga su cuenta desactivada} - \UCitem{Observaciones}{} - \UCitem{Estado}{En Corrección} - \end{UseCase} -%-------------------------------------- - \begin{UCtrayectoria}{Principal} - \UCpaso Incluye el caso de uso \UCref{CU1} paso 11 - \UCpaso[\UCactor] Selecciona La opción de ver Lista de Empleados presionando el botón \IUbutton{Ver Lista de Empleado}. - \UCpaso[\UCactor] Introduce el Nombre del empleado a buscar en el campo de Búsqueda y presiona el botón \IUbutton{Buscar} \Trayref{A} . - \UCpaso Genera y Despliega una lista que coincida con la búsqueda realizada - \UCpaso[\UCactor] Presiona el botón\IUbutton{Desactivar} del empleado seleccionado. - \UCpaso Genera y despliega la ventana \IUref{Confirmación Desactivar} para confirmar la operación de desactivar la cuenta seleccionada. - \UCpaso [\UCactor] Confirma la operación presionando el \IUbutton{Si, Desactivar} - \UCpaso Redirige al [\UCactor] a la \IUref{01}{Pantalla Principal de Dueño}. - \end{UCtrayectoria} - - -%------------------------------------------------------------------------- - - -\begin{UCtrayectoriaA}{A}{Empleado no encontrado.} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em Empleado no encontrado}] revisa que los campos sean llenados correctamente.''. - \UCpaso Continúa en el paso 4 del \UCref{CU4}. - \end{UCtrayectoriaA} -%------------------------------------------------------------------------- - diff --git a/cu/cu5.tex b/cu/cu5.tex deleted file mode 100644 index 94ea219..0000000 --- a/cu/cu5.tex +++ /dev/null @@ -1,35 +0,0 @@ -\begin{UseCase}{CU5}{Listar Empleados y sus Datos}{ - La farmacia consta con múltiples empleados y para poder checar los datos de todos los empleados, la opción mas eficaz es hacer un listado con los empleados y sus datos correspondientes - } - \UCitem{Versión}{\color{Gray}0.1.3} - \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} - \UCitem{Supervisa}{\color{Gray}Correa Medina Carlos Miguel} - \UCitem{Actor}{Dueño} - \UCitem{Propósito}{Control rápido sobre el manejo de los datos de los empleados.} - \UCitem{Entradas}{Nombre del Empleado, Id de Empleado} - \UCitem{Origen}{Teclado} - \UCitem{Salidas}{No Aplica.} - \UCitem{Destino}{Pantalla} - \UCitem{Precondiciones}{El empleado debe de estar registrado en el sistema.} - \UCitem{Postcondiciones}{El dueño checara la lista de los empleados y sus respectivos datos .} - \UCitem{Errores}{La pagina sea inaccesible por el momento debido a fallas con los servidores, Que el empleado tenga su cuenta no este registrado} - \UCitem{Observaciones}{} - \UCitem{Estado}{Revision} - \end{UseCase} -%-------------------------------------- - \begin{UCtrayectoria}{Principal} - \UCpaso Incluye el caso de uso \UCref{CU1} paso 11 - \UCpaso[\UCactor] Selecciona La opción de ver Lista de Empleados presionando el botón \IUbutton{Empleados}. - \UCpaso[\UCactor] Introduce el Nombre del empleado a buscar en el campo de Búsqueda y Presiona el \IUbutton{Buscar}. - \UCpaso Genera y Despliega una lista que coincida con la búsqueda realizada. \Trayref{A} - \UCpaso [\UCactor] Presiona el \IUbutton{Regresar}. - \UCpaso Redirige al [\UCactor] a la \IUref{01}{Pantalla Principal}. - \end{UCtrayectoria} - - -%------------------------------------------------------------------------- -\begin{UCtrayectoriaA}{A}{Empleado no encontrado.} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em Empleado no encontrado}] revisa que los campos sean llenados correctamente.''. - \UCpaso Continúa en el paso 4 del \UCref{CU5}. - \end{UCtrayectoriaA} -%------------------------------------------------------------------------- diff --git a/cu/cu6.tex b/cu/cu6.tex deleted file mode 100644 index 9ae2a99..0000000 --- a/cu/cu6.tex +++ /dev/null @@ -1,32 +0,0 @@ -\begin{UseCase}{CU6}{Reasignar Sucursales a Supervisor}{ - Un supervisor tiene la responsabilidad de checar el funcionamiento adecuado de las sucursales que le son asignadas y por lo tanto se le asignaran nuevas sucursales o se le modificaran dependiendo de los movimientos operacionales de cada una - } - \UCitem{Versión}{\color{Gray}0.1} - \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} - \UCitem{Supervisa}{\color{Gray}Correa Medican Carlos Miguel} - \UCitem{Actor}{\hyperlink{Alumno}{Dueño}} - \UCitem{Propósito}{Mejorar las operaciones diarias de la farmacia mediante resignaciones de supervisores adecuados.} - \UCitem{Entradas}{Nombre del Empleado, Id de Empleado} - \UCitem{Origen}{Teclado} - \UCitem{Salidas}{No Aplica.} - \UCitem{Destino}{Pantalla} - \UCitem{Precondiciones}{El supervisor debe de estar registrado en el sistema y con un estado activado.} - \UCitem{Postcondiciones}{ El supervisor por lo menos tendrá una sucursal diferente a la original .} - \UCitem{Errores}{La pagina sea inaccesible por el momento debido a fallas con los servidores, Que el empleado tenga su cuenta desactivada} - \UCitem{Observaciones}{ referencia a las IUX} - \UCitem{Estado}{En Corrección} - \end{UseCase} -%-------------------------------------- - \begin{UCtrayectoria}{Principal} - \UCpaso Se extiende del caso de uso \UCref{CU3} paso 8 - \UCpaso [\UCactor] Modifica la sucursal del empleado y guarda los cambios presionando el botón\IUbutton{Aceptar y Guardar} - \UCpaso Redirige al [\UCactor] a la \IUref{01}{Pantalla Principal}. - \end{UCtrayectoria} - - -%------------------------------------------------------------------------- -\begin{UCtrayectoriaA}{A}{Empleado no encontrado.} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operación [{\em Empleado no encontrado}] revisa que los campos sean llenados correctamente.''. - \UCpaso Continúa en el paso 4 del \UCref{CU4}. - \end{UCtrayectoriaA} -%------------------------------------------------------------------------- diff --git a/cu/cu7.tex b/cu/cu7.tex deleted file mode 100644 index 577a033..0000000 --- a/cu/cu7.tex +++ /dev/null @@ -1,36 +0,0 @@ -\begin{UseCase}{CU7}{Activar estado de Empleado}{ - Por razones laborales, a algunos empleados se les reactivara una cuenta suspendida para que puedan trabajar en el sistema de nuevo - } - \UCitem{Versión}{\color{Gray}0.1.3} - \UCitem{Autor}{\color{Gray}Aguilera Rosas Landa Enrique} - \UCitem{Supervisa}{\color{Gray}Correa Medina Carlos Miguel} - \UCitem{Actor}{\hyperlink{Alumno}{Dueño}} - \UCitem{Propósito}{Que el empleado tenga acceso al sistema.} - \UCitem{Entradas}{Nombre del Empleado, Id de Empleado} - \UCitem{Origen}{Teclado} - \UCitem{Salidas}{No Aplica.} - \UCitem{Destino}{Pantalla} - \UCitem{Precondiciones}{El empleado debe de estar registrado en el sistema y con un estado desactivado.} - \UCitem{Postcondiciones}{El empleado ganará su acceso al sistema y su estado cambiara a activado .} - \UCitem{Errores}{La pagina sea inaccesible por el momento debido a fallas con los servidores, Que el empleado tenga su cuenta activada} - \UCitem{Observaciones}{} - \UCitem{Estado}{En revision} - \end{UseCase} -%-------------------------------------- - \begin{UCtrayectoria}{Principal} - \UCpaso Incluye el caso de uso \UCref{CU5}. - \UCpaso[\UCactor] Introduce el Nombre del empleado a buscar en el campo de Búsqueda y presiona el botón \IUbutton{Buscar} . - \UCpaso Genera y Despliega una lista que coincida con la búsqueda realizada.\Trayref{A} - \UCpaso[\UCactor] Presiona el botón\IUbutton{Activar Cuenta} del empleado seleccionado. - \UCpaso Genera y despliega la ventana emergente \IUref{ConfirmaciónActivar} para confirmar la operación de Activar la cuenta seleccionada. - \UCpaso [\UCactor] Confirma la operación presionando el \IUbutton{Si, Activar} - \UCpaso Redirige al [\UCactor] a la \IUref{01}{Pantalla Principal}. - \end{UCtrayectoria} - - -%------------------------------------------------------------------------- -\begin{UCtrayectoriaA}{A}{Empleado no encontrado.} - \UCpaso Muestra el Mensaje {\bf MSG01-}``Error en la Operacion [{\em Empleado no encontrado}] revisa que los campos sean llenados correctamente.''. - \UCpaso Continúa en el paso 4 del \UCref{CU4}. - \end{UCtrayectoriaA} -%------------------------------------------------------------------------- diff --git a/cu/cus.tex b/cu/cus.tex index 73385b4..9452c23 100644 --- a/cu/cus.tex +++ b/cu/cus.tex @@ -1,10 +1,8 @@ -\input{cu/cu1} % control de acceso -\input{cu/cu2} % Recuperar Contaseña -\input{cu/cu3} % Cambiar datos de empleado -\input{cu/cu4} % Desactivar el estado del empleado -\input{cu/cu5} % Listar Empleados y sus datos -\input{cu/cu6} % Reasignar Sucursales a supervisor -\input{cu/cu7} % Activar estado de empleado +\input{cu/cu0} % control de acceso +\input{cu/cu13} % Consultar Proveedor +\input{cu/cu14} % Recibir medicamentol +\input{cu/cu15} % Agregar Sucursal + diff --git a/images/diagramaRelacional1.png b/images/diagramaRelacional1.png index ff913b5..ff2f7ea 100644 Binary files a/images/diagramaRelacional1.png and b/images/diagramaRelacional1.png differ diff --git a/images/diagramaRelacional2.png b/images/diagramaRelacional2.png index 94eb492..e2ed6e3 100644 Binary files a/images/diagramaRelacional2.png and b/images/diagramaRelacional2.png differ