scieee AI-readable full text Open interactive document viewer

Aplicació mòbil híbrida integrada amb un ERP open source

Lopez Calvo, Jordi

Abstract

According to a study conducted by ATI - Association of Computer Technicians [1], 8 out of 10 Spanish companies use ERP tools for their management. In view of the recurrent use of these tools by companies, it has been thought to develop a hybrid mobile application that improves the management of the company and enhances the ERP functionalities. This application allows you to connect to an open source[19] ERP(Enterprise Resource Planning)[2] tool from mobile platforms, facilitating the company's own management without the need to be physically in the office. With this application managers can give users access, list customers with their contact data, products and services, business opportunities and list their employees to which they can filter by their knowledge, among other features. In order to create the application, it has been used a development platform that permits the generation of applications for mobile devices with operative system Android[17], iOS[20] and Windows. Regarding the server, two different ERP installations have been used, one installed on a Windows computer and another installed on a Linux machine.

Full text

TRABAJO FINAL DE GRADO TÍTULO DEL TFG: Aplicación móvil híbrida integrada con un ERP open source TITULACIÓN: Grado en Ingeniería Telemática AUTOR: Jordi López Calvo DIRECTOR: Antoni Oller Arcas FECHA: 28 de enero del 2018 Título: Aplicación móvil híbrida integrada con un ERP open source Autor: Jordi López Calvo Director: Antonio Oller Arcas Fecha: 28 de enero del 2018 Resumen Según un estudio realizado por ATI – Asociación de Técnicos de informática[1], 8 de cada 10 empresas españolas utilizan herramientas ERP para su gestión. Ante el uso tan recurrente de estas herramientas por parte de las empresas se ha pensado en desarrollar una aplicación móvil híbrida que mejora la gestión de la empresa y potencia las funcionalidades del ERP. Esta aplicación permite conectarse a una herramienta ERP(Planificación de Recursos Empresariales)[2] open source[19] desde plataformas móviles, facilitando a la empresa su propia gestión sin la necesidad de estar físicamente en la oficina. Con esta aplicación los gestores podrán dar acceso a usuarios, listar clientes con sus datos de contacto, productos y servicios, oportunidades comerciales y listar a sus empleados a los que podrá filtrar por sus conocimientos, entre otras funcionalidades. Para realizar la aplicación se ha utilizado una plataforma de desarrollo que permite generarla para los dispositivos móviles con sistema operativo Android[17], iOS[20] y Windows. Para la parte del servidor, se han utilizado dos instalaciones distintas del ERP, una instalada en un equipo Windows y otra instalada en un equipo Linux. Title: Hybrid mobile application integrated with open source ERP Author: Jordi López Calvo Director: Antonio Oller Arcas Date: 28 january 2018 Overview According to a study conducted by ATI - Association of Computer Technicians [1], 8 out of 10 Spanish companies use ERP tools for their management. In view of the recurrent use of these tools by companies, it has been thought to develop a hybrid mobile application that improves the management of the company and enhances the ERP functionalities. This application allows you to connect to an open source[19] ERP(Enterprise Resource Planning)[2] tool from mobile platforms, facilitating the company's own management without the need to be physically in the office. With this application managers can give users access, list customers with their contact data, products and services, business opportunities and list their employees to which they can filter by their knowledge, among other features. In order to create the application, it has been used a development platform that permits the generation of applications for mobile devices with operative system Android[17], iOS[20] and Windows. Regarding the server, two different ERP installations have been used, one installed on a Windows computer and another installed on a Linux machine. Agradecimientos Dedico este trabajo a mis padres y a mis hermanos, por haberme dado todas las oportunidades necesarias para seguir creciendo como persona y apoyarme en todo momento, pero en especial se lo dedico a mi esposa, por toda la paciencia depositada en mí durante todos estos años y que sin su ayuda incondicional esto no hubiera sido posible, gracias por tu amor y gracias por convertirme en el mejor padre del mundo. ÍNDICE INTRODUCCIÓN ............................................................................................... 2 CAPÍTULO 1. CONTEXTO ................................................................................ 4 1.1. Motivación personal .......................................................................................................... 4 1.2. Estado actual del mercado ............................................................................................... 4 1.3. Objetivos de la aplicación ................................................................................................ 7 CAPÍTULO 2. DISEÑO DE LA APLICACIÓN ................................................... 8 2.1. A quien va dirigida la aplicación ...................................................................................... 8 2.2. Necesidades ....................................................................................................................... 8 2.2.1. Acceso a la herramienta ......................................................................................... 8 2.2.2. Acceso a los menús ............................................................................................... 9 2.2.3. Gestión de usuarios ................................................................................................ 9 2.2.4. Gestión de clientes ............................................................................................... 10 2.2.5. Gestión de empleados .......................................................................................... 10 2.2.6. Gestión de productos ........................................................................................... 10 2.2.7. Gestión de oportunidades .................................................................................... 10 2.3. Funcionalidades .............................................................................................................. 10 2.4. Arquitectura de la información ...................................................................................... 11 CAPÍTULO 3. ARQUITECTURA ..................................................................... 13 3.1. Esquema de la arquitectura ............................................................................................ 13 3.1.1. ERP Open source Server ..................................................................................... 13 3.1.2. Database .............................................................................................................. 13 3.1.3. Reverse Proxy ...................................................................................................... 13 3.1.4. Aplicación híbrida ................................................................................................. 13 CAPÍTULO 4. INSTALACIÓN .......................................................................... 14 4.1. Elección de la plataforma de desarrollo de la aplicación ........................................... 14 4.1.1. IONIC .................................................................................................................... 14 4.2. Elección de la herramienta Odoo como ERP Open source ........................................ 14 4.1.2. Módulos ................................................................................................................ 15 4.1.3. Entorno de trabajo ................................................................................................ 18 CAPÍTULO 5. IMPLEMENTACIÓN ................................................................. 19 5.1. Odoo ................................................................................................................................. 19 5.1.1. Instalación Odoo ................................................................................................... 19 5.1.2. Instalación de módulos en Odoo .......................................................................... 23 5.2. pgAdmin III ....................................................................................................................... 26 5.3. NGINX ............................................................................................................................... 26 5.4. IONIC y Cordova .............................................................................................................. 27 5.4.1. Instalación de IONIC y Cordova ........................................................................... 27 5.4.2. Creación de las vistas .......................................................................................... 29 5.4.3. Inicio de sesión ..................................................................................................... 31 5.4.4. Home .................................................................................................................... 33 5.4.5. Usuarios ................................................................................................................ 34 5.4.6. Clientes ................................................................................................................. 36 5.4.7. Empleados ............................................................................................................ 38 5.4.8. Productos .............................................................................................................. 40 5.4.9. Oportunidades ...................................................................................................... 42 5.5. Errores conocidos ........................................................................................................... 43 CAPÍTULO 6. PLANIFICACIÓN DE TRABAJO .............................................. 44 CAPÍTULO 7. CONCLUSIONES ..................................................................... 45 7.1. Objetivos alcanzados ...................................................................................................... 45 7.2. Conclusiones personales ............................................................................................... 45 7.3. Futuras implementaciones ............................................................................................. 45 7.4. Estudio medioambiental ................................................................................................. 46 BIBLIOGRAFÍA ............................................................................................... 48 ANEXO I: ERRORES CONOCIDOS ................................................................ 51 I.1. Redirección de páginas con NgModule ................................................................ 51 I.2. No se muestran las bases de datos de Odoo ...................................................... 53 I.3. No responde a las peticiones ............................................................................... 54 I.4. No se muestran las imágenes .............................................................................. 56 I.5. No es posible asignar insignias a los empleados................................................. 57 I.5. Búsquedas erróneas ............................................................................................ 58 Aplicación móvil híbrida integrada con un ERP open source 2 INTRODUCCIÓN Las empresas bien organizadas usan un sistema de planificación de recursos empresariales, manejan la producción, la distribución, la logística, el inventario, las facturas, la contabilidad, en definitiva llevan un control de sus procesos empresariales. La gran mayoría de estas empresas llevan el control de sus procesos empresariales con una herramienta ERP (Planificación de Recursos Empresariales)[2], compuesta por distinto módulos que satisface las necesidades comentadas anteriormente y que en definitiva contiene toda la información de la empresa. Estos son los beneficios que aporta una herramienta ERP:  Optimización de la organización interna  Automatización de procesos  Ayuda en la toma de decisiones  Aumento de la productividad  Reducción de costes/tiempo  Mayor control  Planificación del futuro  Crecimiento ordenado No obstante estas herramientas tienen un coste que en ocasiones supone un problema para las pequeñas y medianas empresas (PYME). En el mercado existen una serie de herramientas ERP open source[19] destinadas a que las empresas puedan rentabilizar los procesos y aumenta las probabilidades de beneficio sin que eso les suponga un coste extra, pero al igual que sucede con las aplicaciones de pago estás son instaladas en los servidores centrales de la empresa y los gestores requieren estar conectados a red empresarial para poder acceder, incluso en ocasiones requieren de una aplicación cliente (Windows) para acceder al servidor ERP. Las herramientas ERP suelen tener aplicaciones móviles de pago para acceder al ERP pero no sucede lo mismo con todas los ERP open source, por ese motivo y teniendo en cuenta todo esto, la idea de este proyecto es aportar una aplicación móvil híbrida (para diferentes plataformas) que permita a los gestores de las PYMEs gestionar su empresa de una forma ágil y sencilla a la vez que obtienen los beneficios de usar la herramienta ERP de una forma potenciada. En este capítulo se explican cómo trabajan la mayoría de empresas hoy en día, qué beneficios aporta utilizar una herramienta, los objetivos y las motivaciones para realizar el proyecto. En el primer capítulo, se explicará la motivación personal para desarrollar la aplicación y sus objetivos principales, así como el mercado actual de herramientas ERP existente. 3 Contexto En el segundo capítulo, se describirán las funcionalidades específicas, el diseño de la aplicación y los objetivos a nivel de desarrollo. En el tercer capítulo se describe la arquitectura utilizada para desarrollar la aplicación. En el cuarto capítulo, se explicarán el conjunto de tecnologías utilizadas para el desarrollo y el entorno de trabajo. En el quinto capítulo, se explicará el desarrollo de la aplicación de inicio a fin con detalle de las funciones más relevantes. En el sexto capítulo, se explicará la planificación seguida para realizar el proyecto, así como las metodologías usadas. Finalmente, en el séptimo capítulo las conclusiones y objetivos realizados en el proyecto. Aplicación móvil híbrida integrada con un ERP open source 4 CAPÍTULO 1. CONTEXTO Después de una breve introducción explicaré cual ha sido la motivación personal para escoger este TFG, una breve recopilación de información sobre herramientas ERP en el mercado actual y los objetivos de la aplicación. 1.1. Motivación personal En mi caso particular, soy una persona que desde bien pequeño he tenido contacto con los ordenadores, al principio, como todos, el interés estaba relacionado con únicamente con el ocio pero con el tiempo me interesé por su funcionamiento y las ayudas que ofrecían al usuario, fui aprendiendo año tras año y con el paso del tiempo y según me hacía mayor tenía muy claro que iba a estudiar informática, no obstante algo hizo cambiar un poco mi objetivo y fue mi descubrimiento sobre las telecomunicaciones, eran fascinantes, parecían no tener límite alguno. En ese momento, me informé, lo tenía claro, quería hacer Telemática, donde podría aprender y poner en práctica mis dos grandes pasiones la informática y las telecomunicaciones. No obstante las circunstancias de la vida hicieron que mis estudios pasarán a un segundo plano, lo que ocasionó convertirme en un “SISI”, es decir, trabajando y estudiando desde la mayoría de edad. El TFG representa el final de un graduado de ingeniería, sí, pero para mí significa muchísimo más, son más de ocho años en los que no he parado de trabajar y estudiar y en los que además esto no ha sido un impedimento para formar mi propia familia, todo un logro personal, que culmina este año. Mi afición por la informática y lo aprendido estos años en el EETAC en las diferentes asignaturas de programación me han animado a escoger la esto, la programación como tema principal de mi TFG. Mi objetivo, muy claro, realizar una aplicación, fue entonces cuando busque proyectos de fin de grado y vi éste en el cual podría ayudar y aportar valor, en este caso particular, a que los gestores de las empresas pueda hacer crecer y evolucionar su negocio sin que esto les suponga un gran coste económico. 1.2. Estado actual del mercado Si buscamos qué aplicaciones del mercado dominan el mundo de herramientas ERP, encontramos fabricantes como SAP, Oracle y Microsoft. Debido a que no todas las empresas son iguales, también existen diferentes ERP para adaptarse a las empresas, por ello podemos hacer dos claras clasificaciones en base a la cantidad de empleados de las empresas.  Grandes empresas (> 500 empleados)  Medianas y pequeñas empresas (> 10 < 500 empleados) Grandes empresas: Anexo I: Errores conocidos 11  Eliminar usuarios  Crear usuarios  Listar clientes  Mostrar datos de clientes (Nombre, empresa, Dirección, País, correo electrónico y número de teléfono)  Buscar clientes por el nombre  Editar datos de los clientes  Eliminar clientes  Crear clientes  Listar empleados  Mostrar datos de empleados (Nombre, departamento, Dirección, correo electrónico, número de teléfono, premios obtenidos y quién y cuándo se lo dio)  Buscar empleados por sus conocimientos  Editar datos de los empleados  Eliminar empleados  Crear empleados  Listar productos  Mostrar datos de productos (Nombre, descripción, precio, fecha de creación, fecha de la última modificación, categoría, empresa y stock)  Buscar productos por el nombre o tipo de producto  Editar productos de los clientes  Eliminar productos  Crear productos  Listar oportunidades  Mostrar datos de oportunidades seccionado por estado (Titulo, Ingresos esperados, probabilidad de éxito, prioridad, estado, próxima actividad a realizar, fecha de creación, fecha límite de la oportunidad, cliente, correo electrónico y número de teléfono )  Buscar oportunidades por el nombre  Editar oportunidades de los clientes  Eliminar oportunidades  Crear oportunidades  Realizar llamadas  Enviar correos electrónicos 2.4. Arquitectura de la información Antes de empezar a realizar el esquema de la página y ya definidas las funcionalidades, se ha creado un diagrama de arquitectura de la información donde se muestra el conjunto de pantallas que tiene la aplicación y la navegación entre estas. Anexo I: Errores conocidos 12 Anexo I: Errores conocidos 13 CAPÍTULO 3. ARQUITECTURA En este capítulo se explicará la arquitectura utilizada para el funcionamiento de la aplicación. 3.1. Esquema de la arquitectura A continuación se muestra un esquema de la arquitectura que se va a utilizar en la Figura 3. Figura 3 - Esquema de la arquitectura 3.1.1. ERP Open source Server Será el encargado de recibir y gestionar las peticiones a través de un protocolo XML-RPC[5]. 3.1.2. Database El servidor ERP dispone de una base de datos local PostgreSQL en que almacenará todos los datos de la aplicación. 3.1.3. Reverse Proxy Tendrá una función importante que permitirá la traducción de las peticiones para que estas puedan ser procesadas de forma correcta por el servidor ERP. 3.1.4. Aplicación híbrida En cuanto a la aplicación móvil se ha decidido crear una aplicación híbrida, eso permite que esta puede utilizarse en distintos sistemas operativos móviles o en múltiples navegadores existentes utilizando el mismo código sin necesidad de generar una aplicación propia para cada una de las posibles entradas. Anexo I: Errores conocidos 14 CAPÍTULO 4. INSTALACIÓN En este capítulo se presentara la plataforma escogida para desarrollar la aplicación móvil híbrida, así como el la herramienta ERP open source[19] seleccionada y el entorno de desarrollo utilizado para llevar a cabo el proyecto. 4.1. Elección de la plataforma de desarrollo de la aplicación A la hora de escoger la plataforma era imprescindible que esta pudiera permitirme generar la aplicación móvil hibrida de una forma ágil, para ello he decidido escoger IONIC[8], cumple con las necesidades del proyecto y es una plataforma conocida durante mi estancia en la universidad. 4.1.1. IONIC Es un completo SDK[10] completo de código abierto para el desarrollo de aplicaciones de móviles híbridas. La versión más actual, la v.2, está basada en Angular[13] y proporciona herramientas y servicios para desarrollar aplicaciones móviles híbridas utilizando tecnológicas web como CSS[12], HTML5[14] y Sass[15]. Las aplicaciones pueden compilarse con estas tecnologías web y luego distribuirse a través de las tiendas nativas de las aplicaciones para posteriormente se instalado en dispositivos aprovechando Cordova[9]. Figura 4 - Logo IONIC Actualmente IONIC[8] construye para los estándares web y dispositivos móviles modernos.  Android[17], Ionic es compatible con Android 4.1 y versiones superiores.  iOS, Ionic admite iOS 7 en adelante.  Compatible con la plataforma universal de Windows para crear aplicaciones de Windows 10.  Compatible con las aplicaciones BlackBerry 10. 4.2. Elección de la herramienta Odoo como ERP Open source En el mercado existen varias herramientas ERP Open source, pero en este proyecto se ha escogido hacerla con Odoo[18], lo que antes era OpenERP y que empezó como Tiny ERP en 2005. Odoo es un sistema de ERP integrado de código abierto, está desarrollado sobre una arquitectura web y dispone de suite o conjuntos de aplicaciones. Pero lo que hace diferente a Odoo respecto al resto es que todas estas aplicaciones se integran completamente con el resto. Es la característica clave de Odoo. Anexo I: Errores conocidos 15 Figura 5 - Logo Odoo El módulo del servidor está escrito Python. El cliente se comunica con éste a través de interfaces XML-RPC[5] y JSON[6] y la funcionalidad del negocio se basa en módulos. Los módulos son carpetas con una estructura predefinida, con código en Python y archivos XML en su interior. Un módulo define la estructura de los datos, formularios, informes, menús, procedimientos, flujos de trabajo, etc. Los módulos se definen mediante una sintaxis independiente del cliente, de tal forma que añadir nuevos objetos, como menús y formularios los hace disponibles para cualquier cliente. Todo esto hace que el usuario tenga una experiencia fluida y sencilla diseñada para asegurar una adaptación natural. La fluidez y la integración total cubren las necesidades de todas las empresas, incluso de las empresas más complejas. La flexibilidad de Odoo[18] es tal que se pueden añadir aplicaciones dependiendo del crecimiento de la empresa, añadiendo las aplicaciones de una en una a medida que las necesidades cambien y la clientela crezca. Gracias a la comunidad de código abierto, Odoo se mantiene totalmente a través de una gran base de desarrolladores, lo que permite responder a las cambiantes necesidades de los clientes y ofrecer aplicaciones nuevas e innovadoras. 4.1.2. Módulos Como se ha mencionado anteriormente, Odoo se compone de una suite de aplicaciones llamadas módulos, para el desarrollo del proyecto se han instalado los siguientes módulos. 4.1.2.1. CRM Es un módulo que se centra en el cliente, facilita el seguimiento de clientes potenciales, oportunidades cercanas y obtener pronósticos precisos. Permite automatizar actividades basadas en scripts de ventas: llamadas, reuniones, correos y citas. Obtener toda la información que se necesita, justo en la oportunidad: página vista, correos recibidos, etc, un ejemplo del flujo de actividades del módulo de CRM se muestra en la Figura 6. Anexo I: Errores conocidos 16 Figura 6 - Flujo de actividades del módulo CRM . Obtener una visión rápida de lo que sucede en el equipo. Ver cuando un compañero registra una llamada o envía un presupuesto. Compartir ideas y archivos en tiempo real. Este módulo permitirá la gestión de cliente y oportunidades en la aplicación híbrida. 4.1.2.2. eCommerce Ofrecer a los clientes un acceso completo las 24 horas, los 7 días de la semana, a información actualizada a través de un portal de clientes dedicado donde pueden rastrear los pedidos, descargar facturas o pedidos de entrega (ver Figura 7) y administrar la devolución y reclamaciones. No es necesario navegar por múltiples documentos: todo está centralizado en un solo lugar. Figura 7 - Un pedido de un producto del módulo eCommerce Este módulo permitirá la gestión de productos en la aplicación híbrida. 4.1.2.3. Directorio de empleados Módulo que permite supervisar toda la información importante por departamento de un vistazo (ver Figura 8). Restringir cierta información a los gerentes de recursos humanos y hacer públicos otros para que todos los empleados Anexo I: Errores conocidos 17 encuentren fácilmente a sus compañeros. Recibir alertas para cualquier nueva solicitud de licencia, solicitud de asignación, solicitud o próxima evaluación. Figura 8 - Listado de empleados Este módulo permitirá la gestión de empleados y sus conocimientos en la aplicación híbrida. 4.1.2.4. Gamificación El módulo de Gamificación proporciona formas de evaluar y motivar a los usuarios de Odoo. Los usuarios pueden ser evaluados usando metas y objetivos numéricos para alcanzar. Las metas se asignan mediante desafíos para evaluar y comparar a los miembros de un equipo entre sí y a través del tiempo. Para logros no numéricos, se pueden otorgar distintivos a los usuarios. Desde un simple "gracias" hasta un logro excepcional, una insignia es una manera fácil de exprimir gratitud a un usuario por su buen trabajo. Ejemplo de insignias en la Figura 9. Figura 9 - Insignias disponibles Ambos objetivos e insignias son flexibles y se pueden adaptar a una amplia gama de módulos y acciones, en este caso al módulo de empleados. Este módulo permitirá la visualización de insignias en la gestión de empleados de la aplicación híbrida. Anexo I: Errores conocidos 18 4.1.3. Entorno de trabajo Para el entorno de trabajo se ha utilizado un ordenador portátil con sistema operativo Windows 10. Se ha convertido en una limitación en cuanto a rendimiento se refiere por todo el software a instalar. Por la parte de desarrollo se ha utilizado todo el software y conjunto de paquetes necesarios para que IONIC[8] funcione adecuadamente según los requerimientos de la documentación. Estos son los siguientes:  Node[16]  IONIC[8]  Cordova[9]  TypeScript[11]  Android[17] En cuanto a entorno de desarrollo se ha utilizado el JetBrains WebStorm 11. Es una aplicación de pago pero ofrece licencias gratuitas de un año para estudiantes, reconoce múltiples de lenguajes de programación, es predictiva y se integra perfectamente con el lenguaje de programación Typescript[11], el utilizado por IONIC[8] en la parte de la lógica de la aplicación. Tiene un plugin de github que permite conectar directamente a Github de tal forma que puede sincronizar los cambios, no obstante durante el proyecto está funcionalidad no se ha utilizado, si a lo largo de la carrera en otras asignaturas. El repositorio online del código se ha hecho en Gitaid, este está basado en el sistema Git y el acceso ha sido proporcionado por el tutor, permitiendo alojar el código en una plataforma de forma privada y gratuita, además de utilizar un sistema de control de versiones para poder llevar a cabo un registro del histórico de versiones de la aplicación. Anexo I: Errores conocidos 19 CAPÍTULO 5. IMPLEMENTACIÓN En este capítulo se describen las distintas fases que se han realizado para desarrollar la aplicación con todas sus funcionalidades. La instalación de Odoo[18] con sus módulos y las distintas fases de desarrollo de las vistas de la aplicación, la implementación de la autenticación y en definitiva el conjunto de funcionalidades descritas en el punto 2.3 5.1. Odoo Al tratarse de una aplicación Open source[19], tiene una edición llamada Community que permite el uso gratuito de la aplicación con cierta limitación de funcionalidades pero que para este proyecto es suficiente. La aplicación está disponible en la web del fabricante aquí [49] después de rellenar un pequeño cuestionario. 5.1.1. Instalación Odoo Estos son los pasos seguidos para la instalación de Odoo en el entorno de pruebas. Descargo y ejecutor el instalador, ver Figura 10. Figura 10 – Inicio del proceso de instalación de Odoo v.10 Continúo con la instalación, ver Figura 11. Anexo I: Errores conocidos 20 Figura 11 - Aceptación de los términos y condiciones Seleccionar que deseo instalar la aplicación y su base de datos, ver Figura 12. Figura 12 – Instalación de la base de datos y de la aplicación servidor Configurar el puerto, usuario y contraseña de la base de datos PostgreSQL, ver Figura 13. Anexo I: Errores conocidos 27 Se edita el fichero de configuración nginx.conf y se añade la redirección al servidor Odoo. 5.4. IONIC y Cordova Una vez ya instalado el servidor de Odoo, procedo a instalar Cordova[9] e IONIC[8] 5.4.1. Instalación de IONIC y Cordova Comando de instalación de cordova, ver Figura 28. Figura 28 - Instalación de Cordova Instalación de cordova finalizada, ver Figura 29. Figura 29 - Instalación de Cordova finalizado Comando de instalación de ionic, ver Figura 30. Figura 30 – Instalación de IONIC Instalación de ionic finalizada, ver Figura 31. http { upstream odoo { server 127.0.0.1:8069; } # Redirect requests to odoo backend server location / { proxy_redirect off; proxy_pass http://odoo; } Anexo I: Errores conocidos 28 Figura 31 - Proceso de instalación de IONIC finalizado Añadir la plataforma de iOS de cordova para hacer la aplicación compatible con iOS, ver Figura 32 Figura 32 - Añadir la plataforma IOS al proyecto Cordova Instalación de la plataforma de iOS finalizada, ver Figura 33. Figura 33 - Plataforma IOS añadida Anexo I: Errores conocidos 29 Añadir la plataforma de Android de cordova para hacer la aplicación compatible con Android, Figura 34 Figura 34 – Añadir la plataforma Android al proyecto Cordova Instalar el paquete de angular2-odoo-jsonrpc, ver Figura 35. Figura 35 - Añadir el paquete de angular2-odoo-jsonrpc [7] 5.4.2. Creación de las vistas Tal como habíamos pensado en el capítulo de diseño, concretamente en Necesidades, debemos incorporar una serie de vistas. En la aplicación todas las vistas hay que añadirlas al @NgModule para que sean navegables (ver Figura 36). Anexo I: Errores conocidos 30 Figura 36 – Listado de accesos en la aplicación híbrida móvil Se generan todas las vistas necesarias para el desarrollo de la aplicación, aquí el listado Figura 37. Figura 37 - Listado de vistas disponibles en la aplicación híbrida móvil Anexo I: Errores conocidos 31 Cada una de las vistas contiene cuatro ficheros (ver Figura 38): Figura 38 - Contenido de una vista  HTML: Contiene la información de cómo se deben mostrar los datos de visualización  Module.TS: Este archivo se encarga de publicar el módulo (la página) al @NgModule y de esta forma hacerla accesible desde cualquier lugar de la aplicación.  Scss[15]: Es un lenguaje de hoja de estilos inicialmente que es traducido a CSS[12], se puede usar para dar Figura, color, tamaños y fuentes al HTML.  TS: Es un fichero de lenguaje TypeScript[11] y contiene todas las funciones que realiza la página. 5.4.3. Inicio de sesión La autentificación con la aplicación de Odoo se hace mediante nombre de usuario que corresponde el correo electrónico del usuario. La vista debe incorporar el nombre del servidor, usuario, contraseña y la base de datos a la que acceder (Odoo[18] permite crear más de una base de datos en una misma instalación), ver Figura 39. Figura 39 - Página de inicio En esta página ya hay comunicación entre el servidor y el cliente antes de que este acabe de incorporar los datos. En el momento que el usuario ponga el nombre del servidor se lanza una consulta al servidor Odoo para que muestre las bases de datos disponibles y las muestra al usuario en el desplegable (Database). Ejemplo, ver Figura 40. Anexo I: Errores conocidos 32 Figura 40 - Página de inicio con datos de acceso Una vez establecida la sesión, se genera un session_id que irá asociado a las consultas que hará el usuario en forma de token, ver código de la Figura 41. Figura 41 - Coger el session_id Aquí se puede ver que la construcción de las consultas lleva el session_id incorporado, ver Figura 42. Anexo I: Errores conocidos 33 Figura 42 - Construir las solicitudes con el sessio_id 5.4.4. Home Una vez se inicia la sesión, el home da acceso al menú de la aplicación y a la información del servidor, ver Figura 43 para el home, ver Figura 44 para detalles del servidor. Figura 43 - Vista del Home Figura 44 - Información del servidor y de la sesión Anexo I: Errores conocidos 34 Se trata de un menú desplegable, fácil de mostrar y ocultar, ver Figura 45. Figura 45 - Menú desplegable 5.4.5. Usuarios A este apartado se accede a través del menú de la vista de home. Permite gestionar los usuarios, cubre las necesidades de listar los usuarios, Figura 46 y editar o eliminar, ver Figura 47. Figura 46 - Listado de usuarios Figura 47 - Editar o eliminar un usuario Anexo I: Errores conocidos 35 Aparece una advertencia para confirmar la eliminación, ver Figura 48, también se pueden actualizar los datos de usuario, ver Figura 49. Figura 48 - Eliminar un usuario Figura 49 - Actualizar los datos de usuario Por último, se puede crear un usuario, ver Figura 50 y hacer búsquedas de usuario, ver Figura 51 Figura 50 - Crear un usuario Figura 51 - Filtrar usuarios por el nombre Anexo I: Errores conocidos 36 5.4.6. Clientes A este apartado se accede a través del menú de la vista de home. Permite gestionar los clientes, ver listado en la Figura 52. Los clientes se pueden editar o eliminar, ver Figura 53 Figura 52 - Listado de clientes Figura 53 - Editar o eliminar clientes Las eliminaciones se deben confirmar, ver Figura 54 y los datos se actualizan, ejemplo ver Figura 55. Figura 54 - Eliminar un cliente Figura 55 - Actualizar los datos de un cliente Anexo I: Errores conocidos 43 Se puede crear una oportunidad, ver Figura 79 o buscarlos en el listado por el nombre, ver Figura 80. Figura 79 - Crear una oportunidad Figura 80 - Filtrar oportunidades por título Por último, se pueden realizar llamadas, ver Figura 81. Figura 81 - Realizar llamadas 5.5. Errores conocidos Durante el desarrollo del proyecto se han encontrado diversos errores y problemas, los cuales se comentan en el ANEXO I: Errores conocidos. Anexo I: Errores conocidos 44 CAPÍTULO 6. PLANIFICACIÓN DE TRABAJO En este capítulo se muestra como se ha realizado la planificación para llevar a cabo el proyecto. El tiempo dedicado al proyecto puedo dividirlo en tres bloques Diseño, implementación y documento, ver Figura 82.  Diseño: Ha consistido en pensar cómo y con qué lograr mostrar los datos que debía tener la aplicación móvil.  Implementación: Sin lugar a dudas es el bloque con el que he pasado más horas, instalando, configurando, debugando… aquí también incluyo todo el tiempo que he dedicado a informarme sobre tecnologías, lenguaje de programación, buscar soluciones a problemas y peleas varias.  Documentación: Es algo que empecé el primer día y se trabaja de forma continua hasta el último día, durante todo el proyecto he llevado actualizado un documento en modo de bitácora. A parte de la bitácora también está la memoria y la presentación. Bloque Tiempo estimado Diseño 36h Implementación 500h Documentación 180h Figura 82 - Tabla del esfuerzo dedicado Anexo I: Errores conocidos 45 CAPÍTULO 7. CONCLUSIONES En este último capítulo se comentarán las conclusiones finales del proyecto, los objetivos alcanzados, conclusiones personales y futuras implementaciones. 7.1. Objetivos alcanzados En el apartado 1.3 Objetivos de la aplicación de la memoria ya definía que el principal objetivo de la aplicación es facilitar la gestión de una empresa, pudiendo conectarse a un ERP open source[19]. Para facilitar esa gestión es necesario incluir funcionalidades a la aplicación móvil hibrida, estas funcionalidades se definieron en el apartado 2.3. Puedo decir que este objetivo se ha logrado con éxito, la aplicación móvil hibrida se conecta a cualquier servidor Odoo v.10 y se pueden hacer gestiones con los módulos de CRM, eCommerce, Directorio de empleados y Gamificaciones. Se han conseguido realizar todas las funcionalidades que inicialmente se diseñaron, algunas con más dificultades que otras, por ejemplo el módulo de insignias. 7.2. Conclusiones personales El desarrollo ha sido costoso pero he de reconocer que pudiera haber sido mucho más laborioso sino llega a ser por el uso de estas tecnologías para una aplicación híbrida. La realización de este trabajo me ha aportado una experiencia única en cuanto al desarrollo de aplicaciones multiplaformas. Durante la carrera llegué a utilizar IONIC[8] pero no junto a TypeScript[11], ha sido la primera vez que lo uso y después de superar unos cuantos problemas (no han sido pocos), me acabado gustando. Hasta la fecha todas las aplicaciones que había desarrollado era en colaboración con otros compañeros, esta ha sido la primera aplicación hecha por mi desde principio a fin, me ha aportado una visión amplia, de todos los factores que son necesarios tener en cuenta a la hora de realizar un desarrollo de esta índole debido a su complejidad. 7.3. Futuras implementaciones La aplicación cumple con todas las funcionalidades pensadas inicialmente, no obstante puede tener mucho recorrido. Odoo es una herramienta ERP que tiene un conjunto de aplicaciones, estás pueden instalarse de forma independiente y la mayoría traen comunicación entre ellas, esto significa que si desea se le pueden añadir más y más funcionalidades a la aplicación hibrida móvil, tantas como módulos tenga Odoo. Sobre los módulos gestionados por la aplicación híbrida móvil, podrían incorporarse más relaciones entre ellos, incluir más campos de edición, más campos a la hora de crear y por ejemplo una página individualizada que muestre toda la información de los activos. Anexo I: Errores conocidos 46 Hay que tener en cuenta que las posibilidades son muchas y en este caso nos hemos centrado en cuatro módulos de Odoo a gestionar. El margen de mejora es muy amplio. 7.4. Estudio medioambiental En este apartado haremos un estudio de un caso real respecto lo que puede suponer utilizar esta aplicación desde cualquier lugar y evitar así realizar desplazamientos innecesarios. Escenario:  Empleado: Martín Torres  Departamento: Recursos Humanos  Ubicación de la oficina: Calle Numancia 175, Barcelona (Illa Diagonal)  Lugar de residencia: Calle Sant Joaquim 53, El Prat de Llobregat Situación: Martín Torres se encuentra hoy en la Calle Pau Casals, 150, El Prat de Llobregat, en las instalaciones de un posible cliente con el que ha mantenido una reunión en la que hay la posibilidad de ofrecerles un servicio de consultoría. Al salir de la reunión Martín necesita saber qué empleados tienen conocimientos de java para empezar a diseñar la propuesta.  Opción A, uso de vehículo particular. Martín recoge el coche de un parking cercano y se dirige a la oficina, allí desde su equipo podrá acceder a una herramienta ERP y salir de dudas. Utilizando la web de ceroco2[34] nos informa que este desplazamiento un coche de gasolina supondría una emisión de 1.75 Kg de CO2 a la atmosfera, 1.67Kg de CO2 si se tratase de un vehículo diésel (Sólo ida), ver Figura 83. Figura 83 – Desplazamiento en coche Anexo I: Errores conocidos 47  Opción B, uso de transporte público. Martín coge el metro y se dirige a la oficina, allí desde su equipo podrá acceder a una herramienta ERP y salir de dudas. Utilizando la web de ceroco2[34] nos informa que este desplazamiento en transporte público supondría una emisión de 0.26 Kg de CO2 a la atmosfera (sólo ida), ver Figura 84.  Opción C, caminar. Martín coge su teléfono móvil, abre una aplicación que le permite conectar al ERP de su empresa y filtrar a sus empleados por conocimientos, en unos pocos segundos sabe qué empleados tienen conocimientos de java, se puede poner en contacto con ellos para comentarles la reunión que ha mantenido con cliente mientras camina tranquilamente hacía su casa. Esto supondría 0Kg de CO2 a la atmosfera y un día de buen humor para Martín, porque no tiene que meterse de nuevo en Barcelona, hace un poco de ejercicio y además llegará antes a su domicilio para estar junto a su familia, ver Figura 85. Figura 84 - Desplazamiento en transporte público Figura 85 - Caminar a casa Anexo I: Errores conocidos 48 Bibliografía [1]. Artículo sobre el uso de herramientas ERP en España: https://ecommerce-news.es/8-de-cada-10-empresas-espanolas-utilizan- erp-para-su-gestion-23921 [2]. Los sistemas de planificación de recursos empresariales: https://es.wikipedia.org/wiki/Sistema_de_planificaci%C3%B3n_de_recur sos_empresariales [3]. Repartición del mercado de herramientas ERP: http://searchsap.techtarget.com/tip/SAP-ERP-vs-Oracle-ERP-Which- system-is-best-for-you [4]. Análisis gartner: https://www.gartner.com/reviews/market/single-instance- erp-for-product-centric-midmarket-companies [5]. Es un protocolo de llamada a procedimiento remoto que usa XML para codificar los datos y HTTP como protocolo de transmisión de mensajes: https://es.wikipedia.org/wiki/XML-RPC [6]. Es un formato de texto ligero para el intercambio de datos: https://en.wikipedia.org/wiki/JSON-RPC [7]. Paquete OdooRPC para angular2: https://www.npmjs.com/package/angular2-odoo-jsonrpc [8]. Marco de desarrollo que junto con AngularJS nos facilitará sobremanera la tarea de creación de aplicaciones: https://openwebinars.net/blog/ionicframework-que-es/ [9]. Marco de desarrollo móvil de código abierto. Permite utilizar las tecnologías estándar web como HTML5, CSS3 y JavaScript para desarrollo multiplataforma: https://cordova.apache.org/docs/es/latest/guide/overview/ [10]. Conjunto de herramientas de desarrollo de software que le permite al programador o desarrollador de software: https://es.wikipedia.org/wiki/Kit_de_desarrollo_de_software [11]. Lenguaje de programación libre y de código abierto desarrollado y mantenido por Microsoft: https://es.wikipedia.org/wiki/TypeScript [12]. Es un lenguaje para la especificar cómo los documentos se presentan a los usuarios: https://developer.mozilla.org/es/docs/Web/CSS/Como_iniciar/Que_es_C SS [13]. Es un framework para aplicaciones web desarrollado en TypeScript, de código abierto, mantenido por Google: https://es.wikipedia.org/wiki/Angular_(framework) [14]. Establece una serie de nuevos elementos y atributos que reflejan el uso típico de los sitios web modernos: https://es.wikipedia.org/wiki/HTML5 [15]. Es un lenguaje de hoja de estilos: https://es.wikipedia.org/wiki/Sass_(lenguaje_de_hojas_de_estilo) [16]. Es un entorno de ejecución para JavaScript construido con el motor de JavaScript V8 de Chrome: https://nodejs.org/es/ [17]. Es un sistema operativo que se emplea en dispositivos móviles, por lo general con pantalla táctil: https://definicion.de/android/ [18]. Aplicación ERP open source: https://www.odoo.com/es_ES/ Anexo I: Errores conocidos 49 [19]. Es un modelo de desarrollo de software basado en la colaboración abierta. Se enfoca más en los beneficios prácticos (acceso al código fuente) que en cuestiones éticas o de libertad que tanto se destacan en el software libre: https://es.wikipedia.org/wiki/C%C3%B3digo_abierto [20]. Es un sistema operativo móvil de la multinacional Apple Inc: https://es.wikipedia.org/wiki/IOS [21]. Es un conjunto de sistemas de información que permite la integración de ciertas operaciones de una empresa, especialmente las que tienen que ver con la producción, la logística, el inventario, los envíos y la contabilidad.: http://gm3s.com.mx/blog/que-es-una-erp-y-cual-es-su- importancia-en-mi-empresa/ [22]. Los beneficios que aporta un ERP a una empresa: https://www.canarlab.es/la-importancia-de-contar-con-un-erp/ [23]. Inconvenientes de la instalación de un ERP: https://www.gestion.org/economia-empresa/50668/la-importancia-de- tener-un-erp/ [24]. Cómo deben ser las mejores aplicaciones ERP: http://fp.uoc.edu/blog/las-mejores-aplicaciones-erp-gestion-empresarial/ [25]. Aplicación Microsoft Dynamics AX: https://www.revistabyte.es/analisis-byte-ti/erps/microsoft-dynamics-ax/ [26]. Aplicación A3 ERP: http://www.computer- 3.com/Servicios/a3Software/A3ERP [27]. Aplicación SAGE X3: https://blog.aitana.es/2017/07/04/sage-x3-la- ultima-apuesta-aitana-mundo-erp/ [28]. Los mejores ERP según FrontRunners: https://www.softwareadvice.com/nz/erp/#top-products [29]. Comparativa ERP para PyMEs: http://canalerp.com/comparativaerp-pymes/ [30]. Tipos de ERP en el mercado y fabricantes más destacados: https://www.imf-formacion.com/blog/tecnologia/tipos-erp-fabricantes- destacados-201705/ [31]. Aplicación Oracle ERP: https://www.egafutura.com/wiki-es/oracleerp [32]. IONIC: https://en.wikipedia.org/wiki/Ionic_(mobile_app_framework) [33]. Web de descarga de Odoo https://www.odoo.com/es_ES/page/download [34]. CeroCO2 http://www.ceroco2.org/calculadoras/calculo-terrestre Anexo I: Errores conocidos 50 ANNEXOS TÍTULO DEL TFG: Aplicación móvil híbrida integrada con un ERP open source TITULACIÓN: Grado en Ingeniería Telemática AUTOR: Jordi López Calvo DIRECTOR: Antoni Oller Arcas FECHA: 28 de enero del 2018 Anexo I: Errores conocidos 51 ANEXO I: Errores conocidos En este anexo voy a citar todos aquellos problemas o errores encontrados durante la fase de implementación del proyecto. I.1. Redirección de páginas con NgModule Cuando generé el primer proyecto con IONIC[8] y Cordova[9] me encontraba con errores frecuentes cuando intentaba moverme de una página a otra. Había comenzado el proyecto usando una plantilla vacía de Cordova[9] pero fui incorporando código para crear diversas vistas, esto me supuso un problema ya que por mucho que declaraba las páginas en el NgModule estás no estaban referenciadas y obtenía un error, ver Figura 86. Figura 86 – Error, invalid link Solución A: Inicialmente opte por informarme que había dos métodos de navegación para usar en IONIC[8], uno el normal mediante el cual se cargan las páginas en el momento de la solicitud y otro llamado “lazy” que consiste en realizar una carga diferida, es un patrón de diseño comúnmente usado en la programación informática que consiste en retrasar la carga o inicialización de un objeto hasta el mismo momento de su utilización. Esta solución no fue valida ya que me implicaba quitar los enlaces en los menús, sólo me funcionaban los enlaces mediante botones en el menú de home. Si los incluía en el app.module.ts y del app.component.ts, daba error y no arrancaba la aplicación. Además me aparecieron otros errores, uno detrás de otro. En el siguiente error por ejemplo, ver Figura 87, no era capaz de encontrar una ruta que sí existía. Anexo I: Errores conocidos 52 Figura 87 – Error, no encuentra el fichero o la ruta El siguiente error, ver Figura 88, muestra que no encuentra el modulo @ionicnative/network Figura 88 - Error, no se encuentra el módulo @ionic-native/network Este error sí pude solucionarlo, instalando el @ionic-native/network, posteriormente modifique el app.components.ts y añadí el providers: [OdooJsonRpc] y los constructores OdooJsonRpc, AlertController A continuación la Figura 89, muestra la primera pantalla de inicio de sesión que se creó.