Aplicación para terminales Android orientada a la gestión remota, reparto y venta de productos
Abstract
Aplicación Android para gestión remota y reparto de productos -aguapp. Esta aplicación se ha desarrollado con objetivo principal de agilizar y facilitar el trabajo tanto de los repartidores, como de los administrativos de cualquier empresa de reparto y venta de productos a domicilio. Para la presentación de la aplicación se ha tomado como ejemplo una empresa de reparto de aguas modelo, principalmente alimentada esta idea por el gran número de empresas similares que existen en la Comunidad Autónoma Canaria.
Full text
PROYECTO FIN DE CARRERA _____________________________________________________________________ Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp AUTOR: BRAIS VILAVEDRA FERNÁNDEZ TUTOR: ABRAHAM RODRÍGUEZ RODRÍGUEZ COTUTOR: KUNAL MAHTANI DARYANANI EDIFICIO DE INFORMÁTICA Y MATEMÁTICAS JULIO DE 2017
A mis padres, por hacer todo esto posible
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp Contenido Introducción .................................................................................................................................. 1 Contexto .................................................................................................................................... 2 Objetivos ................................................................................................................................... 2 Solución propuesta ................................................................................................................... 4 Metodología .............................................................................................................................. 5 Análisis........................................................................................................................................... 7 Estudio de aplicaciones similares .............................................................................................. 7 Anveo Mobile ........................................................................................................................ 8 Track-POD Proof of Delivery.................................................................................................. 9 Reparto & Cobranzza .......................................................................................................... 10 Requisitos ................................................................................................................................ 12 Usuarios potenciales ........................................................................................................... 12 Requisitos de usuario .............................................................................................................. 14 Requisitos del sistema ............................................................................................................. 17 Mockups .................................................................................................................................. 18 Modelo de negocio ................................................................................................................. 22 Desarrollo .................................................................................................................................... 23 Alcance de la implementación ................................................................................................ 23 Versionado .............................................................................................................................. 23 Diseño e Implementación ....................................................................................................... 24 Modelo-Vista-Controlador .................................................................................................. 24 Descripción de directorios y archivos ..................................................................................... 27 Modelo de la base de datos (diagrama de e-r) ....................................................................... 31 Tecnologías .............................................................................................................................. 32 GitLab .................................................................................................................................. 33
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ GitExtensions ....................................................................................................................... 33 Android Studio .................................................................................................................... 35 Servicios web – Slim Framework ......................................................................................... 36 Impresora Zebra iMZ320 ..................................................................................................... 38 Librerías ............................................................................................................................... 40 Modelo de funcionamiento .................................................................................................... 42 Seguridad................................................................................................................................. 43 Pruebas .................................................................................................................................... 44 Despliegue ............................................................................................................................... 49 Limitaciones ............................................................................................................................ 51 Posibles mejoras .................................................................................................................. 52 Problemas no resueltos ....................................................................................................... 53 Conclusiones ............................................................................................................................... 55 Documentación ........................................................................................................................... 58 Anexos ......................................................................................................................................... 61 Anexo A – Manual de Usuario ................................................................................................. 61 Instalación ........................................................................................................................... 61 Descripción de las vistas ...................................................................................................... 65 Anexo B – Lista completa de código java de aguapp .............................................................. 70 Agradecimientos ......................................................................................................................... 72
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 1 Introducción A lo largo de este documento se presenta el desarrollo del proyecto fin de carrera Aplicación Android para gestión remota y reparto de productos - aguapp. Esta aplicación se ha desarrollado con objetivo principal de agilizar y facilitar el trabajo tanto de los repartidores, como de los administrativos de cualquier empresa de reparto y venta de productos a domicilio. Para la presentación de la aplicación se ha tomado como ejemplo una empresa de reparto de aguas modelo, principalmente alimentada esta idea por el gran número de empresas similares que existen en la Comunidad Autónoma Canaria. Se parte del escenario en el que la empresa tiene implementado un software de gestión o administración tipo ERP. Los sistemas de planificación de recursos empresariales ('ERP', por sus siglas en inglés, Enterprise Resource Planning) son los sistemas de información gerenciales que integran y manejan muchos de los negocios asociados con las operaciones de producción y de los aspectos de distribución de una compañía en la producción de bienes o servicios, pero carecen de interfasados con dispositivos externos, o de tenerlos, en muchos casos no cumplen las necesidades específicas de cada tipo de negocio. En el caso de un ERP como puede ser Microsoft Dynamics NAV, que cuenta con un cliente web, algunos menús, aún simplificados pueden ser confusos para un tipo de usuario final que no tenga conocimientos administrativos o financieros. Por ejemplo, un repartidor de agua no tiene por qué saber qué tipo de impuesto debe aplicar a un determinado cliente, ni a que cuentas contables deben dirigirse los movimientos de valor. O puestos a usar más dispositivos externos, como pueden ser impresoras portátiles, el ERP no cuenta con interfaces concretas para cada tipo de impresora, como pueden ser las impresoras Zebra que cuentan con su propio lenguaje de etiquetado para impresión: ZPL (Zebra Programing Language) De ahí nace la necesidad de crear esta aplicación, con el fin de simplificar el desempeño diario de los repartidores de aquellas empresas que opten por digitalizar sus procesos diarios.
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 2 Contexto Para el desarrollo de esta aplicación se expusieron en primer momento los objetivos a completar, simulando una toma de requisitos por parte de un cliente, pilar básico de cualquier modelo de desarrollo de software. Estos requisitos se tradujeron en la idea de presentar como solución una aplicación Android para la gestión remota y la venta de productos online, desde la que se puedan consultar pedidos creados en el sistema para albaranarlos (enviarlos) o facturarlos (cobrarlos) en el momento de la venta, o realizar ventas sobre la marcha, con soporte para impresión de tickets. Objetivos Una vez presentado como modelo de empresa el de una empresa de reparto de aguas que cuente con un sistema de gestión informatizado, se presenta una carencia evidente en el día a día, y es que los repartidores de muchas de estas empresas de reparto siguen utilizando como método de facturación, un bloc de facturas y albaranes preimpresos, en los cuales se rellena a mano la cantidad de cada producto, se firman, y sellan. En la ilustración 1 se puede ver un ejemplo de una factura preimpresa. Estos blocs no solo se usan de cara al cliente, sino que incluso de forma interna se utilizan para justificar las cargas y descargas del camión. Esto provoca que se desaproveche mucho papel, ya que por ejemplo para ventas de pocos artículos como pueden ser unas pocas garrafas o un pack de botellas a domicilio, la cantidad de papel que queda sin rellenar es notable. Al final del día, los repartidores entregan las ventas del día en estos blocs para que posteriormente desde administración se inserten a mano en el sistema. Ilustración 1 - Factura preimpresa de muestreo (descuento 100%)
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 9 Track-POD Proof of Delivery Track-POD, disponible en Google Play Track-POD Proof of Delivery permite que los repartidores reciban pedidos con la ruta y provee de un sistema de notificaciones en tiempo real. Se compone de la app móvil y de un backend en su propio cloud. Informa de la carga que se componme el pedido o describe el trabajo a realizar y provee de un sistema de posicionamiento con navegación a la ruta que acompaña el pedido. Permite seguimiento en tiempo real de la posición de los repartos y llamada directa al cliente desde la app. No cuenta con posibilidad de integración con sistemas externos. Es necesario registro con cuenta de pago en su sistema, con licenciamiento por cada repartidor. Capturas La filosofía de esta aplicación difiere de la planteada en aguapp de la forma en que está más orientada al posicionamiento, y en vez de mostrar los pedidos por separado, la muestra dentro de una ruta (ilustración 6 muestra los puntos de ruta, la ilustración 7 las rutas). En la ilustración 8 se muestra un resumen del contenido del pedido y las opciones de cierre del mismo. Ilustración 6 - Menú principal Ilustración 7 - Opciones de la ruta Ilustración 8 - Detalle de mercancía
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 10 Ilustración 9 - Menú principal Reparto & Cobranzza StartApp Argentina, disponible en Google Play Reparto & Cobranza es una solución móvil para que permite administrar la venta, cobro y distribución de productos. Entre otras funcionalidades, la aplicación permite los repartos asignados a repartidores, gestión de ventas por reparto, registro de pagos, devoluciones, envases prestados y cobros. La versión gratuita de Google Play es una versión de demostración, para uso continuado es necesario el contacto con la empresa para licenciamiento de su app de móvil y sistema informático, o para la integración con sistemas externos. Capturas Similar a Track-POD en términos de interfaz, pero carente de las opciones de posicionamiento. En la ilustración 9 se muestra una lista de los pedidos dentro de la ruta asignada, siendo las opciones disponibles sobre el pedido las que aparecen en la ilustración 10. Permite llevar un control sobre el dinero que se maneje como se puede ver en la ilustración 11, de cara a llevar una gestión como la que se lleva a cabo en los TPV (Terminal Punto de Venta) con apertura y cierre de caja. Ilustración 10 - Acciones sobre pedido Ilustración 11 - Entrega
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 11 Tabla comparativa A continuación en la ilustración 12 se realiza una comparación entre las aplicaciones descritas en el apartado anterior junto con aguapp. Se han elegido las características que se consideran como objetivos generales, aparte de las representativas de las aplicaciones por separado. aguapp Anveo Mobile Track-POD Reparto & Cobranza Cobranzza Diferenciado por usuarios Recuperación de pedidos creados en el sistema Gestión de carga del camión Posibilidad de asignar repartidores a camiones (superusuario) Modificación de pedidos enviados/facturados Integración con sistema de gestión Seguimiento por geolocalización Ilustración 12 – Tabla comparativa de apps
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 12 Requisitos Usuarios potenciales Como los usuarios potenciales de esta app serían los empleados. Dentro de los empleados de este tipo de empresas, el rango de edad varía entre 20 medios y puede abarcar hasta empelados cerca de la jubilación, aspecto muy a tener en cuenta a la hora del desarrollo usable de la aplicación. Para entender la siguiente tabla, primero hay que hacer una visión global de la organización de la empresa. El primer rasgo diferenciable es el rol del empleado. Las funciones que ofrezca la app deben variar en función de las necesidades del empleado, ya que cada empleado o grupo de empleados tiene sus tareas, que no se solapan con los otros. Por lo que, por ejemplo, un repartidor no necesita tener acceso a la asignación de repartidores por camión, ya que no es una de sus tareas en la empresa. • Repartidor: Desempeña las funciones de conductor o ayudante, y sus tareas se limitan a la carga, reparto y venta de productos. Visita a una serie de clientes fijos cada día de reparto, a los que consulta qué selección de productos quiere. Los nuevos clientes llaman para que se les incluya en la lista de visitas, reciben visitas de los comerciales, o se lo piden a los repartidores al verlos. Puede entregar pedidos ya recibidos en administración. • Administrador: Toma las decisiones administrativas y financieras de la empresa. Hace las veces la función de comercial, y suele consultar la información de ventas y stock a menudo. • Comercial: Se encarga de realizar llamadas y visitar centros de negocio en busca de nuevos clientes, aparte de recibir pedidos de clientes habituales y pasarlos al sistema. • Gerente: Encargado de los recursos de la empresa. Se encarga de panificar las compras de productos en función del stock y planificar las cargas de los camiones cada mañana para suplir los pedidos. También se encarga de realizar la asignación de repartidores y ayudantes por camión.
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 13 A continuación, en la Ilustración 13 se muestra una tabla de dummies, cuyo objetivo es identificar los perfiles y comportamientos de usuarios potenciales para adaptar el diseño y desarrollo acorde a sus necesidades. Se plantea el caso en el que los administradores y gerentes de la empresa buscan agilizar las tareas diarias de la empresa, algo critico en una empresa de distribución, y en que sus repartidores están dispuestos a la innovación, con un caso concreto, un usuario de 52 años que no se le da bien el uso de móviles táctiles. Rol Edad Tipo Motivación Paco Repartidor 36 Usuario normal Encuentra engorroso el uso de blocs John Doe Administrador 48 Superusuario Mejorar la comunicación con los empleados Daniel Comercial 29 Superusuario Tiene que pasar tiempo extra pasando los pedidos al sistema cuando acaba la jornada Alexis Repartidor 34 Usuario normal Ha visto a los repartidores de Correos y le pareció buen sistema Maria Repartidor 24 Usuario normal Le gusta la idea de trabajar con el móvil Alberto Gerente 56 Superusuario Mejorar el rendimiento de la empresa David Repartidor 52 Usuario normal No se le dan bien los móviles, usa la app por imposición de empresa Ilustración 13 – Tabla de ‘dummies’
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 14 Requisitos de usuario Para plasmar de una forma más visual los requerimientos de la app, en la Ilustración 14 se incluyen diagramas de uso de la app. Define y concreta todo lo que el usuario puede realizar en el sistema, además de aportar valor al software desarrollado, ya que en él se ven reflejados los motivos de por qué alguien iba a usar el sistema.
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 15 Ilustración 14 – Diagrama de casos de uso
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 16 La ilustración 14.1 muestra las operaciones disponibles para un usuario super. La tarea de Administración se desglosa en 3 acciones disponibles, orientadas a la gestión y control de la venta. Dentro de la preventa, el usuario puede ir dejando pedidos abiertos, que más tarde serán recuperados y completados por los repartidores. Además, un usuario super puede desempeñar las funciones de un usuario repartidor, a través de las operaciones sobre el camión. Estas operaciones están desglosadas a continuación en la Ilustración 14.2. También los usuarios super pueden asignar repartidores a camiones en concreto, según diga la necesidad. En la ilustración 14.2 se muestra un ejemplo de caso de uso de una carga de material en el camión. Esta función dentro de las operaciones del camión da la posibilidad de listar todos los productos disponibles en el sistema, y cargar la cantidad deseada en el camión. Esta carga puede distribuirse por zonas, a modo informativo para el repartidor o el ayudante, que queda reflejado en el ticket impreso. En el cuadro ‘Camión’ se pueden apreciar el resto de operaciones disponibles sobre el camión. La ilustración 14.3 refleja el proceso de crear un nuevo pedido a un cliente. Para ello, el repartidor debe elegir un cliente, y rellenar el pedido en base a la carga que lleve el camión. Puede ser que se realicen entregas parciales, ya por planificación o porque no queda más carga en el camión. Estas ventas se reflejan en un ticket impreso que debe ser entregado al cliente, que en algunas ocasiones puede requerir firma y copia. Estos pedidos se entregarían sin cobrar (albaranados) o cobrados (facturados). Por último, la ilustración 14.4 muestra el proceso de cobro de un pedido ya entregado. Para ello el repartidor, al igual que pare crear un pedido, debe introducir el cliente del que desea listar pedidos entregados, para proceder al cobro de los mismo. Este proceso genera una factura simplificada en forma de ticket impreso.
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 17 Requisitos del sistema Planteada y analizada la problemática existente en los métodos de reparto de agua a domicilio tradicionales y realizado un desglose del tipo de usuarios potenciales que van a utilizar la app, se pueden extraer requisitos específicos de usuario para tratar de lograr una mayor aceptación de la aplicación entre un grupo de usuarios más diverso. Analizando la tabla de dummies, se detectan como críticos los siguientes requisitos: • La app debe actualizar los datos en el sistema en tiempo real, y de igual forma debe presentar datos actualizados. • Los procesos derivados de la app deben automatizar al máximo cualquier tipo de tarea mecánica o repetitiva, como por ejemplo albaranar o facturar los pedidos automáticamente al entrar al sistema. • Necesidad de una interfaz intuitiva y usable, bien guiada y con no demasiadas opciones para evitar que usuarios menos acostumbrados se pierdan en los procesos o los menús. • Minimizar el uso de papel a la hora de notificar al cliente. • Adaptarse a todos los tamaños de dispositivo sin perder funcionalidad • Acometer cambios offline, que sean integrados en el sistema al volver la conectividad • Ofrecer herramientas de consulta de ventas/carga en tiempo real
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 18 Mockups Dentro del diseño de la app, la maqueta o mockup nos sirve para crear interfaces de usuario que den al usuario final una vista de cómo se verá el software sin necesidad de programar o desarrollar funcionalidades. La maqueta de aguapp se creó una vez definidos los requisitos y necesidades de la misma para plasmar a modo de boceto las líneas generales del apartado gráfico del diseño. En esta maqueta se presentan las pantallas básicas y como fueron concebidas en su creación, aunque algunos diseños fueron finalmente modificados o reemplazados por necesidades de usabilidad y diseño. aguapp sigue un diseño basado en pantallas independientes, a las que se le aplica scroll cuando es necesario para el desplazamiento vertical a lo largo de las pantallas. La pantalla de Login (ilustración 15), así como todas las pantallas de aguapp, cuentan con una barra de actividades típica de Android como encabezado, en la que se muestra en todo momento una descripción o título de la página, así como un espacio de botones de opciones (los 3 puntos verticales blancos). Para el login se presentan dos campos de texto para usuario y contraseña, y un botón de acceso. Los botones inferiores de la pantalla sobre el fondo negro corresponden a los botones del propio sistema Android, en este caso en particular de las versiones 5.x. Ilustración 15 - Pantalla de Login
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 25 El modelo es la representación de la información con la cual opera el sistema. Gestiona los accesos a dicha información y provee de métodos de consulta, así como privilegios de acceso que se hayan especificado en los requisitos de la aplicación. El modelo envía a la vista aquella información que le es solicitada, y recibe peticiones a través del controlador. En el caso de aguapp, el papel del modelo lo juega la base de datos en combinación con una serie de servicios web. El controlador es el encargado de responder a eventos y realizar peticiones al modelo cuando se hace alguna solicitud de información. En esta app el controlador son las funcionalidades de la aplicación, por ejemplo, el código de comunicación con los servicios web. Una vez se hace una petición a uno de estos servicios, cuando el dato retorna se trata de la forma que sea necesaria para dejarlo preparado para la vista. Se han implementado de forma asíncrona para que el hilo de ejecución principal, que es el que maneja la interfaz de usuario, no quede bloqueado. De esta forma se pueden cargar los datos de la aplicación de forma paralela mientras el usuario accede, y en caso de que llegue a navegar a una página y sus datos no estén disponibles, se mostrará un aviso de carga. La vista presenta el modelo de una forma que el usuario pueda interactuar. Para una aplicación desarrollada en Android Studio, esta parte corresponde a los ‘layouts’, archivos en formato xml que describen a través de código los elementos visuales que se muestran por pantalla Ilustración 21. A cada vista de la aplicación le corresponde un controlador específico, el cual puede comunicarse con otros llegado el caso. De esta forma se simplifica el código dedicando un controlador para cada vista, y delegando a controladores generales los procesos reutilizables (búsqueda de clientes, listado de pedidos… cualquier operación que pueda producirse en más de una vista de la aplicación).
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 26 Para las aplicaciones basadas en el uso de bases de datos para gestionar los datos que debe manipular la aplicación, dicha gestión corresponde al modelo. La integración entre la vista y el controlador representa la unión entre la capa de negocio y la capa de presentación. Ilustración 21 – Izquierda, código xml – Derecha, resultado
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 27 Descripción de directorios y archivos En la ilustración 22 se muestra el desglose de los directorios y subdirectorios que componen app. Por orden, se listan las relevantes para el proyecto: • app Directorio principal, está organizado en subdirectorios • app > build Archivos generados durante las fases de compilación del proyecto. Aquí es donde se general los archivos .apk. (archivo instalable de Android). En caso de ser una app que se desee publicar en PlayStore, Android Studio cuenta con funciones específicas Ilustración 22 – Estructura del proyecto en Android Studio
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 28 para subir el binario directamente al repositorio de Google, y tenerlo listo para la publicación sin subirlo manualmente. • app > libs Carpeta donde se almacenan las librerías externas añadidas al proyecto. Estas pueden ser añadidas a mano o automáticamente relacionadas configurando el archivo build.gradle. • app > src > java Contiene el código de la aplicación. Lugar donde se almacenan los archivos .java. No se ha desplegado el nodo por motivos de espacio, consultar el Anexo B para una lista completa de los elementos de este nodo. Los archivos de código pueden separarse en dos grupos, los encargados directamente de las vistas, y los encargados de la comunicación. Los primeros operan sobre el hilo principal de ejecución de la aplicación, mientras que los segundos operan de forma asíncrona para no bloquear las acciones del usuario en el hilo principal. • app > src > res Almacena los recursos graficos relacionados con las vistas. Estos recursos se autogeneran para distintas densidades de pixels en pantalla (hdpi, mdpi, xdhpi..) y a su vez pueden generarse también para versiones específicas de Android. Se separan en: o drawable almacena la especificación en xml referente a aquellos elementos como botones y listas desplegables. o layout especifica también en xml las vistas generales de una página dentro de la aplicación. o menú donde especifica las opciones disponibles en cada página en su menú superior. o mipmap contiene elementos como por ejemplo el icono de la aplicación, o cualquier imagen que deba ser mostrada por defecto o values dentro de la cual se pueden especificar entre otros, colores y strings para reutilizarlas en distintas partes de la app.
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 29 Al igual que se ha desglosado la estructura del proyecto de aguapp en Android Studio, ahora es el turno de los servicios web, Slim Framework. A continuación, se listan los directorios y subdirectorios que lo componen, mostrados en la ilustración 23. • res Contiene subcarpetas ordenadas por tipo o finalidad o css acoge los ficheros de hojas de estilo. En este caso cuenta con los estilos de Bootstrap y una hoja de estilo personalizada para el panel de control. Bootstrap es una librería de estilos y funciones (HTML, CSS, JS) para desarrollo web de aplicaciones responsive. o Img contiene el icono de aguapp, utilizado como favicon y logo en el panel de control. o Js contiene los archivos de código escritos en javascript. Ilustración 23 – Estructura del Slim
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 30 o mysql-files dentro se encuentre un archivo en php que especifica las credenciales de acceso la base de datos, y las funciones para crear la conexión. o php-files contiene un archivo de funciones auxiliares en php. Una de ellas por ejemplo se encarga de codificar en UTF-8 las respuestas para evitar problemas de codificación y caracteres extraños. o vendor es un directorio creado automáticamente por Composer. Composer es un gestor de dependencias php. Se pueden instalar paquetes independientemente o configurando un archivo composer.json y realizando una instalación global. Almacena los paquetes instalados adicionalmente, siendo los más relevantes el propio core de slim, o el directorio nikic que contiene un paquete para manejo de las cabeceras CORS (Cross-Origin Resource Sharing). En el archivo autoload.php se especifican todos los directorios y paquetes que deben cargarse, para que luego desde la aplicación principal solo haya que importar este archivo. o Index.html contiene el código html del panel de control. o Index.php especifica los métodos de Slim.
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 31 Modelo de la base de datos (diagrama de e-r) Un diagrama entidad-relación es una herramienta para el modelado de datos que permite representar las entidades relevantes de un sistema de información, así como sus interrelaciones y propiedades. Este modelo representa a la realidad a través de un esquema gráfico empleando la terminología de Entidades, que son objetos que existen y son los elementos principales que se identifican en el problema a resolver con el diagramado y se distinguen de otros por sus características particulares denominadas Atributos. En la ilustración 24 se muestra un diagrama entidad-relación para facilitar la comprensión de la organización de la base de datos de la aplicación. Ilustración 24 – Diagrama Entidad-Relación
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 32 Tecnologías Una vez planteados y depurados los requisitos del sistema y del usuario, es hora de elegir qué tecnologías se van a usar en el desarrollo de la aplicación. Lo primero que se ha planteado ha sido un control de versiones, para llevar un seguimiento de los cambios, y más importante, la posibilidad de volver a una versión anterior en caso de problemas o necesidad. Para esta parte se ha usado el repositorio GitLab junto con la herramienta GitExtensions. En cuanto al entorno de desarrollo, valorando el requisito de que la aplicación va a ser para dispositivos Android, se ha elegido el entorno de desarrollo Android Studio. Es un entorno gratuito con gran apoyo de la comunidad y con actualizaciones constantes, siempre por delante de la versión estable publica de Android. Una de las grandes ventajas que aporta Android Studio frente a otros entornos o métodos de desarrollo, es que aporta un control total sobre todos los elementos nativos del dispositivo. Esto puede convertirse en un arma de doble filo ya que debido a la profundidad de su alcance los desarrollos pueden complicarse. Ahora bien, se necesita un actor que haga las funciones del sistema de gestión instalado en la empresa tipo ERP. Para ello, lo que se ha elegido es una combinación entre una base de datos mysql, y un framework ligero de servicios web tipo REST, Slim Framework. Estos servicios web desarrollados en Slim se encargarían de recibir y gestionar las peticiones del controlador, y servir los datos de forma que puedan ser enviados a la vista. Además, simulan los procesos que realizaría un ERP con los datos, por lo que no solo se encarga de servir el contenido de la base de datos. Otro de los requerimientos es que se pueden imprimir tickets-resumen de las operaciones. Contando que es una aplicación móvil, es necesario que la impresora también lo sea. Por ello se toma como modelo una impresora bluetooth Zebra iMZ320. Es una impresora térmica para facturas o etiquetas de 72mm, suficiente para las necesidades de aguapp. Como dato, pesa solo 340 gramos, lo que la hace cómoda de llevar encima. Una de las ventajas de este tipo de impresora es que no hay que reemplazar la tinta ya que carecen de ella. Las impresoras térmicas usan un tipo de papel especial sensible al calor emitido por los cabezales térmicos de la impresora. Por contraposición, este tipo de papel es algo más caro que los normales.
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 33 GitLab Gitlab es un servicio web de control de versiones y desarrollo de software colaborativo basado en Git. Además de gestor de repositorios, el servicio ofrece también un sistema de organización en base a grupos, a los cuales de se pueden adscribir distintos usuarios con permisos específicos. Se ha elegido principalmente por su sistema de versionado basado en Git. Entre sus órdenes básicas esta git commit (confirmación de cambios sobre le repositorio) y git push (subida de cambios al repositorio remoto). Estos cambios en el repositorio pueden ser revertidos a cualquier versión anterior. También cuenta con un sistema de tareas e incidencias dentro de cada proyecto, para que sea más fácil llevar una gestión de errores o tareas pendientes. GitExtensions GitExtensions en una herramienta autónoma para los repositorios Git, desarrollada en Visual Studio para Windows y Linux. Provee de un entorno gráfico para gestionar los distintos repositorios tanto locales como remotos. En la ilustración 25 se puede ver un ejemplo de la interfaz. En la bara de tareas superior, están las operaciones básicas de git: Commit (botón verde con una v blanca) pull (copia del repositorio remoto al local) y push (subida del repositorio local al remoto). En la parte superior se puede ver una lista de los últimos commits sobre el repositorio. A estos commits se puede añadir un mensaje descriptivo que será grabado en todos los archivos modificados. Tambien se puede ver la rama en la que se está actualmente (origin/master) el usuario del ultimo commit y cuando tiempo hace que se realizó dicho commit.
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 34 Ilustración 25 – Interfax de GitExtensions
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 41 impresoras, que serán más tarde utilizadas para la comunicación durante la impresión, y mostrar mensajes informativos al final del proceso. @Override public void foundPrinter(final DiscoveredPrinter discoveredPrinter) { runOnUiThread(new Runnable() { @Override public void run() { map = discoveredPrinter.getDiscoveryDataMap(); adapterPrints.add((String) map.get("FRIENDLY_NAME")); printerMACS.add((String) map.get("MAC_ADDRESS")); adapterPrints.notifyDataSetChanged(); } }); } @Override public void discoveryFinished() { runOnUiThread(new Runnable() { @Override public void run() { dialog.dismiss(); if (adapterPrints.getCount() == 1) { Toast.makeText(context, " Descubierto 1 dispositivo", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, " Descubiertos " + adapterPrints.getCount() + " dispositivos", Toast.LENGTH_SHORT).show(); } } }); } Ilustración 31 – Ejemplo de uso de la librería
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 42 Modelo de funcionamiento A modo de resumen, y para reflejar de forma gráfica las tecnologías y estudiadas en este apartado, se añade a continuación un esquema en el que se relacionan estas tecnologías entre si (ilustración 32) Ilustración 32 – Resumen en forma de gráfico de las tecnologías utilizadas
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 43 Seguridad Pese a ser una aplicación orientada al uso interno dentro de una empresa, debe ser dotada de mecanismos de seguridad básicos en las comunicaciones. Estos mecanismos comienzan aplicándose a nivel de la base de datos. En la tabla de usuarios, donde se almacenan los datos de acceso de cada uno de los usuarios de la app, la contraseña se guarda una función hash de la misma. Esto hace que las contraseñas queden codificadas de manera irreversible (la función hash genera un valor hash que puede ser generado por otro valor de entrada, de forma que a través de un valor hash no se va a tener toda la información para obtener su valor original). Si bien la parte del servidor es una simulación de un sistema ERP, que contaría con sus propios sistemas de seguridad bien definidos, se ha implementado reescritura de url para los servicios web, de forma que no se da pista de la organización real del servidor. Los servicios de Slim también cuentan con la posibilidad de configurar CORS (Cross Origin HTTP Request), de forma que se fácil controlar el acceso a los servicios por ips especificas o rango. Una forma efectiva de dotar de seguridad a la app para el entorno en el que se piensa utilizar sería el configurar una VPN (Virtual Private Network) junto con CORS para restringir el acceso a los servicios a la red de la VPN.
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 44 Pruebas Para las pruebas de la aplicación se han creado una serie de datos ficticios, con el fin de simplemente ser representativos de las funcionalidades de la aplicación. Estos datos incluyen repartidores, productos, camiones y clientes. No se tienen en cuenta los procesos de aprovisionamiento de la empresa, el stock que hay en almacén para realizar la carga es el que hay disponible. Las pruebas se han apoyado en el depurador de código de Android Studio, que permite depurar el código con la aplicación directamente ejecutándose en un dispositivo físico. Esto permite un testeo mucho más directo y ágil, en vez de probar en simuladores o interpretes web. Permite ver la pantalla de Log de la ejecución de Android en distintos niveles (verbose, error, warning). Las pruebas se han llevado a cabo a mano, ya que es interesante simular las situaciones reales que suceden en la calle para probar todas las casuísticas. La aplicación se ha testeado en los siguientes dispositivos: • Bq Aquaris X5 – Android 6.0.1 - Marshmallow • Sony Xperia Neo – Android 4.2 - Jelly Bean • Bq Aquaris M5 – Android 7.0 - Nougat Para poner a prueba las funcionalidades de la aplicación y su robustez, se han planificado circuitos de prueba que ‘recorren’ todas las pantallas y funciones de la app. El tipo de pruebas llevado a cabo en este bloque lo podemos clasificar como pruebas de caja blanca, o pruebas estructurales. Es un tipo de pruebas muy ligado al código fuente, con el fin de examinar cada uno de los flujos de ejecución de la aplicación, asegurando que se devuelve el valor esperado a la finalización de cada uno de ellos. Cabe destacar que sometiendo a aguapp a este tipo de pruebas, pese a superarlas, no se detectarían partes incompletas de la especificación de requisitos, o requisitos faltantes. Un punto importante en las pruebas estructurales es que cuando más crece la implementación de la aplicación, más profundas y extensas son las pruebas, lo que en un equipo de desarrollo imitado en cuanto a recursos humanos puede suponer problemas de tiempo a la larga.
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 45 Dado el gran número de flujos de ejecución y distintas variantes, se ha optado por presentar en este apartado las pruebas relativas a la carga del camión. Este proceso de prueba cubre desde el login en la app hasta la impresión del ticket de carga. Asimismo, el proceso completo de prueba para una carga se desglosa a continuación: • Login (ilustración 33) o Usuario y contraseña correctos o Usuario faltante o Contraseña faltante o Usuario o contraseña incorrectos • Gestión del camión (ilustración 34) o Cambiar camión predefinido o Seleccionar/cambiar ayudante • Camión (ilustración 35) o Selección de operación carga • Carga – Selector de familias / productos (ilustración 36), (ilustración 37), (ilustración 38) o Cambio de zona de carga o Comprobar navegabilidad hasta ultimo nivel (producto) • Producto (ilustración 39) o Introducir cantidad en unidades o Introducir cantidad en cajas o Introducir cantidad en palets o Navegar a productos o Navegar a familias o Navegar a resumen • Resumen (ilustración 40), (ilustración 41) o Comprobar carga por zona o Registro de la carga o Selección de fecha • Impresión (ilustración 42) o Comprobar consistencia de datos entre la operación en la aplicación y el resultado en el ticket Ilustración 33 – Pantalla de login Ilustración 34 – Gestión del camión
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 46 Ilustración 35 – Operaciones sobre el camión Ilustración 36 – Selector de familias, carga Ilustración 37 – Selección de zona de carga Ilustración 38 – Selector de productos
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 47 Ilustración 39 – Pantalla de producto Ilustración 40 – Pantalla de resumen Ilustración 41 – Pantalla de resumen, selección de fecha de carga Ilustración 42 – Ticket de carga
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 48 Para apoyar las pruebas y comprobar la correctitud de los resultados de las operaciones realizadas desde la aplicación, se ha desarrollado una pequeña herramienta en HTML y Javascript con la que acceder de una forma sencilla a los datos, a modo de “Panel de Control”. Este panel de control aprovecha los mismos servicios de los que se sirve la aplicación, aparte de un método específico para listar los pedidos junto con sus líneas, de forma que no se ha desarrollado código redundante. Lista los principales módulos de la aplicación, que son los pedidos y las existencias en almacén, como se puede ver en la ilustración 43. Ilustración 43.1 – Panel de control Ilustración 43.2 – Panel de control – Detalle del pedido
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 49 Despliegue Existe una versión de aguapp desarrollada por al alumno para Alio Soluciones. Esta versión esta implementada directamente contra el ERP Microsoft Dynamics NAV para su uso en la empresa Ancruzfir Distribuciones SL. Fue implantada en 2016, siendo usada a diario desde entonces. Cuenta con más funciones aparte de las mostradas por aguapp, gran parte de ellas solicitadas después de la estabilización de la implantación. En este caso se carece de servidor web específico ya que NAV presta todas las funcionalidades necesarias, incluidos los servicios web, no solo la base de datos y la lógica. Uno de los elementos que compone NAV son las Páginas, elementos que se encargan de mostrar al usuario la información almacenada en las tablas de la base de datos. Estas páginas pueden ser publicadas directamente a través de la interfaz de NAV como servicio web tipo SOAP o ODATA, sin necesidad de desarrollo añadido. En la ilustración 44 se muestra un ejemplo de la especificación WSDL (Web Services Description Language) de la página de los pedidos de ventas. Se puede ver en la parte superior la especificación (contraída por espacio) de los distintos tipos de datos disponibles, y empezando por Read (nodo abierto) sus métodos. Los métodos básicos CRUD (create, read, update, delete) son implementados automáticamente por el sistema a la hora de la publicación. Ilustración 44 – WSDL de una página de NAV publicada como servicio
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 50 Estas funciones básicas pueden ser ampliadas en código en C/AL dentro del sistema. C/AL, o por sus siglas Client/server Application Language, es un lenguaje de programación utitiizado dentro de C/SIDE (Client/Server Integrated Development Environment) en Microsoft Dynamics NAV. Es un lenguaje especialmente orientado a tratamiento de bases de datos, cogiendo parte de la base de Pascal. En la ilustración 45 puede verse un ejemplo de código. IF Item.GET('31260210') THEN MESSAGE(STRSUBSTNO('Item name is: %1',Item.Description)); Item.RESET; Item.SETRANGE("No.",FromItem,ToItem); Item.FINDLAST; Cabe destacar de las ilustraciones 46.1, 46.2 y 46.3 las funciones no incluidas en aguapp, como son la consulta de carga por camión (función de usuarios super) y más funciones en el menú de Camión como pueden ser las roturas, el cierre parcial y la devolución a depósito. Ilustración 45 – Ejemplo de obtención y filtrado de una variable tipo Record (tabla) Ilustración 46.1 – Muestra de menú de consulta de carga Ilustración 46.2 – Muestra de menú de consulta de carga, detalle por familias Ilustración 46.3 – Pantalla de camión
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 57
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 58 Documentación • Cacoo.com – Diseñador UML online – [online] – [Accedido 18 de Julio de 2017] https://cacoo.com/ • Moqups.com – Diseñador de mockups online – [online] – [Accedido 18 de Julio de 2017] https://moqups.com/ • ERP, Wikipedia – [online] – [Accedido 18 de Julio de 2017] https://es.wikipedia.org/wiki/Sistema_de_planificaci%C3%B3n_de_recursos_empresar iales • CRM, Wikipedia – [online] – [Accedido 18 de Julio de 2017] https://es.wikipedia.org/wiki/Customer_relationship_management • Ecured.cu – Diagrama entidad relación – [online] – [Accedido 18 de Julio de 2017] https://www.ecured.cu/Diagrama_Entidad_Relaci%C3%B3n • Manuales IES San Clemente – [online] – [Accedido 18 de Julio de 2017] https://manuais.iessanclemente.net/index.php/Introduccion_a_API_REST_y_framewo rk_Slim_de_PHP • proyectosagiles.org – SCRUM – [online] – [Accedido 18 de Julio de 2017] https://proyectosagiles.org/que-es-scrum/ • androidstudiofaqs.com – MVC en Android – [online] – [Accedido 18 de Julio de 2017] https://androidstudiofaqs.com/tutoriales/modelo-vista-controlador-en-android-mvc • phonehouse.com – Precio de terminales – [online] – [Accedido 18 de Julio de 2017] https://www.phonehouse.es/movil/apple/iphone-7-32gb.html • phonehouse.com – Precio de terminales – [online] – [Accedido 18 de Julio de 2017] https://www.phonehouse.es/movil/bq/aquaris-u-lite.html#&color=dorado • StackOverflow.com – [Accedido 18 de Julio de 2017] http://www.stackoverflow.com • developer.android.com - Documentación Android Studio – [Accedido 18 de Julio de 2017] https://developer.android.com/studio/intro/index.html?hl=es-419 • slimframework.com – Documentación Slim Framework – [Accedido 18 de Julio de 2017] https://www.slimframework.com/docs/ • GitLab.com – [Accedido 18 de Julio de 2017] https://gitlab.com/ • Spuceforge.org – GitExtensions – [Accedido 18 de Julio de 2017] https://sourceforge.net/projects/gitextensions/ • Documentación Git Extensions – [Accedido 18 de Julio de 2017] https://git-extensionsdocumentation.readthedocs.io/en/latest/git_extensions.html#links
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 59 • Zebra.com - Especificación impresoras – [Accedido 18 de Julio de 2017] https://www.zebra.com/es/es/products/printers/mobile/mz-series.html • Zebra.com – Documentación lenguaje ZPL – [Accedido 18 de Julio de 2017] https://www.zebra.com/content/dam/zebra/manuals/en-us/software/zpl-zbi2-pmen.pdf • ZPL, Wikipedia – [Accedido 18 de Julio de 2017] https://en.wikipedia.org/wiki/Zebra_(programming_language) • Kobjects.org – Librería kSoap2 – [Accedido 18 de Julio de 2017] http://kobjects.org/ksoap2/index.html • Zebra.com – Documentacion ZSDK – [Accedido 18 de Julio de 2017] https://km.zebra.com/resources/sites/ZEBRA/content/live/WHITE_PAPERS/0/WH132/ en_US/GettingStartedAndroidDevelopment_ZebraAndroid_Link-OS_SDK.pdf • angrytools.com – Diseñador de elementos Android online– [Accedido 18 de Julio de 2017] http://angrytools.com/android/button/ • w3schools.com – [Accedido 18 de Julio de 2017] https://www.w3schools.com • dev.mysql.com - Documentación mysql – [Accedido 18 de Julio de 2017] https://dev.mysql.com/doc/refman/5.7/en/join.html • api.jquery.com – Documentación jQuery – [Accedido 18 de Julio de 2017] https://api.jquery.com/ • Bootsnip – Snippets de código html y css para Bootstraphttps://bootsnipp.com/ • Mozilla Developer – Documentacion CORS – [Accedido 18 de Julio de 2017] https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS • AppDesignBook.com – Principios de testeo de usabilidad – [Accedido 18 de Julio de 2017] http://appdesignbook.com/es/contenidos/test-de-usabilidad-apps/ • Pruebas de Caja blanca, Wikipedia– [Accedido 18 de Julio de 2017] https://es.wikipedia.org/wiki/Pruebas_de_caja_blanca • LanceTalent.com – Pasos para establecer el modelo de negocio de una aplicación – [Accedido 18 de Julio de 2017] https://www.lancetalent.com/blog/modelo-de-negociode-una-aplicacion-movil/ • Rollos de Papel online - [Accedido 18 de Julio de 2017] https://rollosdepapelonline.com/ • Cartabon.com – Material de oficina - [Accedido 18 de Julio de 2017] https://www.cartabon.com
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 60 • Styde.net - [Accedido 18 de Julio de 2017] https://styde.net/que-es-composer-y-comousarlo/ • BulkResizePhotos.com – Redimensionador de imágenes Online - [Accedido 18 de Julio de 2017] https://bulkresizephotos.com/
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 61 Anexos Esta sección la componen cuatro anexos, el primero de ellos corresponde al Manual de Usuario, el segundo a una extensión de las especificaciones de los casos de uso, el tercero a una lista completa de directorios, subdirectorios y archivos del proyecto de Android Studio, y por último una lista con las versiones de las tecnologías utilizadas en el desarrollo del proyecto. Se busca con ello extender lo expuesto a lo largo de este documento y facilitar la comprensión, prueba y puesta en funcionamiento de aguapp. Anexo A – Manual de Usuario Se pasa a describir los pasos necesarios para hacer una instalación local y probar aguapp. Instalación Lo primero es, si se carece de ello, la instalación del servidor web. Para evitar problemas de versionado o incompatibilidades no descubiertas, se recomienda simular el mismo entorno sobre el que se ha desarrollado la aplicación. El servidor web que se recomienda es WampServer, versión 3.0.6: • http://www.wampserver.com/en/ Una vez instalado, al usarlo de forma local no hace falta configuración adicional, pero se requiere que el dispositivo con aguapp y el equipo que este ejecutando el servidor tienen que estar dentro de la misma red. El siguiente paso es copiar la carpeta “codigo\Simaguapp” de los recursos al directorio C:\wamp64\www. Si no se ha modificado los credenciales de conexión a mysql, o el puerto de entrada del servidor, no es necesario modificar ningún archivo, de lo contrario, dentro de aguapp se deberá acceder al archivo C:\wamp64\www\Slimaguapp\res\mysql-files\mysqlid.php y modificar los datos de conexión necesarios. Dentro de la carpeta del proyecto de Android Studio existe un apk listo para instalar en la ruta “codigo\aguapp\apk\aguapp.apk”. Para instalarla basta con copiarla a un terminal y abrirla con un gestor de ficheros. Al no estar firmada con una cuenta de desarrollador, es necesario habilitar las instalaciones de orígenes desconocidos. Esta opción se accede por el
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 62 menú de Ajustes -> Seguridad (ilustración 47) y buscando por la opción “Orígenes Desconocidos”, que habrá que habilitar. Por último, es necesario cargar la base de datos. Para ello se deberá acceder a la herramienta phpmyadmin o cualquier gestor de bases de datos MySQL con el que se cuente. En caso de haber instalado Wamp sin modificar sus parámetros, se puede acceder por la ruta http://localhost/phpmyadmin con usuario “root” y contraseña vacía. Dentro se deberá crear una base de datos con el nombre aguapp como se puede apreciar en la ilustración 48 Ilustración 47 – Cómo habilitar “Orígenes Desconocidos”
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 63 A continuación, con la base de datos creada y seleccionada, debe proceder a importarse los datos base. El archivo que hay que cargar es “codigo/aguapp_starter.sql” de los recursos dentro de la base de datos recién creada. Con los datos cargados, solo queda configurar la app. Accediendo al menú de opciones, en la barra superior derecha de la pantalla de login, representado por un engranaje, se accede a la pantalla de configuración. En el campo de texto de “URL Servicios”, como se puede ver en la ilustración 49 es necesario introducir la ruta en la que están instalados los servicios de Slim. Debe ser una ruta local para la prueba, como la que figura en la imagen. Ilustración 48 – Detalle de creación de base de datos en phpmyadmin Ilustración 49 – Detalle de la URL de los servicios en la pantalla de configuración
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 64 El panel de control viene dentro del directorio ‘Slimaguapp’. Para acceder a su consulta bastara con acceder a la url http://localhost/Slimaguapp/index.html. En caso de haber modificado la configuración de apache (rutas externas que no sean localhost, o puertos que no sean el 80) deberá modificarse la url acordemente. Como se puede ver en la ilustración 50 y 51 permite consultar una lista de pedidos creados y las existencias por almacén o camión. Ilustración 50 – Vista de la lista de pedidos Ilustración 51 – Vista de existencias por almacén
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 65 Descripción de las vistas En la ilustración 52 se muestra la página inicial de la aplicación. Cabe destacar que a través del engranaje de la barra superior se accede al menú de Configuración de la aplicación. La cuenta predefinida es usuario: u, contraseña: p. Volviendo a la ilustración 49, aparte del campo de texto destinado a la URL de los servicios, está el selector de impresoras. Para realizar una búsqueda de impresoras, debe seleccionarse las dos flechas circulares de la barra superior. El proceso comenzará a buscar dispositivos e ira mostrando los encontrados en forma de lista para su selección. Ilustración 52 – Pantalla de login
Aplicación para terminales Android orientada a la gestión remota, reparto, y venta de productos - aguapp 66 Entrando como usuario super se nos presenta el menú de acciones del superusuario, como puede verse en la ilustración 53. Este tipo de usuario es el único habilitado para crear pedidos de preventa, o consultar la carga de los camiones. En la ilustración 54 se aprecia los campos a especificar en la apertura de un pedido de ventas. Debe especificarse un cliente, un camión y un repartidor, la fecha y el ayudante son adicionales. En las ilustraciones 55 y 56 se muestra el selector de familias y productos, lo único que se puede hacer en estas páginas, es navegar hacia delante (seleccionando una familia o producto), hacia atrás, o navegando al resumen del pedido. Siguiendo el flujo de ejecución, pasamos a la ilustración 57 para ver la pantalla de producto, en donde se introducen las cantidades deseadas. Esta página también tiene un acceso a la página de resumen y también a productos y familias, así como la posibilidad de marcar un producto como artículo de muestreo, lo que quiere decir que entra en el sistema con descuento del 100%. Ilustración 53 – Acciones de usuario super Ilustración 54 – Pantalla de Preventa
PROYECTO FIN DE CARRERA BRAIS VILAVEDRA FERNÁNDEZ 73