scieee AI-readable full text Open interactive document viewer

Desarrollo de un sistema de información para un restaurante

Castro Escobar, Óscar

Abstract

En España el principal sustentador de la economía es el sector servicios, y en concreto los servicios de hostelería son el sector donde se suelen crear mayor número de puestos de trabajo, debido en parte a la elevada demanda turística. En Málaga, debido a su situación geográfica y su buen clima la demanda de servicios de hostelería es incluso mayor. Debido a esta demanda, existe una gran competitividad, que hace que la diferenciación y la prestación de servicios de calidad sean esenciales para alcanzar la satisfacción del cliente. En este contexto, en este trabajo fin de grado se ha tomado como caso de estudio un restaurante cuya principal actividad es la elaboración de platos y menús para consumir dentro del propio local. En esta línea, se ha desarrollado una aplicación web que facilite la realización de las actividades habituales en el funcionamiento y gestión de un restaurante. Concretamente, se han automatizado diferentes procesos del restaurante, como la gestión de las mesas, gestión de comandas, gestión de reservas, gestión de stock e inventarios y realización de escandallos, entre otros. El objetivo es mejorar de esta forma la eficiencia y la organización, así como proporcionar a los trabajadores una herramienta útil para realizar su trabajo, además de simplificar la tarea de realizar una reserva, lo que repercutirá en una mayor satisfacción del cliente.

Full text

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA DESARROLLO DE UN SISTEMA DE INFORMACIÓN PARA UN RESTAURANTE DEVELOPMENT OF AN INFORMATION SYSTEM FOR A RESTAURANT Realizado por Óscar Castro Escobar Tutorizado por Carlos Rossi Jiménez Departamento Lenguajes y Ciencias de la Computación UNIVERSIDAD DE MÁLAGA MÁLAGA, diciembre 2018 Fecha defensa: El Secretario del Tribunal Resumen: En España el principal sustentador de la economía es el sector servicios, y en concreto los servicios de hostelería son el sector donde se suelen crear mayor número de puestos de trabajo, debido en parte a la elevada demanda turística. En Málaga, debido a su situación geográfica y su buen clima la demanda de servicios de hostelería es incluso mayor. Debido a esta demanda, existe una gran competitividad, que hace que la diferenciación y la prestación de servicios de calidad sean esenciales para alcanzar la satisfacción del cliente. En este contexto, en este trabajo fin de grado se ha tomado como caso de estudio un restaurante cuya principal actividad es la elaboración de platos y menús para consumir dentro del propio local. En esta línea, se ha desarrollado una aplicación web que facilite la realización de las actividades habituales en el funcionamiento y gestión de un restaurante. Concretamente, se han automatizado diferentes procesos del restaurante, como la gestión de las mesas, gestión de comandas, gestión de reservas, gestión de stock e inventarios y realización de escandallos, entre otros. El objetivo es mejorar de esta forma la eficiencia y la organización, así como proporcionar a los trabajadores una herramienta útil para realizar su trabajo, además de simplificar la tarea de realizar una reserva, lo que repercutirá en una mayor satisfacción del cliente. Palabras claves: Aplicación web, sistema de información, restaurante, análisis, diseño Abstract: In Spain, the main sustainer of the economy is the service sector, and in particular the hotel services are the sectorwhere they tend to create more Jobs, due in part to the high the tourist demand. In Malaga, due to its geographical situation and its good climate, the demand for hotel services is even greater. Due to this demand, there is great competitiveness, which makes the differentiation and provision of quality services essential to achieve customer satisfaction. In this context, in this final degree project a restaurant has been taken as a case study, the main activity of the restaurant is the elaboration of dishes and menus to consume within the premises. In this line, a web application has been developed to facilitate the carrying out of the usual activities in the operation and management of a restaurant. Specifically, different processes of the restaurant have been automated, such as the management of tables, management of orders, management of reserves, management of stock and inventories, and production of scandals, inter alia. The objective is to improve efficiency and organization in this way, as well as to provide workers with a useful tool to carry out their work, in addition to simplifying the task of making a reservation, which will result in greater customer satisfaction. Keywords: Web application, information system, restaurant, analysis, design 1 Tabla de contenido Introducción ........................................................................................................ 7 Problema a resolver ........................................................................................ 7 Metodología .................................................................................................... 7 Tecnologías utilizadas ..................................................................................... 7 Estructura de la memoria ................................................................................ 8 Estudio preliminar ............................................................................................... 9 Descripción general del sistema ..................................................................... 9 Alternativas de solución ................................................................................ 13 Ofibarman .................................................................................................. 13 Hosteltáctil ................................................................................................. 16 Cuiner ........................................................................................................ 19 Glop ........................................................................................................... 22 Evaluación de alternativas ......................................................................... 22 Planificación .................................................................................................. 24 Análisis del sistema .......................................................................................... 29 Catálogo de usuarios .................................................................................... 29 Requisitos funcionales .................................................................................. 30 Requisitos no funcionales ............................................................................. 33 Requisitos de información ............................................................................. 34 Casos de uso ................................................................................................ 36 Casos de uso Cliente no registrado ........................................................... 37 Casos de uso Usuario................................................................................ 38 Casos de uso Cliente registrado ................................................................ 39 Casos de uso Camarero ............................................................................ 44 Casos de uso Jefe de cocina ..................................................................... 48 Casos de uso Gerente ............................................................................... 60 8 atractivas, JavaScript y jquery para conseguir un comportamiento dinámico en algunas páginas y para la validación de formularios. Estructura de la memoria Esta memoria se encuentra dividida en diferentes capítulos, a continuación, se detalla brevemente el contenido de cada uno de ellos. • En el primer capítulo se describe cual es el problema que se platea solucionar, cual es la solución propuesta para resolverlo y tecnologías empleadas, la metodología aplicada y como se organiza la memoria. • En el segundo capítulo se desarrollará un estudio preliminar, se describirá el sistema que se plantea desarrollar, también se estudiarán otras alternativas de solución y se mostrará la planificación temporal seguida en el desarrollo del proyecto. • En el tercer capítulo se abordará el análisis y diseño del sistema, se estudiarán tanto los usuarios como de los requisitos de la aplicación, sus diferentes casos de uso, y se mostrarán los diagramas de clases, modelo físico de datos y diagramas de secuencia. • El cuarto capítulo se centra en el diseño de la interfaz de usuario, en la implementación y arquitectura utilizada • El quinto capítulo se centrará en el entorno tecnológico, se describirán todas las tecnologías y herramientas de desarrollo que han sido utilizadas. • El capítulo sexto recogerá las conclusiones y líneas futuras. • Bibliografía, en la que se incluirán tanto las referencias bibliográficas como web. • Por último, el apéndice A, que contiene el manual de usuario que detalla el funcionamiento de la aplicación para todos los usuarios. 9 Capítulo 2 Estudio preliminar En esta sección se realizará descripción general del sistema que se propone desarrollar para dar solución al problema, también se estudiarán y compararán otras alternativas de solución de entre las existentes en el mercado y para finalizar se detallará la planificación del proyecto Descripción general del sistema En España el principal sustentador de la economía es el sector servicios, y en concreto los servicios de hostelería son el sector donde se suele crear mayor número de puestos de trabajo, hecho que se ve reforzado por la demanda turística y el gran número de visitantes extranjeros. En Málaga, debido a su situación geográfica y su buen clima la demanda de servicios de hostelería es aún más relevante que en otras provincias. Es habitual en las empresas pequeñas de este sector realizar la gestión manualmente o utilizando hojas de cálculo. Es evidente que estas opciones no cubren con la funcionalidad requerida y que como cualquier otra empresa, necesitan hoy en día de un conjunto adecuado de sistemas de información que automaticen sus principales procesos. En particular son especialmente importantes los procesos relacionados con la gestión comercial y de almacén del restaurante. En este TFG se ha desarrollado un sistema de información con arquitectura de aplicación web, con el objetivo de cubrir las necesidades y requisitos de un restaurante. La aplicación tiene por objetivo simplificar y automatizar gran parte de los procesos implicados en la gestión de un restaurante, facilitando a los distintos empleados (gerente, jefe de cocina y camareros) la realización de sus actividades, además de proporcionar un medio a través del cual los clientes puedan registrarse y realizar peticiones de reserva. El sistema permitirá realizar diferentes actividades dependiendo del tipo de usuario autenticado, algunas de estas actividades se enmarcan en el front-office 10 del restaurante como son la gestión de mesas, la gestión de reservas, la gestión de la carta y menús del día, la gestión de comandas. El resto de las actividades implementadas forman parte del back-office, como la gestión de compras, la gestión de inventarios, la gestión de proveedores, la realización de escandallos y la generación de informes. Un cliente no registrado podrá acceder a la aplicación y consultar los diferentes platos que componen la carta y los distintos menús del día del restaurante (uno por cada día de la semana), los ingredientes de cada plato, los alérgenos y el precio de cada uno de ellos. El cliente tendrá la posibilidad de registrarse en la aplicación, para ello deberá proporcionar a la aplicación su nombre, apellidos, un email, una contraseña y un teléfono de contacto. Al registrarse, el cliente pasará a ser un cliente registrado, esto le dará acceso a más funcionalidades de la aplicación. Un cliente registrado podrá además realizar peticiones de reserva al restaurante a través de la aplicación. Para realizar una petición, el cliente deberá introducir en la aplicación algunos datos relativos a la reserva, como la fecha y hora de la reserva y el número de comensales. Una vez la solicitud de reserva sea enviada por el cliente el gerente del restaurante recibirá una notificación y deberá estudiar la petición. Posteriormente, cuando el gerente acepte o rechace la petición el cliente recibirá una notificación en la que se indicará la resolución de la solicitud y la fecha y hora a la que se envió la notificación. La aplicación permitirá la cancelación de reservas. El cliente también tendrá la posibilidad de consultar y editar su información introducida en el momento del registro, y eliminar su perfil. El gerente del restaurante podrá gestionar las diferentes mesas del local, pudiendo crear, consultar, modificar y eliminar mesas. En el momento de creación la aplicación solicitará el número de mesa, número de asientos y su ubicación en el restaurante. También tendrá la posibilidad de realizar la gestión de las reservas, podrá crear reservas a clientes que deseen realizar la reserva de forma presencial en el propio local o por teléfono, así como consultar, modificar y eliminar las reservas existentes. Otra funcionalidad relacionada con las reservas será la validación de éstas, ya que cuando un cliente registrado 11 realice una solicitud de reserva el gerente recibirá una notificación, y la aplicación le permitirá aceptar o rechazar la solicitud. La aplicación también le facilitará la gestión de los camareros, permitiéndole crear un nuevo camarero o consultar, modificar y eliminar alguno de los existentes. Otras funcionalidades presentes en la aplicación serán la gestión de la carta y de los menús del día (uno por cada día de la semana), esta funcionalidad permitirá seleccionar cuáles de los platos existentes formarán parte de la carta y cuáles de los menús, además permitirá fijar el precio de éstos. Una última funcionalidad disponible para el gerente será la del análisis de datos: esta le permitirá generar diferentes gráficos estadísticos e informes tanto del funcionamiento del restaurante como de sus empleados. Otro de los empleados que podrá beneficiarse del uso de la aplicación será el jefe de cocina. El sistema le permitirá crear, consultar, modificar y eliminar tanto los productos utilizados para la realización de platos como las bebidas disponibles para su venta (vinos, refrescos, cervezas). En el momento de creación de un nuevo producto o bebida el sistema solicitará su nombre, nombre detallado, una imagen (opcional), una descripción, el tipo de producto o bebida, los stocks mínimo, máximo y actual, el tipo de IVA asociado y un precio. Otra funcionalidad disponible para el jefe de cocina será la gestión de platos, de manera que podrá crear, consultar, modificar y eliminar los diferentes platos. Cada plato tendrá un nombre, un tipo de plato (primero, segundo, postre), ingredientes y alérgenos. El sistema también permitirá gestionar los proveedores, permitiendo crear un nuevo proveedor o consultar, editar o modificar alguno de los existentes. También al igual que el gerente, el jefe de cocina podrá realizar la gestión de la carta y de los menús del día del restaurante, pero no podrá fijar el precio de venta. La aplicación también le permitirá gestionar las compras mediante la creación, consulta, y modificación de albaranes de compra. Otra de las tareas que simplificará el sistema será la gestión de inventarios, ya que la aplicación permitirá consultar en todo momento el estado actual del inventario. Además, el sistema generará una notificación para el jefe de cocina en el momento en que alguno de los productos se encuentre por debajo del stock mínimo. 12 La aplicación también permitirá al jefe de cocina recibir las comandas enviadas por los camareros, pudiendo ser mostradas en un monitor. En este sentido, se mostrará la mesa, la hora de creación de la comanda y los platos que la componen. Además, las comandas podrán ser borradas de la lista cuando su preparación haya finalizado. Una última funcionalidad disponible para el jefe de cocina será la realización de escandallos. Un escandallo de un plato es el cálculo del coste del plato en función de los diferentes productos que lo integran y del precio de éstos. La aplicación permitirá crear escandallos asociados a cada uno de los platos existentes, que también podrán ser consultados y editados. Cada uno contendrá el plato asociado, el autor, una descripción, la fecha en la que se realizó, coste del plato y la lista de ingredientes del plato junto a sus pesos bruto, neto, la merma y precio unitario. Los camareros también podrán hacer uso de la aplicación. Ésta tendrá un diseño adaptativo que les permitirá realizar la gestión de comandas a través de sus propios dispositivos móviles. La gestión de comandas incluirá la creación, consulta y modificación de éstas. En el momento de creación el camarero deberá introducir la mesa a la que pertenece y el contenido de la comanda. Ésta podrá ser enviada al jefe de cocina para ser mostradas en la cocina a través de un monitor. El sistema también permitirá registrar el pago de la comanda y generar un ticket para ser entregado al cliente en el momento del pago. El ticket incluirá el logotipo del restaurante (opcional), nombre, dirección, teléfono, NIF del restaurante, la fecha y hora de la emisión, el nombre del camarero que atendió la mesa, también aparecerán listados los productos que formaban la comanda junto a su precio, el importe final de la cuenta con y sin IVA. Por último, existirá un usuario administrador que podrá acceder a todas las funcionalidades disponibles para el resto de los usuarios. Además, la aplicación permitirá a este usuario la creación, modificación, consulta y eliminación usuarios con el perfil de gerente, jefe de cocina y camarero. Todos los usuarios excepto el cliente no registrado deberán autenticarse en la aplicación mediante su correo electrónico y una contraseña, para poder 13 acceder a las distintas funcionalidades asignadas a su perfil. El sistema dará a los usuarios la posibilidad de recordar su contraseña. En el desarrollo de la aplicación se utilizarán diferentes tecnologías y frameworks. El sistema se implementará usando HTML junto con el lenguaje de programación PHP. Para conseguir un aspecto visual más atractivo se empleará CSS y el framework Bootstrap, y además para dotar de dinamismo a la aplicación se utilizará JavaScript. Se utilizará MySQL como sistema gestor de base de datos relacional. Alternativas de solución En esta sección se describirán diferentes softwares que podrían utilizarse para dar solución a las necesidades del restaurante. En el mercado existen una gran variedad de soluciones software destinadas a cubrir las distintas necesidades de servicios de hostelería como bares, restaurantes, pizzerías, etc. La mayoría de estas soluciones presentan una funcionalidad similar, a saber, gestión de comandas, gestión de mesas, gestión de inventarios, control de stock y creación de escandallos, entre otras. A continuación se analizan algunas de las soluciones software más relevantes para la gestión de restaurantes, describiendo las principales funcionalidades que ofrecen. Ofibarman Es un software para bares y restaurantes que permite trabajar a través de TPV táctiles. Dispone de diferentes módulos que permiten incrementar el número de funcionalidades de la aplicación. Puede adquirirse de dos formas distintas, mediante compra o pago por uso por 17€/mes. Las funcionalidades más destacadas de este sistema son: • Posibilidad de que los camareros realicen la toma y envío de comandas a través de distintos dispositivos (TPV, tablets, PDAs, smartphones) utilizando el software OfiComanda. • Recepción de comandas mediante impresora de tickets o en pantalla táctil. 14 • Identificación de camareros de manera manual o mediante pulseras de proximidad o tarjetas de banda magnética. • Posibilidad de establecer diferentes configuraciones para diferentes usuarios. • Representación gráfica de la distribución de mesas. • Fidelización de clientes mediante puntos de regalo canjeables por premios, usando el módulo OfiVip. Figura 1: Ventana inicial OfiBarman 15 Figura 2: Generación de comanda • Realización de inventarios. • Creación de albaranes de proveedores. • Registro de movimiento entre almacenes. • Generación de contabilidad automática. • Facturación electrónica mediante el módulo de OfiFactura. • Posibilidad de realizar cierres de turnos y cierres de caja. • Generación de diferentes estadísticas (listado de cierres, ventas por camarero, ventas por horas, ventas por turnos, producción) (Ver Figura 3). 16 Figura 3: Ventana estadística de ventas del TPV Hosteltáctil Se trata de un software de gestión para bares y restaurantes mediante TPV táctil. Dispone de una interfaz sencilla y fácil de usar, su pantalla principal permite tener siempre a mano las funciones necesarias y ocultar las innecesarias. Sus principales funcionalidades son las siguientes: • Gestión de productos. • Gestión automática de diferentes IVA’s. • Gestión de descuentos y precios especiales. • Gestión de productos y escandallos. • Gestión y control del almacén y stock de productos. • Envío de pedidos y comandas automáticamente a cocina. • Posibilidad de tele comanda mediante PDA’s, tablets Android y sistemas de pedidos portátiles Orderman. • Gestión de salones y mesas. 17 • Traslados de comandas entre mesas. • Diferente nivel de acceso de usuarios y/o trabajadores. • Control de horario de trabajadores mediante la posibilidad de fichar. • Copia de seguridad almacenada en Google Drive. • Gestión de diferentes métodos de pago (efectivo, visa, cheque). • Gestión de reservas. • Gestión de tickets y facturas. (Ver Figura 6). • Gestión de base de datos de clientes. • Fidelización de clientes mediante tarjetas de fidelización personalizadas. • Realización de cierres de caja. • Generación de gran variedad de informes (cierres de caja, datos económicos, control de horarios de trabajadores. Figura 4. Ventana inicial 24 Capítulo 2 Planificación Para el desarrollo de este proyecto se ha seguido una metodología inspirada en SCRUM, aunque adaptada a un proyecto realizado por una única persona, con sprints de aproximadamente quince días de duración, tras los cuales se hacía una revisión del sprint para verificar la calidad y adecuación del trabajo realizado. A continuación se describen los sprints realizados: • Sprint 0 (Fase de análisis) Durante este sprint se realizó un análisis completo del sistema a desarrollar, se estudiaron los requisitos que presentaban cada una de las partes interesadas en la aplicación, se realizaron todos los diagramas del sistema y se diseñó la totalidad de su interfaz. • Sprint 1 (Formación en las tecnologías) Este sprint se utilizó para la formación en las diferentes tecnologías que se utilizarían en la fase de desarrollo, esto incluyó el aprendizaje de PHP, Bootstrap, y algunas librerías de JavaScript y PHP y un repaso general a modo de recordatorio de las ya conocidas. • Sprint 2 (Inicio fases de desarrollo) En este sprint comenzó el desarrollo de la aplicación, su duración fue mayor de lo habitual, debido a que coincidió con las vacaciones de verano (agosto). Se desarrollaron las siguientes funcionalidades: o Administrador ▪ CRUD de usuarios. o Camarero ▪ Gestión de comandas. Además, se desarrolló la autenticación de todos los usuarios. • Sprint 3 Las funcionalidades desarrolladas fueron las siguientes: o Gerente ▪ CRUD’s de mesas y camareros. 25 o Jefe de cocina ▪ CRUD’s de productos y proveedores. o Cliente no registrado ▪ Carta del restaurante. ▪ Formulario de registro en la aplicación. Además, se desarrolló la recuperación de contraseña en caso de pérdida u olvido para todos los usuarios. • Sprint 4 En este periodo de tiempo se continuó con el desarrollo de la aplicación. o Administrador ▪ Funcionalidad añadir datos del restaurante. ▪ Envío de correos electrónicos al crear usuarios y editar contraseñas. o Gerente ▪ Gestión de la carta y de los menús del día. ▪ CRUD de reservas. o Jefe de cocina ▪ Gestión de la carta y de los menús del día. ▪ CRUD’s de platos y bebidas. o Cliente registrado ▪ Posibilidad de editar y eliminar perfil. ▪ Solicitudes de reserva. o Cliente no registrado ▪ Mejoras en la carta del restaurante. ▪ Menús del día ▪ Detalles del plato En este mismo sprint se introdujeron verificaciones a los formularios de la aplicación, se añadieron imágenes para identificar a los alérgenos presentes en los productos. • Sprint 5 Se desarrollaron las funcionalidades de los siguientes usuarios: o Administrador ▪ Se le dio acceso a la funcionalidad del resto de usuarios. o Gerente 26 ▪ Mejoras significativas en el CRUD de reservas. ▪ Creación de reservas a clientes no usuarios de la aplicación. ▪ Validación de solicitudes de reserva. o Jefe de cocina ▪ Gestión de compras. ▪ Consultar inventario. ▪ Consulta de comandas recibidas. o Camarero ▪ Envío de comandas al jefe de cocina. o Cliente registrado ▪ Mejoras en la solicitud de reservas. ▪ Consulta y cancelación de reservas. ▪ Posibilidad de cambia su contraseña. • Sprint 6 o Gerente ▪ Notificaciones o Jefe de cocina ▪ Gestión de escandallos. ▪ Mejora de consultar inventario. o Camarero ▪ Posibilidad de ver disponibilidad de mesas al crear una comanda. o Cliente registrado ▪ Consultar notificaciones. ▪ Mejora en la consulta de reservas • Sprint 7 Este último sprint se ha dedicado a la elaboración de la memoria del trabajo fin de grado. En la siguiente imagen se muestra un diagrama de Gantt que recoge la temporización de los diferentes sprints. 27 Figura 11: Diagrama de Gantt del proyecto 28 29 Capítulo 3 Análisis del sistema Catálogo de usuarios A continuación, se muestran los diferentes usuarios participantes de la aplicación, junto con una descripción de las distintas acciones que pueden realizar en el sistema: • Cliente no registrado o Puede consultar el menú del restaurante, o realizar su registro en la aplicación para pasar a ser un cliente registrado • Cliente registrado o Puede interactuar con la aplicación, realizando peticiones de reserva, o modificando la información introducida en el momento del registro. • Camarero o Es la persona que se encarga de prestar el servicio a los clientes en la sala. El servicio incluye tanto el acompañamiento de los clientes a la mesa, la preparación de ésta, resolver dudas y dar sugerencias. • Gerente o Es la persona encargada de supervisar el trabajo realizado por el resto del personal, también se encarga de la organización de las mesas y la gestión de reservas. El gerente realiza la gestión de mesas y la validación de reservas a través de la aplicación, además tendrá acceso a la funcionalidad de análisis de datos y generación de informes. • Jefe de cocina o Es la persona encargada de dirigir y supervisar las tareas realizadas en la cocina, gestionar camareros, planificar platos y menús, pedidos, control de inventarios y realización de escandallos. La aplicación permitirá que realice estas tareas. 30 • Administrador o Es el encargado de controlar todo el sistema, debe de tener acceso a todas las funcionalidades, con el fin de poder realizar tareas de mantenimiento o dar solución ante posibles errores. Requisitos funcionales En este apartado se definirán las diferentes funcionalidades que debe de proporcionar la aplicación. Para identificar correctamente cada uno de los requisitos se ha seguido la siguiente notación, cada requisito estará identificado por las siguas RF (Requisito funcional) seguido de un número identificativo único. • RF1 – Gestión de mesas (CRUD) o La aplicación permitirá al gerente la creación, lectura, modificación y eliminación de mesas. • RF2 – Registro de cliente o El sistema permitirá a un cliente no registrado la creación de un perfil de cliente registrado. • RF3 – Consulta, modificación y eliminación de clientes registrados o El sistema permitirá a un cliente registrado acceder a su información, modificarla y darse de baja. • RF4 – Gestión de reservas (CRUD) o La aplicación posibilitará al gerente la creación, consulta, modificación y eliminación de reservas. • RF5 – Solicitud de reserva o La aplicación permitirá a un cliente registrado realizar una solicitud de reserva a través de la web. • RF6 – Cancelar reserva o La aplicación permitirá a un cliente registrado cancelar su reserva a través de la web. • RF7 – Validar solicitud de reserva o La aplicación permitirá al gerente aceptar o rechazar la petición de reserva realizada por un cliente registrado. • RF8 – Generación de notificaciones 31 o La aplicación generará una notificación al gerente cuando un cliente realice una petición de reserva y al cliente cuando la petición sea validada por el gerente. • RF9 – Autenticación o La aplicación permitirá autenticarse a los diferentes usuarios, accediendo a un contenido y funcionalidad diferente dependiendo de su rol. • RF10 – Recordar contraseña o La aplicación permitirá a cualquier usuario la posibilidad de recuperar su contraseña. • RF11 – Gestión de camareros (CRUD) o La aplicación permitirá al gerente la creación, consulta, modificación y eliminación de camareros. • RF12 – Gestión de comandas o El sistema permitirá a los camareros la creación, consulta, modificación de comandas, asociadas a una mesa, a través del navegador web de su smartphone. • RF13 – Envío de comanda o Los camareros podrán realizar el envío de la comanda generada al Jefe de cocina, para ser mostrada en un monitor en la cocina. • RF14 – Recepción de comandas o El jefe de cocina podrá ver las comandas recibidas y seleccionar que una comanda deje de ser mostrada cuando ya haya sido preparada. • RF15 – Generación de ticket o La aplicación permitirá generar a partir de la comanda un ticket para el cliente. • RF16 – Registrar pago de comanda o La aplicación permitirá a los camareros registrar el pago de las comandas. • RF17 – Gestión de productos (CRUD) o La aplicación permitirá al Jefe de cocina crear, consultar, modificar y eliminar productos. 32 • RF18 – Gestión de platos (CRUD) o La aplicación permitirá al Jefe de cocina crear, consultar, modificar y eliminar platos, se deberá poder indicar los alérgenos presentes en el plato. • RF19 – Gestión de carta o La aplicación permitirá tanto al Jefe de cocina como al Gerente seleccionar cuales productos y platos existentes formarán parte de la carta del restaurante. Además, el gerente podrá fijar los precios de la carta. • RF20 – Gestión del menú del día o La aplicación permitirá tanto al Jefe de cocina como al Gerente seleccionar cuales de los productos y platos existentes formarán parte de cada menú del día (uno para cada día de la semana). Además, el gerente podrá fijar los precios de los menús. • RF21 – Gestión de proveedores (CRUD) o El jefe de cocina podrá crear, consultar, modificar y eliminar proveedores. • RF22 – Gestión de compras o El sistema permitirá al jefe de cocina crear, consultar y modificar albaranes de compra. • RF23 – Consultar inventario o La aplicación permitirá al Jefe de cocina consultar el inventario • RF24 – Notificaciones de stock o La aplicación notificará al Jefe de cocina cuando alguno de los productos esté por debajo del stock mínimo. • RF25 – Realización de escandallos o La aplicación hará posible al jefe de cocina crear escandallos asociados a cada uno de los platos existentes, también podrá consultarlos y editarlos. • RF26 – Análisis de datos o La aplicación permitirá al gerente la generación de gráficos estadísticos e informes tanto del funcionamiento del restaurante como de sus empleados. 33 • RF27 – Gestión de usuarios (CRUD) o La aplicación permitirá al administrador la creación, consulta, modificación y eliminación de cuentas de diferentes tipos de usuarios (jefe de cocina, gerente, camarero, administrador). El sistema permitirá a un administrador eliminar la cuenta de otro administrador, siempre garantizando que exista al menos un administrador en el sistema. • RF28 – Almacenar datos del restaurante o La aplicación permitirá al administrador almacenar diferentes datos del restaurante como dirección, teléfono, NIF, etc. • RF29 – Consulta de carta y menú del día o La aplicación permitirá tanto a los clientes registrados como los no registrados consultar la carta y menú del día Requisitos no funcionales En esta sección se abordarán las diferentes características generales de funcionamiento y restricciones del sistema. De manera similar al apartado anterior, en este cada uno de los requisitos estará identificado unívocamente mediante las siglas RNF (Requisito no funcional) seguido de un número de identificación único. • RNF1 – Acceso al sistema o El sistema será accesible a los usuarios a través de distintos dispositivos. El sistema será soportado por las últimas versiones de los siguientes navegadores. ▪ Dispositivos móviles • Dispositivos Android: Chrome, Firefox y Microsoft Edge. • Dispositivos iOS: Chrome, Firefox, Safari y Microsoft Edge. • Dispositivos Windows 10 Mobile: solo soportado por Microsoft Edge ▪ PC 40 Precondiciones El usuario debe estar autenticado en el sistema como cliente Escenario de éxito 1. El usuario pulsa en el botón Perfil del menú de navegación. 2. El sistema recupera la información del cliente de la base de datos. 3. Redirección a la página Perfil 4. Se muestra la información del cliente. Escenario alternativo Ninguno. Caso de uso Editar perfil. Actor principal Cliente registrado. Precondiciones El usuario debe estar autenticado en el sistema como cliente. Estar en la página Perfil. Escenario de éxito 1. El cliente pulsa en el botón Perfil del menú de navegación. 2. El sistema recupera la información del cliente de la base de datos. 3. Redirección a la página Perfil 4. Se muestra la información del cliente. 5. El cliente pulsa el botón Editar perfil 6. El sistema recupera la información del cliente de la base de datos. 7. Redirección a la página Editar perfil. 41 8. Se muestra la información del cliente. 9. El cliente realiza modificaciones en los datos. 10. El cliente pulsa sobre el botón Editar perfil. 11. Se insertan los datos en la base de datos. 12. Redirección a la página Perfil. Escenario alternativo 11. El sistema informa al usuario de que falta algún campo obligatorio por rellenas o alguno de los valores no son correctos. Caso de uso Eliminar perfil. Actor principal Cliente registrado. Precondiciones El usuario debe estar autenticado en el sistema como cliente. Estar en la página Perfil Escenario de éxito 1. El cliente pulsa en el botón Eliminar perfil. 2. El sistema confirma la operación. 3. El cliente pulsa el en botón Sí 4. Se elimina la información del cliente de la base de datos Escenario alternativo 4. No se elimina la información del cliente. 42 Caso de uso Realizar solicitud de reserva. Actor principal Cliente registrado. Precondiciones El usuario debe estar autenticado en el sistema como cliente. Escenario de éxito 1. El cliente introduce los datos de la reserva. 2. El cliente pulsa sobre el botón Enviar solicitud. 3. Se registra la solicitud de reserva en la base de datos. 4. Se envía una notificación al gerente. 5. Redirección a la página principal del cliente. Escenario alternativo 3. El sistema informa al cliente de que existen campos obligatorios sin rellenar o algún valor no es válido. Caso de uso Consultar estado de solicitud. Actor principal Cliente registrado. Precondiciones El usuario debe estar autenticado en el sistema como cliente. Escenario de éxito 1. El cliente pulsa sobre el botón Consultar reserva del menú de navegación. 2. Se recupera la información de reservas de la base de datos. 3. Redirección a la página Consultar reservas. 4. El sistema muestra las reservas. 43 Escenario alternativo Ninguno. Caso de uso Cancelar reserva. Actor principal Cliente registrado. Precondiciones El usuario debe estar autenticado en el sistema como cliente. Estar en la página Consultar reservas. Escenario de éxito 1. El cliente pulsa en el botón Cancelar de una de las reservas. 2. El sistema solicita confirmar la operación 3. El cliente pulsa el botón Sí. 4. Se cancela la reserva en la base de datos. 5. Se recupera la información de reservas de la base de datos. 6. Redirección a la página Consultar reservas. Escenario alternativo 4. La reserva no es cancelada. Caso de uso Consultar notificaciones. Actor principal Cliente registrado. Precondiciones El usuario debe estar autenticado en el sistema como cliente. Escenario de éxito 1. El cliente pulsa en el botón Consultar notificaciones del menú de navegación 44 2. Se recupera la información de las notificaciones en la base de datos. 3. Redirección a la página Notificaciones. 4. Se muestra información de las notificaciones. Escenario alternativo 4. El sistema informa de que no existen notificaciones pendientes de leer. Casos de uso Camarero Figura 15. Casos de uso Camarero Caso de uso Gestión de comandas Actor principal Camarero Precondiciones El usuario debe estar autenticado en el sistema como Camarero. Escenario de éxito 1. El camarero pulsa en el botón Gestión de comandas del menú de navegación. 2. Se recupera la información de las comandas de la base de datos 3. Redirección a la página Comandas. 45 4. El sistema muestra la información de las comandas. Escenario alternativo Ninguno. Caso de uso Crear comanda. Actor principal Camarero. Precondiciones El usuario debe estar autenticado en el sistema como Camarero. Estar en la página Comandas. Escenario de éxito 1. El camarero pulsa hace clic en el botón Nueva comanda. 2. Se recupera la información sobre la disponibilidad de las mesas de la base de datos. 3. Redirección a la página Seleccionar mesa. 4. El camarero selecciona una mesa y pulsa el botón Seleccionar. 5. El sistema crea la comanda en la base de datos. 6. Se recupera la información sobre los platos, bebidas, menús y líneas de comanda. 7. Redirección a la página Crear comanda. 8. El sistema muestra la información. Escenario alternativo Ninguno. Caso de uso Modificar comanda. Actor principal Camarero. 46 Precondiciones El usuario debe estar autenticado en el sistema como camarero. Estar en la página Comandas. Escenario de éxito 1. El camarero pulsa en el botón Editar de una comanda. 2. Se recupera la información de la comanda de la base de datos. 3. Se recuperan lo platos, bebidas y menús de la base de datos. 4. Redirección a la página Editar comanda 5. Mostrar la información de la comanda, platos, bebidas y menús. 6. El cliente pulsa sobre alguno de los platos. 7. Almacenar modificaciones en la base de datos. Escenario alternativo Ninguno. Caso de uso Enviar comanda Actor principal Camarero Precondiciones El usuario debe estar autenticado en el sistema como camarero. Estar en la página Crear comanda o Editar comanda Escenario de éxito 1. El camarero pulsa el botón Enviar comanda. 2. Se actualiza el estado de la comanda para ser enviada al gerente. Escenario alternativo Ninguno. 47 Caso de uso Consultar comanda Actor principal Camarero. Precondiciones El usuario debe estar autenticado en el sistema como Camarero. Estar en la página Comandas Escenario de éxito 1. El camarero pulsa en el botón Consultar de una de las comandas. 2. Se recupera la información de la comanda de la base de datos. 3. Redirección a la página Consultar comanda. 4. Mostrar la información de la comanda. Escenario alternativo Ninguno. Caso de uso Registrar pago. Actor principal Administrador. Precondiciones El usuario debe estar autenticado en el sistema como camarero. Estar en la página Consultar comanda de alguna comanda con estado diferente a “Pagada”. Escenario de éxito 1. El camarero selecciona un método de pago. 2. El camarero hace clic en el botón Registrar pago. 3. El sistema registra el pago de la comanda en la base de datos. Escenario alternativo Ninguno. 48 Caso de uso Generar ticket. Actor principal Camarero. Precondiciones El usuario debe estar autenticado en el sistema como camarero. Estar en la página Consultar comanda de alguna comanda con estado “Pagada”. Escenario de éxito 1. El camarero pulsa en el botón Generar ticket 2. El sistema genera un ticket de la comanda en formato PDF. Escenario alternativo Ninguno. Casos de uso Jefe de cocina Figura 16. Casos de uso Jefe de cocina Caso de uso Gestión de productos (CRUD). Actor principal Jefe de cocina. Precondiciones Estar autenticado en el sistema como jefe de cocina. 49 Escenario de éxito 1. El jefe de cocina pulsa en el botón Productos del menú de navegación. 2. Se recupera la información de los productos de la base de datos. 3. Redirección a la página CRUD Productos. 4. El sistema muestra todos los productos existentes. Escenario alternativo 4. El sistema indica que no existen productos. Caso de uso Gestión de bebidas (CRUD). Actor principal Jefe de cocina. Precondiciones Estar autenticado en el sistema como jefe de cocina. Escenario de éxito 1. El jefe de cocina hace clic en el botón Bebidas del menú de navegación. 2. Se recupera la información de las bebidas de la base de datos. 3. Redirección a la página CRUD Bebidas. 4. El sistema muestra todas las bebidas existentes. Escenario alternativo 4. El sistema indica que no existen bebidas. Caso de uso Gestión de platos (CRUD). Actor principal Jefe de cocina. 56 Escenario de éxito 1. El jefe de cocina hace clic en el botón Crear nuevo albarán. 2. Redirección a la página Crear albarán. 3. El jefe de cocina rellena los campos del formulario. 4. El jefe de cocina pulsa en el botón Crear. 5. El sistema crea y almacena el albarán en la base de datos. 6. Se recupera información de los productos y bebidas. 7. Redirección a la página Añadir línea albarán. Escenario alternativo 5. El sistema informa de que existen campos obligatorios sin rellenar. Caso de uso Consultar albarán Actor principal Jefe de cocina Precondiciones El usuario debe estar autenticado en el sistema como jefe de cocina. Estar en la página Compras. Escenario de éxito 1. El jefe de cocina hace clic en el botón Consultar de uno de los albaranes de compra. 2. Se recupera de la base de datos la información del albarán y sus líneas. 3. Redirección a la página Consultar albarán. 57 4. La aplicación muestra la información del albarán y sus líneas. Escenario alternativo Ninguno. Caso de uso Modificar albarán Actor principal Jefe de cocina Precondiciones El usuario debe estar autenticado en el sistema como jefe de cocina. Estar en la página Compras. Escenario de éxito 1. El jefe de cocina pulsa en el botón Editar de uno de los albaranes. 2. Se recupera de la base de datos la información del albarán 3. Redirección a la página Editar albarán 4. El jefe de cocina modifica la información del formulario. 5. El jefe de cocina pulsa en el botón Guardar cambios 6. Se almacenan las modificaciones en la base de datos. 7. Se recuperan de la base de datos la información de las líneas del albarán. 8. Redirección a la página Editar líneas albarán. Escenario alternativo 6. El sistema avisa de que existen campos no válidos u obligatorios sin rellenar. 58 Caso de uso Gestión carta Actor principal Jefe de cocina Precondiciones El usuario debe estar autenticado en el sistema como jefe de cocina. Escenario de éxito 1. El jefe de cocina pulsa en el botón Carta del menú de navegación. 2. Se recupera la información de la carta de la base de datos. 3. Redirección a la página Gestionar carta. 4. El jefe de cocina selecciona el tipo de plato (primero, segundo, postre). 5. El jefe de cocina selecciona los platos que desea mostrar en la carta. 6. El jefe de cocina pulsa el botón guardar. 7. Se almacenan las modificaciones de la carta en la base de datos. Escenario alternativo Ninguno. Caso de uso Gestión menú del día Actor principal Jefe de cocina Precondiciones El usuario debe estar autenticado en el sistema como jefe de cocina. Escenario de éxito 1. El jefe de cocina pulsa en el botón Menús del menú de navegación 59 2. Se recupera de la base datos información sobre los platos 3. Redirección a la página Gestionar menús. 4. El jefe de cocina selecciona el día (lunes, martes, miércoles, jueves…). 5. El jefe de cocina seleccionar los platos que desea que aparezcan en el menú. 6. El jefe de cocina pulsa en el botón Guardar. 7. Se almacenan los cambios de los menús en la base de datos. Escenario alternativo Ninguno. Caso de uso Ver comandas recibidas. Actor principal Jefe de cocina. Precondiciones El usuario debe estar autenticado en el sistema como jefe de cocina. Escenario de éxito 1. El jefe de cocina hace clic sobre el botón Comandas del menú de navegación. 2. Se recupera la información de las comandas enviadas. 3. Redirección a la página Comandas recibidas. 4. Se muestran las comandas. Escenario alternativo 4. El sistema indica que no existen comandas. Caso de uso Dejar de mostrar comanda 60 Actor principal Jefe de cocina. Precondiciones El usuario debe estar autenticado en el sistema como jefe de cocina. Estar en la página Comandas recibidas. Escenario de éxito 1. El jefe de cocina pulsa en el botón cerrar de una de las comandas 2. Se modifica la comanda en la base de datos 3. Se recupera de la base de datos la información de las comandas enviadas. 4. Redirección a la página Comandas recibidas. 5. El sistema ya no muestra la información de la comanda. Escenario alternativo Ninguno. Casos de uso Gerente Figura 17. Casos de uso Gerente 61 Caso de uso Gestión de mesas (CRUD). Actor principal Gerente. Precondiciones El usuario debe estar autenticado en el sistema como gerente. Escenario de éxito 1. El gerente pulsa en el botón Mesas del menú de navegación. 2. Se recupera de la base de datos la información de las mesas del restaurante. 3. Redirección a la página CRUD mesas. 4. El sistema muestra la información de las mesas. Escenario alternativo 4. El sistema informa de que no existen mesas. Caso de uso Gestión de camareros (CRUD) Actor principal Gerente. Precondiciones El usuario debe estar autenticado en el sistema como gerente. Escenario de éxito 1. El gerente pulsa en el botón Camareros del menú de navegación. 2. Se recupera de la base de datos información de los camareros. 3. Redirección a la página CRUD camareros. 4. El sistema muestra la información de los camareros. Escenario alternativo 4. El sistema informa de que no existen camareros. 62 Casos de uso Gestión de reservas (CRUD). Actor principal Gerente. Precondiciones El usuario debe estar autenticado en el sistema como gerente. Escenario de éxito 1. El gerente pulsa sobre el botón Reservas del menú de navegación 2. Se recupera de la base de datos todas las reservas. 3. Redirección a la página CRUD reservas. 4. El sistema muestra la información de las reservas. Escenario alternativo 4. El sistema informa de que no existen reservas. Caso de uso Validar solicitudes de reserva. Actor principal Gerente. Precondiciones El usuario debe estar autenticado en el sistema como gerente. Estar en la página CRUD reservas. Escenario de éxito 1. El gerente hace clic en el botón Validar peticiones. 2. Se recuperan las peticiones de reserva de la base de datos. 3. Redirección a la página validar peticiones. 4. El sistema muestra las peticiones de reserva. Escenario alternativo 4. El sistema avisa de que no existen peticiones de reserva. 63 Caso de uso Gestión carta Actor principal Gerente Precondiciones El usuario debe estar autenticado en el sistema como gerente. Escenario de éxito 1. El gerente pulsa el botón Gestión carta del menú de navegación. 2. Se recuperan los platos y el coste del plato (escandallo) de la base de datos. 3. Redirección a la página Gestionar carta. 4. El gerente selecciona el tipo de plato (primero, segundo, postre), selecciona los platos que desea mostrar en la carta e indica su precio. 5. El gerente pulsa en el botón guardar. 6. Se almacenan las modificaciones de la carta en la base de datos. Escenario alternativo Ninguno. Caso de uso. Gestión menú del día. Actor principal. Gerente. Precondiciones. El usuario debe estar autenticado en el sistema como gerente. Escenario de éxito. 1. El gerente pulsa en el botón Menús del menú de navegación 2. Se recupera de la base datos información sobre los platos 64 3. Redirección a la página Gestionar menús. 4. El gerente selecciona el día (lunes, martes, miércoles, jueves…), selecciona los platos que desea que aparezcan en el menú e indica el precio del menú. 5. El gerente pulsa en el botón Guardar. 6. Se almacenan los cambios de los menús en la base de datos. Escenario alternativo. Ninguno. Caso de uso. Consultar notificaciones Actor principal. Gerente Precondiciones. Estar autenticado en el sistema como gerente. Escenario de éxito 1. El gerente hace clic en el botón notificaciones. 2. Se recuperan de la base de datos la información de las notificaciones. 3. Redirección a la página Notificaciones gerente. 4. El sistema muestra la información de las notificaciones. Escenario alternativo. 4. El sistema informa de que no existen notificaciones por leer. 65 Casos de uso Administrador Figura 18. Casos de uso Administrador Caso de uso Almacenar datos restaurante. Actor principal Administrador. Precondiciones El usuario debe estar autenticado en el sistema como administrador. Escenario de éxito 1. El administrador pulsa en el botón Datos restaurante. 2. Se intentan recuperar datos del restaurante de la base de datos. 3. Redirección a la página Datos restaurante. 4. El administrador introduce o modifica la información del restaurante. 5. El administrador pulsa el botón guardar. 6. El sistema almacena la información introducida en la base de datos. Escenario alternativo 6. El sistema le informa que existen campos obligatorios sin rellenar o los datos no son válidos. 72 Figura 21: Diagrama de secuencia de consultar escandallo 73 Figura 22: Diagrama de secuencia de crear mesa 74 75 Capítulo 4 Diseño e implementación En esta sección se abordará el diseño de la interfaz de usuario de la aplicación y la implementación del sistema desarrollado. Diseño de la interfaz Durante el desarrollo de la interfaz de la aplicación uno de los principales objetivos era conseguir que esta fuera lo más simple e intuitiva posible para el usuario, de manera que el tiempo de adaptación al uso de la aplicación fuera lo más corto posible. En busca de esta simplicidad todas las interfaces de la aplicación presentan una estética similar, sobre todo aquellas que presentan una funcionalidad semejante como son las de gestión o las de creación. Aunque el diseño de las interfaces se ha realizado para ser visualizadas en un navegador en PC, a la hora de desarrollarlas se ha aprovechado el sistema de rejilla (grid) proporcionado por Bootstrap para conseguir que las interfaces tengan un comportamiento adaptable al dispositivo en el que se está visualizando. La estructura utilizada para cada una de las páginas es la siguiente: • Menú de navegación En la parte superior de casi todas las interfaces se mostrará un menú de navegación, a través del cual el usuario de la aplicación podrá acceder rápidamente a las distintas funcionalidades que le brinda el sistema. Las funcionalidades disponibles en el menú de navegación dependerán del perfil del usuario que haya iniciado sesión en el sistema. • Contenido de la interfaz Bajo el menú de navegación se mostrará el contenido de la interfaz, que dependiendo de la interfaz de que se trate podrá contener una tabla con información, un formulario para crear o editar algún tipo de elemento. Siguiendo esta estructura se realizó la maquetación de las interfaces, algunas de ellas se muestran a continuación. 76 La Figura 23 representa la funcionalidad Gestión de reservas del gerente, en ella puede apreciarse el menú de navegación del perfil gerente seguido del contenido de la página. La Figura 24 representa la creación de un producto, esta funcionalidad solo está disponible para los jefes de cocina y los administradores. En este caso la maqueta muestra el menú de navegación de los jefes de cocina. La Figura 25 representa a la página Ver detalles del plato. En este caso la maqueta muestra el menú de navegación de los clientes registrados seguido de toda la información del plato. Figura 23: Gestión de reservas 77 Figura 24: Crear producto Figura 25: Ver detalles del plato 78 Implementación En esta sección se abordará cómo se ha llevado a cabo la implementación del sistema. Para implementar la aplicación se ha utilizado el lenguaje PHP orientado a objetos usando la librería PDO, se ha intentado seguir en la medida de lo posible el patrón modelo, vista, controlador de manera que la lógica del sistema queda separada de la interfaz. Por esta razón la aplicación queda dividida en tres capas: • Modelo: Incluye las clases y métodos que comunican con la base de datos. • Vista: Implementación de las interfaces que verá el usuario. • Controlador: Comunica las vistas con los modelos. Figura 26: Patrón modelo,vista,controlador La estructura del proyecto en NetBeans es la que se muestra en la siguiente imagen. 79 Figura 27: Estructura del proyecto La carpeta Modelo contiene todos los archivos que implementan las entidades de la aplicación. Figura 28: Contenido de la carpeta Modelo Entre los archivos modelo se encuentra el archivo Conectar.php (ver Figura 29), este archivo se encarga de realizar la conexión a la base de datos y será utilizado por el resto de los archivos para realizar la conexión. En el resto de los archivos modelo se implementan las clases que representan a las distintas entidades, sus métodos respectivos métodos getters y setters. Los 80 métodos getters nos permitirán recuperar de la base de datos información sobre un objeto. Las consultas SQL a la base de datos se han realizado mediante consultas preparadas y marcadores en PDO, algunas de las ventajas de este tipo de consultas es que ofrecen seguridad frente a la inyección sql y son más rápidas y eficientes. En la Figura 30 y Figura 31 se muestran el archivo Plato.php, el resto de los archivos modelo siguen la misma estructura. Figura 29: Archivo Conectar.php Los archivos control actúan de intermediario entre los archivos vista y modelo, en ellos se implementa la lógica del programa y las redirecciones a otras vistas. Inicialmente en la carpeta Control se pensaba incluir todos los archivos de control, pero surgió un problema, al iniciar sesión y marcar la casilla recordarme se guardaba una cookie en el directorio Control y posteriormente no era posible recuperarla desde ningún fichero del directorio vista. Por esta razón los archivos de control han sido incluidos en la carpeta Vista, se ha utilizado la siguiente nomenclatura CTLNombreArchivo.php para nombrarlos. El contenido de esta carpeta puede observarse en la Figura 32. 81 Figura 30: Archivo Plato.php Actualmente la carpeta Control solo cuenta con el archivo Constantes.php, este contiene la constante que regula el número de filas de las tablas de las páginas que muestran la información de muchos elementos como la gestión de mesas, proveedores, escandallos, etc. En la Figura 33, se muestra parte del código del archivo de control CTLProveedor.php que se encarga del control de proveedores. Los archivos vista implementan la interfaz que podrá observar el usuario, en proyecto estas vistas reciben el nombre viewNombreDeLaVista.php, la estructura de las páginas se han realizado utilizando HTML. Se ha utilizado CSS y las clases disponibles en el framework Bootstrap para dotar de estilo a la interfaz, además haciendo uso del sistema de rejilla (Grid) que ofrece Bootstrap se ha conseguido un diseño adaptable al dispositivo en el que se está visualizando. En las vistas que disponen de formularios que necesitan ser validados se ha utilizado el plugin de jQuery llamado jQuery validation, este plugin permite validar formularios de forma simple, escribiendo reglas y mensajes. Todas las reglas de validación se encuentran el archivo validaciones.js. Debido a que cada perfil de usuario dispone de un menú de navegación diferente, se han programado los menús en archivos separados, estos menús 88 Esta biblioteca simplifica la interacción con documentos HTML y la manipulación del DOM, además proporciona funcionalidades basadas en javaScript que permiten reducir el código y el tiempo que supondrían desarrollarlas desde cero. jQuery Validation Plugin Figura 42: Logotipo jQuery Validation Plugin jQuery Validation es un plugin de jQuery distribuido bajo licencia MIT que simplifica la validación de formularios del lado del cliente. Proporciona un conjunto de métodos de validación, validación de contraseñas, correos electrónicos, números y una API con la que escribir nuevos métodos. Además, los métodos predefinidos permiten mostrar los mensajes de error en 38 idiomas. En el desarrollo de la aplicación se ha utilizado la versión 1.17.0 HTML2PDF Figura 43: Logotipo HTML2PDF HTML2PDF es un conversor de HTML a PDF escrito en PHP5 y distribuido bajo licencia OSL. En el desarrollo del sistema se utilizado la versión 5.2.0 Herramientas de desarrollo Durante la elaboración de este proyecto ha sido necesaria la utilización de diferente software, a continuación, se indicará el software utilizado y la versión de cada uno de ellos. 89 NetBeans Figura 44: Logotipo NetBeans Netbeans es un entorno de desarrollo libre y gratuito sin restricciones de uso, está diseñado principalmente para trabajar con el lenguaje de programación java, aunque también permite trabajar en otros lenguajes como PHP o C/C++, además existen diferentes plugins que permiten extender su funcionalidad. Una de las ventajas de usar NetBeans es que cuenta con una gran base de usuarios, que forman una comunidad en constante crecimiento. Respecto a PHP, NetBeans permite crear aplicaciones en PHP 7, dispone de un debbuger integrado y además proporciona soporte para diferentes frameworks como Symfony , Nette, Zend y Doctrine. Se ha utilizado la versión 8.2 MagicDraw Figura 45: Logotipo MagicDraw MagicDraw es una herramienta visual de modelado UML, SysML, BPMN y UPDM que facilita el análisis y diseño de sistemas y bases de datos a analistas de negocios, analistas software, programadores e ingenieros. Su interfaz intuitiva acelera la creación de los diferentes diagramas UML necesarios en el proceso de desarrollo software, además posee comprobación automática de la semántica UML lo que permite generar modelos válidos sin UML incorrecto. Debido a que se trata de un software de pago se ha utilizado la versión 18.0 Standard Edition junto a una licencia académica de la universidad. 90 Taiga Figura 46: Logotipo Taiga Taiga es una plataforma de código abierto pala la gestión de proyectos ágiles utilizando dos de las metodologías ágiles más conocidas, SCRUM y Kanban Para cada metodología Taiga ofrece una ventana con funcionalidad especifica. Utilizando la metodología SCRUM, taiga permite la creación de diferentes sprints e historias de usuario que a su vez pueden dividirse en tareas más pequeñas. Cada una de las historias creadas podrá ser asignada a un sprint y diferentes miembros del equipo de trabajo. Otra de las funcionalidades ofrecidas es la posibilidad de asignar un estado a las historias, que podrá ir cambiando a lo largo del sprint. Xampp Figura 47: Logotipo Xampp Xampp es un paquete de software libre, distribuido bajo licencia GNU, que contiene un sistema gestor de base de datos (MySQL/MariaDB), un servidor Apache y los intérpretes de los lenguajes de script PHP y Perl. Desde la versión 5.6.15 Xampp utiliza MariaDB como base de datos, esta es un fork de MySQL. La principal ventaja de usar Xampp radica en que permite reducir el tiempo que supondría descargar, instalar y todos los componentes que integra por separado a simplemente descargarlo e instalarlo. En el desarrollo de la aplicación se ha utilizado la versión 7.2.5 91 Capítulo 6 Conclusiones y líneas futuras Conclusiones Como resultado de este trabajo fin de grado se ha desarrollado un sistema de información con arquitectura de aplicación web, que cumple con su objetivo de facilitar la realización de las actividades habituales en el funcionamiento y gestión de un restaurante. La elaboración de este proyecto me ha permitido adquirir nuevos conocimientos de diferentes tecnologías, para su desarrollo he tenido que aprender el lenguaje de programación PHP del que había oído hablar, pero en el que no había programado previamente y aprender a utilizar los componentes y clases existentes en el framework Bootstrap. Además, ha servido para recordar y volver a poner en práctica muchas de las técnicas de análisis y diseño de sistemas de información y conocimientos de bases de datos y desarrollo de sistemas adquiridos en diferentes asignaturas a lo largo de la carrera. Por último, creo que su realización ha contribuido a mejorar mi capacidad a la hora de tomar decisiones y dar solución a los problemas que se van presentando durante el desarrollo de un proyecto, por lo que considero que ha sido una experiencia bastante enriquecedora. Líneas futuras Este trabajo dispone de una gran variedad de líneas futuras, por una parte, existen funcionalidades que debido a la carga temporal que exigían han quedado fuera del alcance del sistema pues harían superar el tiempo estimado de realización del trabajo fin de grado. Entre estas funcionalidades se encuentra la posibilidad de realizar análisis de datos, sería muy interesante para el gerente poder generar mediante la aplicación diferentes gráficos estadísticos e informes tanto del funcionamiento del restaurante como de sus empleados. 92 Otra funcionalidad que proporcionaría un mayor valor a la aplicación sería la automatización de las validaciones de las solicitudes de reserva. Actualmente esta validación es realizada manualmente por el gerente, por lo que el tiempo de respuesta a la solicitud puede variar. La elaboración de esta línea podría mejorar la ocupación del restaurante, y la satisfacción del cliente ya que la aplicación daría respuesta a su solicitud de manera casi inmediata. También existen líneas que podrían enmarcarse en la fidelización de clientes, como puede ser la generación de cupones descuento para los clientes más habituales. 93 Bibliografía Referencias bibliográficas 1. Luis Miguel Cabezas (2017) “Desarrollo web con PHP y MySQL”, Editorial Anaya Referencias web 1. Bootstrap. https://getbootstrap.com/ 2. PHP.net. http://php.net/ 3. Curso PHP, pildorasinformaticas. https://www.youtube.com/watch?v=I75CUdSJifw&list=PLU8oAlHdN5Bkin rODGXToK9oPAlnJxmW_ 4. Ofibarman. https://www.ofi.es/software/bar 5. Hosteltáctil. http://www.hosteltactil.com/es/funcionalidades-hosteltactil/ 6. Cuiner. https://cuiner.com/ 7. Glop. https://www.glop.es/ 8. Patron modelo vista controlador, Rodrigo Gómez http://rodrigogr.com/blog/wpcontent/uploads/2015/11/111115_0034_ModeloVista1.png 9. Iconos alérgenos, Andrés Moya https://openclipart.org/userdetail/andresmoya 10. PHP. Wikipedia https://es.wikipedia.org/wiki/PHP 11. HTML.Wikipedia https://es.wikipedia.org/wiki/HTML 12. CSS. Wikipedia https://es.wikipedia.org/wiki/Hoja_de_estilos_en_cascada 13. JavaScript Wikipedia https://es.wikipedia.org/wiki/JavaScript 14. JQuery Wikipedia https://es.wikipedia.org/wiki/JQuery 15. XAMPP Wikipedia https://es.wikipedia.org/wiki/XAMPP 16. MariaDB Wikipedia https://es.wikipedia.org/wiki/MariaDB 17. jQuery Validation Plugin https://jqueryvalidation.org/ 18. HTML2PDF https://html2pdf.fr/es/home 94 95 Apéndice A Manual de usuario En esta sección se hará un recorrido a lo largo de toda la aplicación, mostrando como los distintos usuarios podrán acceder a las funcionalidades presentes en ella. Debido a que cada usuario de la aplicación tiene disponible una funcionalidad diferente dependiendo de su perfil, este manual se dividirá en diferentes secciones, una para cada tipo de perfil, en la que se mostrará la funcionalidad del perfil correspondiente. Inicio Al acceder a la aplicación se muestra la página inicial, en la parte superior se encuentra el menú de navegación, que permitirá a los usuarios navegar por el sistema. Figura A. 1: Página principal. Carta A través del menú de navegación todos los usuarios podrán acceder a la carta del restaurante, haciendo clic sobre el botón Carta. 96 Figura A. 2: Carta. En esta ventana se muestran los platos que conforman la carta del restaurante, junto con una descripción del plato y su precio. El usuario puede acceder a más detalles de cualquiera de los platos, pulsando sobre su nombre. Al hacerlo el sistema lo redirigirá a una ventana en la que además se muestra una lista de los ingredientes y de los alérgenos presentes en el plato. Figura A. 3: Detalles del plato. Menú Para acceder a los menús del día del restaurante, el usuario deberá pulsar sobre el botón menú de la barra de navegación, al hacerlo se mostrará la siguiente ventana en la que puede seleccionarse el día de la semana para el que se desea consultar el menú. 97 Figura A. 4: Menú del día. Iniciar sesión Para poder acceder a las funcionalidades propias de cada perfil es necesario autenticarse correctamente. Una vez introducidos su correo electrónico y contraseña deberá pulsar en el botón Iniciar sesión para proceder a la evaluación de los datos introducidos. Figura A. 5: Iniciar sesión. Si los datos son correctos la aplicación redirigirá al usuario a la página principal de su tipo de perfil, si por el contrario los datos no son correctos se mostrará en pantalla un aviso indicándole que los datos no son correctos. 104 Gestionar perfil Pulsando el botón Perfil en el menú de navegación el cliente podrá acceder a la información de su perfil. Editar perfil También podrá editar su información pulsando sobre el botón Editar perfil, al pulsarlo será redirigido a la siguiente a un formulario en el que podrá modificar sus datos. Cambiar contraseña Otra funcionalidad disponible en la página Perfil es cambiar la contraseña, para ello el usuario deberá hacer clic sobre el enlace cambiar contraseña. Se mostrará una nueva ventana en la que deberá introducir su contraseña actual y su antigua contraseña. Figura A. 17: Perfil. 105 Figura A. 18: Editar perfil. Eliminar perfil El cliente también podrá eliminar su cuenta en la aplicación pulsando sobre el botón eliminar perfil, al pulsar se mostrará una ventana modal para confirmar la operación. Figura A. 19. Confirmación de eliminación de perfil. Gerente Tras autenticarse con éxito el usuario será redirigido a la página principal para los clientes registrados. En la parte superior de la página se muestra el menú de navegación que le permitirá acceder a las funcionalidades del gerente. 106 Gestión de mesas Un gerente podrá realizar la gestión de las mesas a través de la aplicación, pulsando sobre el botón Mesas de la barra de navegación será redirigido a la página gestión de mesas. Figura A. 20: Gestión de mesas. Crear mesa Haciendo clic sobre el botón Crear nueva mesa se abrirá una nueva página (ver Figura A. 21), esta contendrá un formulario que permitirá introducir los datos de la nueva mesa. Editar mesa La información introducida en el momento de creación de una mesa puede ser editada pulsando sobre Editar. (ver Figura A. 22) Eliminar mesa Una mesa podrá ser eliminada haciendo clic en el botón eliminar, se mostrará una ventana modal para confirmar la operación. 107 Figura A. 21: Crear mesa. Figura A. 22: Editar mesa. Gestión de camareros El gerente podrá acceder a la gestión de camareros haciendo clic en el botón Camareros del menú de navegación. 108 Figura A. 23: Gestión de camareros. Crear camarero Para crear un nuevo camarero el gerente deberá hacer clic Crear nuevo camarero en la página anterior, se abrirá una nueva página (ver Figura A. 24) en la que dispondrá de un formulario para introducir los datos del camarero. Figura A. 24: Crear camarero. Cada uno de los camareros que aparecen en la página Gestión de camareros pueden ser editados o eliminados pulsando sobre los botones editar y eliminar. Editar camarero Al pulsar sobre el botón editar de alguno de los camareros se abrirá una página (ver Figura A. 25) que contendrá la información del camarero y en la que se podrá editar dicha información. 109 En esta página existe la posibilidad de crear una nueva contraseña para el camarero, al pulsar sobre el botón Generar se generará una nueva contraseña de 8 dígitos. Figura A. 25: Editar camarero. Eliminar camarero Al pulsar sobre el botón eliminar de algún camarero se abrirá una ventana modal solicitando la confirmación de la operación. Figura A. 26: Confirmación de eliminar camarero. Gestión de reservas Para acceder a la gestión de reservas el gerente deberá hacer clic en el botón reservas del menú de navegación. Al pulsarlo se abrirá la siguiente página en la que se muestran todas las reservas del restaurante. 110 Figura A. 27: Gestión de reservas. Cada una de estas reservas pueden ser editadas o canceladas pulsando en sus respectivos botones Editar y Cancelar. Editar reserva Al pulsar en el botón editar la aplicación le redirigirá a la página de edición de reservas, en esta página se mostrará un formulario que contendrá la información actual de la reserva, los cambios introducidos serán almacenados tras hacer clic en el botón guardar cambios. Además, en la parte inferior de la página edición de reservas puede consultarse la información de las mesas y su disponibilidad, aquellas mesas que se encuentren disponibles para ser asignadas serán mostradas en color verde, mientras que las que están ocupadas son mostradas en color rojo. 111 Figura A. 28: Editar reserva. Figura A. 29: Editar reserva. Cancelar reserva Para cancelar una reserva hay que pulsar el botón cancelar de la reserva que se desee cancelar. Al hacerlo la aplicación mostrará una nueva ventana para confirmar que realmente se quiere cancelar la reserva. Crear reserva La aplicación también permite al gerente la creación de reservas a clientes no usuarios de la aplicación, que deseen realizar la reserva de forma presencial en el propio restaurante. 112 Para crear una nueva reserva el gerente deberá pulsar el botón Crear nueva reserva en la página gestión de reservas, al hacerlo se le mostrará la página de creación de reservas en la tendrá que introducir los datos (a nombre de quién se realiza, fecha, hora, tipo de reserva, número de comensales) de la reserva a crear. Al pulsar sobre el botón ver disponibilidad será redirigido a la página Información de la reserva, en esta página el gerente deberá asignar una mesa de las disponibles a la reserva. En la parte inferior de la página se muestra la disponibilidad de las mesas del restaurante, en color verde las disponibles y en rojo las ocupadas. Figura A. 30: Crear reserva. 113 Figura A. 31: Crear reserva. Al asignar una mesa el sistema lo redirigirá de nuevo a la página gestión de reservas. Validar peticiones de reserva Desde la página gestión de reservas el gerente también podrá validar las peticiones de reservas realizadas por los clientes registrados en la aplicación, para ello deberá hacer clic en el botón Validar peticiones. Se le mostrará la página de validación de peticiones, en ella podrá observar la información de las peticiones de reserva que están pendientes de ser evaluadas. Se podrá comprobar la disponibilidad de mesas para una petición haciendo clic en el botón Ver disponibilidad. Se mostrará en una nueva página la información de la reserva, junto con la disponibilidad de las mesas usándose nuevamente el color verde para las disponibles y rojo para las ocupadas. 120 confirmar que realmente se desea eliminar. Al pulsar en el botón Sí el producto será eliminado. Figura A. 43: Confirmación de eliminar producto. Gestión de bebida La aplicación también permitirá la gestión de bebidas, el jefe de cocina podrá acceder a la gestión de bebidas haciendo clic en el botón Bebidas del menú de la navegación. Figura A. 44: Gestión de bebidas. Esta página además de mostrar la información de todas las bebidas también permitirá crear, editar y eliminar bebidas. 121 Crear bebida Para crear una nueva bebida deberá pulsar el botón Crear nueva bebida que se encuentra situado en la parte superior derecha de la página. Al pulsarlo será redirigido a la página Crear bebida, en esta página deberá rellenar el formulario con los datos de la bebida y pulsar el botón Crear. Figura A. 45: Crear bebida. Gestión de platos Para acceder a la gestión de platos deberá pulsar en el botón platos del menú de navegación, al hacerlo será redirigido a una nueva página en la que se mostrarán todos los platos existentes. Figura A. 46: Gestión de platos 122 Desde esta página podrá crear un nuevo plato o consultar, editar y eliminar alguno de los existentes. Crear plato Para crear un nuevo plató deberá hacer clic en el botón Crear nuevo plato, al hacerlo se le redirigirá a un formulario en el que tendrá que introducir la información del plato que desea crear. Figura A. 47: Crear plato. Tras introducir los datos pulse en el botón Crear, se le redirigirá a una nueva página en la que tendrá que añadir los ingredientes del plato. Para añadir un ingrediente, primero seleccione el tipo de ingrediente (carnes, pescados, frutas, verduras) y se desplegará una lista con todos los ingredientes del tipo seleccionado, por último, haga clic sobre el ingrediente deseado para añadirlo al plato. Si por alguna razón desea eliminar un ingrediente simplemente deberá pulsar sobre su botón Eliminar. 123 Figura A. 48: Crear plato, añadir ingredientes. Consultar plato Para consultar un plato pulse en su botón Consultar en la página Gestión de platos. Al hacerlo será redirigido a una nueva página en la que se mostrará toda la información del plato, nombre, tipo de plato, descripción y una lista de sus ingredientes. Figura A. 49: Consultar plato. Editar plato Para editar un plato, haga clic en su botón editar en la página Gestión de platos. Al hacerlo será redirigido a una nueva página que contendrá un formulario con los datos actuales del plato. 124 Una vez haya realizado las modificaciones oportunas pulse en el botón Guardar cambios para hacer efectivos los cambios. Se mostrará otra página en la que podrá modificar los ingredientes del plato, eliminando los existentes o añadiendo nuevos de manera similar a como se hizo en la creación del plato. Figura A. 50: Editar plato. Figura A. 51: Editar plato, añadir ingredientes. Eliminar plato Para eliminar un plato deberá pulsar sobre el botón Eliminar del plato correspondiente en la página Gestión de platos. Se mostrará una ventana modal para verificar que realmente desea eliminar el plato. Si pulsa en el botón Sí el plato será eliminado. 125 Figura A. 52: Confirmación de eliminar plato. Gestión de proveedores Para acceder a la gestión de proveedores deberá pulsar en el botón proveedores del menú de navegación. Se abrirá una nueva página en la que se muestra información de todos los proveedores existentes. Desde esta página podrá crear nuevos proveedores o consultar, editar o eliminar los existentes. Figura A. 53: Gestión de proveedores. Crear proveedor Para crear un nuevo proveedor pulse en el botón Crear nuevo proveedor, se le redireccionará a una nueva página en la que dispondrá de un formulario para introducir la información del proveedor. 126 Una vez rellenado el formulario pulse en el botón Crear Figura A. 54: Crear proveedor. Será redirigido a la página Gestión de proveedores, donde se le informará que el proveedor fue creado con éxito. Consultar proveedor Para consultar uno de los proveedores existentes pulse en su botón Consultar en la página Gestión de proveedores. Se abrirá una nueva página en la que podrá consultar toda la información del proveedor. Figura A. 55: Consultar proveedor. 127 Editar proveedor En la página Gestión de proveedores pulse en el botón Editar del proveedor que desee modificar. Será redirigido a la página Editar proveedor, en esta página dispondrá de un formulario en el que podrá modificar la información actual. Una vez realizadas las modificaciones oportunas pulse en el botón Guardar cambios. Figura A. 56:Editar proveedor. Eliminar proveedor Para eliminar un proveedor pulse en su botón Eliminar en la página Gestión de proveedores. Se mostrará una ventana modal para confirmar que realmente se desea eliminar. Si pulsa en el botón Sí el proveedor será eliminado. 128 Figura A. 57: Confirmación eliminar proveedor. Escandallos Para acceder a la gestión de escandallos deberá pulsar en el botón Escandallos del menú de navegación. Se abrirá la ventana Escandallos que muestra la información de todos los escandallos. Crear escandallo Para crear un nuevo escandallo deberá pulsar en el botón Crear nuevo escandallo, al hacerlo será redirigido a una nueva página en la que deberá seleccionar el plato para el que se va a crear el escandallo e introducir una descripción, el sistema solamente mostrará los platos para los cuales no existe un escandallo. 129 Una vez introducidos los datos pulse el botón Crear. Figura A. 58: Crear escandallo. Se abrirá una nueva página en la que se muestran los ingredientes del plato (ver Figura A. 59), en ella podrá editar las líneas del escandallo pulsando en el botón Editar de la línea. Se abrirá una nueva ventana (ver Figura A. 60) en la que podrá introducir el peso bruto y neto del ingrediente, para guardar los datos introducidos pulse en el botón Guardar cambios. Figura A. 59: Crear escandallo, editar líneas de escandallo 136 Una vez realizadas las modificaciones oportunas pulse en el botón Guardar cambios para hacer efectivas las modificaciones. Se abrirá una nueva página que le permitirá editar las líneas del albarán (ver Figura A. 71), el funcionamiento de esta página es similar al utilizado para añadirlas en la creación. Figura A. 70: Editar albarán Figura A. 71: Editar albarán, editar líneas. Comandas recibidas Para ver las comandas enviadas por los camareros pulse en el botón Comandas del menú de navegación. 137 Se mostrará el número de comanda, mesa, hora, los platos y la cantidad de cada una de las comandas enviadas por los camareros. Esta página se actualiza automáticamente cada 15 segundos. Si desea que alguna de las comandas deje de ser mostrada pulse en su botón Cerrar y dejará de mostrarse. Figura A. 72: Comandas recibidas. Gestión de la carta Para acceder a la gestión de la carta deberá hacer clic en el botón Carta del menú de navegación. En la página Gestionar carta (ver Figura A. 73) aparece la información de todos los platos existentes, divididos en primeros, segundos, postres y bebidas, para seleccionar los platos que se desean mostrar en la carta se debe seleccionar el tipo de plato y marcar la casilla “Mostrar en la carta” del plato. Para guardar los cambios deberá pulsar en el botón Guardar. Gestión de menús Un jefe de cocina podrá realizar la gestión de los menús del día del restaurante, pulsando en el botón Menús del menú de navegación. En la página Gestionar menús (ver Figura A. 74) aparece la información de todos los platos existentes divididos en primeros, segundos y postres, para seleccionar los platos que se desean mostrar en menú debe seleccionar el día de la semana (lunes, martes, miércoles…) y marcar la casilla “Mostrar en el menú”. 138 Para guardar los cambios efectuados es necesario pulsar el botón guardar. Figura A. 73: Gestionar carta Figura A. 74: Gestionar menús Notificaciones Cuando un producto se encuentre por debajo de su stock mínimo el jefe de cocina recibirá una notificación, el sistema mostrará un aviso (número de notificaciones junto a un fondo rojo) junto al botón Notificaciones de la barra de navegación. (ver Figura A. 75) Figura A. 75: Aviso de notificaciones 139 Para consultar las notificaciones es necesario pulsar sobre el botón notificaciones del menú de navegación. Se abrirá una nueva ventana en la que se muestran todas las notificaciones pendientes de ser leídas. (ver Figura A. 76) Figura A. 76: Notificaciones Camarero Un usuario de la aplicación con perfil camarero podrá realizar la gestión de las comandas a través del sistema. Gestión de comandas Para acceder a la gestión de comandas deberá hacer clic en el botón Gestión de comandas del menú de navegación. Al hacerlo será redirigido a la página de gestión de comandas (ver Figura A. 77), en la que se muestra información de todas las comandas existentes. Desde esta misma página el jefe de cocina podrá crear una nueva comanda, consultar o editar alguna de las existentes 140 Figura A. 77: Comandas Crear nueva comanda Para crear una nueva comanda deberá hacer clic en el botón Nueva comanda. Al hacerlo se le redirigirá a una nueva página (ver Figura A. 78) en la que deberá seleccionar una mesa. En esta página podrá consultar la disponibilidad de las mesas, también si alguna de ellas se encuentra reservada y a la hora a la que lo está. Tras seleccionar la mesa y pulsar en el botón Seleccionar se le mostrará la página de creación de comandas (ver Figura A. 79 ). En la parte izquierda se muestran las líneas de la comanda y a la derecha los platos, bebidas y menús. Al pulsar en alguno de los platos, bebidas o menús este se añadirá a las líneas de comanda, para indicar la cantidad se deberá pulsar tantas veces como se desee añadir. Una línea de comandas también pueden ser eliminada pulsando sobre su botón Eliminar. Al añadir un plato a las líneas de la comanda el sistema descontará del inventario las cantidades de los ingredientes indicadas en el escandallo de dicho plato. Para las bebidas se descontará la cantidad. 141 En el caso de que una línea de comanda sea borrada, se añadirá al inventario las cantidades de los ingredientes indicadas en el escandallo de dicho plato. Para las bebidas se añadirá la cantidad. Figura A. 78: Seleccionar mesa Figura A. 79: Crear comanda Pulsando el botón Enviar la comanda será enviada al jefe de cocina para ser mostrada en la cocina Consultar comanda Para consultar una comanda deberá pulsar en su botón Consultar en la página de Gestión de comandas. (ver Figura A. 77) 142 Al hacerlo se le mostrará la página Consultar comanda (ver Figura A. 80), a la izquierda se muestra la información de la comanda, en el centro las líneas. Está página, además, permite realizar el registro del pago de la comanda. Para realizar un registro es necesario seleccionar el método de pago y pulsar en el botón Registrar pago. Figura A. 80: Consultar comanda Al registrase el pago la página cambiará (ver Figura A. 81) y permitirá generar un ticket para ser entregado al cliente. Para generarlo deberá pulsar en el botón Generar ticket Figura A. 81: Consultar comanda 143 Editar comanda Para editar una comanda deberá pulsar en el botón Editar de la comanda en la página de gestión de comandas (ver Figura A. 77) Al hacerlo se abrirá la página Editar comanda (ver Figura A. 82) cuyo funcionamiento es similar a la de Crear comanda. Figura A. 82: Editar comanda Administrador Un usuario de la aplicación con perfil de administrador tendrá acceso a la funcionalidad del resto de los usuarios (cliente, jefe de cocina, gerente, camarero), además de funcionalidad propia. Al autenticarse correctamente en el sistema, el administrador será redirigido a su página principal, en ella dispone de un menú de navegación que le permitirá acceder a la funcionalidad del resto de perfiles. Solo tendrá que hacer clic sobre el perfil que desea utilizar y se desplegaran todas sus funcionalidades. Las funcionalidades de cada uno de los perfiles ya han sido tratados en detalle en este manual, pueden ser consultadas en su sección correspondiente. El administrador también dispone de funcionalidad propia como la posibilidad de introducir y modificar los datos del restaurante y la gestión de usuarios. 144 Figura A. 83: Página inicio administrador. Datos del restaurante Para introducir los datos del restaurante hay que pulsar el botón Datos restaurante del menú de navegación, al hacerlo el sistema mostrará una nueva ventana con un formulario, si es la primera vez que se accede los campos aparecerán vacíos, sino contendrán la información sobre el restaurante introducida la última vez. Este formulario solicitará datos como el nombre, la dirección, teléfono, NIF, denominación social y opcionalmente se podrá subir una imagen del logo del restaurante. Los datos sobre el restaurante introducidos en esta página se mostrarán en los tickets que generen los camareros al registrar el pago de una comanda. Figura A. 84: Datos del restaurante. 145 Gestión de usuarios La aplicación también permitirá la gestión de la información de todos los usuarios, el administrador podrá acceder a la gestión de usuarios haciendo clic en el botón Usuarios del menú de navegación. Esta página además de mostrar la información de todos los usuarios también permitirá la creación de nuevos usuarios y editar y eliminar los existentes. Figura A. 85: Gestión de usuarios. Editar usuario Para editar un usuario es necesario clicar sobre el botón su botón editar, se abrirá la página editar usuario que contendrá un formulario con la información del usuario. El botón generar permite crear una nueva contraseña para el usuario, se generará una contraseña de dígitos. Una vez editados los campos es necesario clicar sobre el botón guardar cambios para guardar los cambios introducidos, tras hacerlo será redirigido a la página Gestión de usuarios. En el caso de que se genere una nueva contraseña, el usuario será notificado del cambio mediante correo electrónico.