Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Campus Querétaro
Que presenta:
Estudiante de la carrera:
Asesor:
Periodo:
Enero-Junio 2020
i
ii
Índice general
Índice general iii
Índice de figuras v
Introducción 1
Capítulo 1. Generalidades de la empresa 1
1.1 Datos generales 1
1.1.1 Nombre 1
1.1.2 Ubicación 2
1.1.3 Giro 2
1.1.4 Tamaño 2
1.1.5 Rama Empresa de servicio privada. 2
1.2 Reseña histórica 2
1.3 Organigrama de la empresa 3
1.4 Misión, visión y política 4
1.4.1 Misión 4
1.4.2 Visión 4
1.4.3 Política 5
1.5 Principales productos y clientes 5
1.5.1 Storecheck Mobile (Sistema de auditoría y ejecución en punto de venta) 5
1.5.2 Retail Beat 6
1.5.3 Clientes 7
1.6 Premios y certificaciones 7
1.7 Caracterización del área en que se participó 7
1.7.1 Descripción del área 7
1.7.2 Actividades del área 8
1.7.3 Funciones y ubicación del residente 9
Capítulo 2. Planteamiento del problema 9
2.1 Antecedentes y definición del problema para la realización del proyecto de
residencia. 9
2.2 Objetivos 10
2.2.1 Generales 10
2.2.2 Específicos 11
2.3 Justificación 11
2.4 Alcance 12
Capítulo 3. Marco Teórico 13
3.1 Estado actual y necesidades del Retail 13
3.1.1 ¿Qué es el Retail? 13
3.1.2 Importancia del Retail 13
3.1.3 Factores clave del Retail 14
3.1.4 Evolución de la industria del Retail 14
iii
3.2 Técnicas y tecnologías 15
3.2.1 Conceptos generales 15
3.2.2 Lenguajes de programación 16
3.2.3 Sistema de gestión de base de datos 17
3.2.4 Lenguaje de marcado 17
3.2.5 Lenguaje de diseño 18
3.2.6 Frameworks 18
3.2.7 Herramientas 20
3.3 Metodología 22
3.3.1 Scrum 22
3.4 Estándares y buenas prácticas de programación 23
3.4.1 Modelo MVC 23
3.4.2 Practicas de “código limpio” 25
Capítulo 4. Desarrollo del proyecto 27
4.1 Creación de tareas 27
4.1.1 Recolección y análisis de los requerimientos 27
4.1.2 Estructura de base de datos 30
4.1.3 Nueva tarea 31
4.1.4 Acciones 33
4.1.5 Alcance de la tarea 35
4.1.6 Condicionales entre acciones 36
4.1.7 Asociación a árbol de productos 37
4.2 Administración de tareas 39
4.2.1 Recolección de datos y análisis de requerimientos 39
4.2.2 Listado de tareas 40
4.2.3 Activar - desactivar tarea 41
4.2.4 Visualización y nueva versión 41
4.3 Tareas foco 42
4.3.2 Base de datos 44
4.3.3 Formulario de alerta 45
4.3.4 Reporte de tareas foco vigentes 48
4.3.5 Envíos de alerta y comunicación móvil 49
4.4 Despliegue y pruebas de entorno 51
Capítulo 5. Resultados 52
Capítulo 6. Competencias desarrolladas y/o aplicadas 53
6.1 Competencias específicas 53
6.2 Competencias genéricas 54
Conclusiones y recomendaciones 54
Conclusiones 54
Recomendaciones 55
Referencias bibliográficas y virtuales 56
iv
Índice de figuras
Ilustración 1. Organigrama (1/2) ........................................................................................ 3
Ilustración 2. Organigrama (2/2) ........................................................................................ 4
Ilustración 3 TechMaG Storecheck ........................................................................................ 7
Ilustración 4 Tipos de acciones ....................................................................................... 28
Ilustración 5 Asociación a árbol de productos............................................................... 29
Ilustración 6 Jerarquía de condicionales ........................................................................ 30
Ilustración 7 Nueva tarea .................................................................................................. 31
Ilustración 8 Modal tipos de tareas ................................................................................. 32
Ilustración 9 Interfaz de tarea .......................................................................................... 33
Ilustración 10 Formulario de acciones ............................................................................ 34
Ilustración 11 Tipos de acciones ..................................................................................... 35
Ilustración 12 Alcance de tarea ....................................................................................... 36
Ilustración 13 Condicionales ............................................................................................ 37
Ilustración 14 Selector nivel de productos ..................................................................... 38
Ilustración 15 Selección de elementos ........................................................................... 39
Ilustración 16 Tabla de tareas ......................................................................................... 41
Ilustración 17 Visualización de tarea .............................................................................. 42
Ilustración 18 Tarea predeterminada .............................................................................. 43
Ilustración 19 Selector de tarea foco .............................................................................. 46
Ilustración 20 Modal venta cero....................................................................................... 47
Ilustración 21 Vinculo de export ...................................................................................... 48
Ilustración 22 Export de venta cero vigentes ................................................................ 49
v
Introducción
Hoy en día las herramientas de desarrollo web representan una gran demanda en
el ámbito laboral del ingeniero en sistemas computaciones. Cada día son mas las
empresas que requieren ingenieros y FullStack developers, capaces de programar
y desarrollar tanto el backend como el frontend de un sistema. En esta practica de
residencia no fue la excepción ya que se desarrollo desde la base de datos hasta la
interfaz de usuario final.
Sin duda una práctica que enriquece el ámbito del ingeniero, con ejemplos reales
del desarrollo de sistemas web en producción y aplicando las mejores practicas y
patrones de diseño para el desarrollo de este.
1.1.1 Nombre
STORECHECK S.A. DE C.V.
1
1.1.2 Ubicación
ACCESO A # 110, PARQUE INDUSTRIAL JURICA
1.1.3 Giro
Tecnología de investigación del retail.
1.1.4 Tamaño
Mediana
1.1.5 Rama
Empresa de servicio privada.
Con más de 12 años de experiencia trabajando con las mejores marcas a nivel
mundial ha permitido que Storecheck cree metodologías confiables y herramientas
tecnológicas eficientes y flexibles para ofrecer soluciones especializadas,
adaptadas a las necesidades sus clientes.
Su equipo está formado por más de 200 colaboradores, desde gerentes ejecutivos,
especialistas en reportes de datos, equipo de soporte, estadísticos, desarrolladores,
2
programadores, coordinadores y evaluadores de campo, Todos comprometidos con
una visión de ejecucion perfecta para los clientes y partners en diversos canales de
distribución.
Hoy en día Storecheck tiene el sistema más poderoso para auditar y mejorar la
ejecución en punto de venta de las marcas, administración y análisis del POS Data
(Ventas e inventario) y servicios de gestión de proyectos que simplifican el análisis
y empoderan al personal de campo.
3
Ilustración 2. Organigrama (2/2)
1.4.1 Misión
Crear soluciones de software que Encanten tanto al cliente interno como externo,
asegurando que el producto cumpla las expectativas del consejo, las necesidades
del mercado y de Nuestros Clientes internos. Innovando de forma permanente para
asegurar la mejor experiencia convirtiendo nuestro producto en el referente y Líder
en la Industria.
1.4.2 Visión
Ser la plataforma que redefina la colaboración, y ejecución para los jugadores del
ecosistema retail. Y la forma cómo capitalizan las oportunidades.
4
1.4.3 Política
Entre su política tiene 4 conceptos principales:
- Confianza: Construir relaciones a largo plazo con las marcas más
importantes de la industria. A favor de la transparencia y la comunicación
clara y directa a todos los niveles.
- Innovación: Identificar las necesidades del mercado y convertirlas en
soluciones globales funcionales. Analizando cada proyecto de manera
independiente y adaptando a sus necesidades. Intentando hacer beneficiar
al cliente y así tener un modelo “genérico” que se adapta lo mas posible al
cliente.
- Inteligencia: Procesar de manera analítica la información generando
indicadores de valor. Desarrollando una metodología sustentada, ordenada
y probada.
- Eficiencia: Optimización de recursos e involucramiento total en cada
proyecto. Ningún cliente es pequeño, cada proyecto es una oportunidad de
generar un nuevo caso de éxito a través de una comunicación clara y en los
términos del cliente.
5
control de asistencia de promotores confiable y análisis de tiempos y movimientos
de promotores seguro y efectivo.
6
base de datos permite el almacenamiento de toda la información histórica que se
requiere para analizar las tendencias de consumo.
1.5.3 Clientes
Actualmente Storecheck trabaja con más de 90 marcas y más de 18 mil usuarios.
Teniendo como principales clientes a marcas como: GrupoMap, Unilever, Bayes,
Pernod Ricard, Mead Johnson, Beiersdorf, Samsung, Walmart, Jose Cuervo,
Pepsico, Bachoco, Revlon, Mattel, Bonafont, Spectrum, Coca-Cola, Pfizer, entre
otros.
7
• El área implementa, también, un desarrollo basado en la metodología agile
Scrum, para así, tener un desarrollo más eficiente y con un tiempo de
implementación menor.
8
1.7.3 Funciones y ubicación del residente
Como parte del equipo de desarrollo e innovación es necesario siempre manteneren
la mente la necesidad de mejorar el desarrollo que se tiene previamente en
Storecheck.
Con actividades que van desde la definición y análisis del módulo. Estructuración y
creación de la base de datos, programación de backend, creación de servicios Rest,
diseño y programación del frontend, así como, las pruebas necesarias para que el
producto salga a un entorno de preproducción. Generando así, un desarrollo
FullStack del módulo.
9
es obsoleta y con una difícil escalabilidad, necesidad que debe resolverse debido a
la gran demanda del mercado.
2.2 Objetivos
2.2.1 Generales
1. Módulo 2: Creación de tareas
Sistema para la gestión de tareas en el área de campo. Un administrador deberá
poder generar tareas simples y tareas relacionadas a productos que después serán
enviadas a la gente en campo que realizara dichas tareas como encuestas,
auditorias, inventarios etc.
10
2.2.2 Específicos
1.- Se utilizarán las herramientas de workbench para el modelado de la base de
datos necesaria para el almacenamiento de datos de las tareas, siguiendo las
formas normales correspondientes.
2.3 Justificación
El desarrollo de la plataforma actual de Storecheck se inició hace 9 años, por lo
tanto, el modelo, las tecnologías y la infraestructura se volvieron obsoletos y poco
escalables, añadido a esto la evolución del mercado a influenciado para que se
decidiera ofrecer una nueva plataforma a los clientes orientada a las tecnologías
actuales y aprovechando lo que nos ofrece el Cloud y DevOps.
11
De acuerdo con un estudio realizado por GS1 y Psyma, la perspectiva del
crecimiento del retail en México se mantenía estable e incluso el 72% de las
empresas encuestadas percibían un crecimiento durante 2019. Por lo que la
industria del retail se vuelve cada día mas demandante y con una competencia cada
vez mayor.
Siendo entonces Storecheck una empresa dedicada al servicio de las empresas del
retail es necesario que se implementen tecnologías que soporten tanto la demanda
actual como la demanda futura de servicios.
2.4 Alcance
El proyecto será capaz de atender a las necesidades de los módulos 2 (Creación
de tareas), 6 (Administración de tareas) y 9 (Tareas foco) del sistema. Creando así
las funcionalidades para la creación y gestión de tareas, el seguimiento de tareas
foco y la pantalla para la gestión de plantillas.
12
Capítulo 3. Marco Teórico
En México al cierre del 2018 el retail aportó al PIB 18 mil millones de pesos según
la Asociación Nacional de Tiendas de Autoservicio y Departamentales (ANTAD).
Siendo este uno de los sectores mas importantes a nivel nacional.
Por esto es de vital importancia que este sector comercial se actualice a las nuevas
tecnologías, aprovechando sus bondades y generando nuevas oportunidades de
crecimiento. Ya que un estudio realizado en 2016 por el INEGI en México mostro
13
que el 44.1 de las empresas ya obtienen ingresos derivados de productos
significativamente mejorados debido a la tecnología e innovación.
La revista Forbes público un artículo en 2019 diciendo que la analítica es una de las
principales evoluciones de la industria del retail en el 2019.
14
“Un importante número de los expositores han desarrollado herramientas que
permiten saber el comportamiento de un determinado cliente durante su visita
en tienda, ya no únicamente rastreando los tickets de compra o con el
tracking del WiFi sino utilizando cámaras que identifican a cada cliente desde
su entrada y registran el comportamiento, generando data que permite
distribuir de mejor manera los productos, establecer horario de personal y
adaptar sus mensajes publicitarios.” - Revista Forbes México, marzo 5, 2019.
Un sistema web puede transferir sus datos por medio de interfaces SOAP o
REST las cuales son un conjunto de principios arquitectónicos para la
transferencia de información por medio de una red interconectada.
• Framework
Un framework proporciona herramientas y bibliotecas que simplifican tareas
comunes de desarrollo, y mejora la seguridad contra los ataques. Los
frameworks permiten escribir sintaxis simplificada que generará el código.
15
3.2.2 Lenguajes de programación
• Java
Java es un lenguaje de programación y una plataforma informática
comercializada por primera vez en 1995 por Sun Microsystems.
Hoy, Java no solo impregna Internet, sino que también es la fuerza invisible
detrás de muchas de las aplicaciones y dispositivos que alimentan nuestra
vida cotidiana. Desde teléfonos móviles hasta dispositivos portátiles, juegos
y sistemas de navegación hasta soluciones de comercio electrónico.
• Javascript
JavaScript (JS) es un lenguaje de programación ligero, interpretado o
compilado en tiempo real con funciones de primera clase. Si bien es más
conocido como el lenguaje de secuencias de comandos para páginas web,
muchos entornos que no son del navegador también lo usan, como Node.js,
Apache CouchDB y Adobe Acrobat. JavaScript es un lenguaje dinámico
basado en prototipos, multi-paradigma, de un solo hilo, que admite estilos
orientados a objetos, imperativos y declarativos (por ejemplo, programación
funcional).
16
JavaScript se ejecuta en el lado del cliente de la web, que se puede utilizar
para diseñar / programar cómo se comportan las páginas web ante la
ocurrencia de un evento. JavaScript es un lenguaje de programación fácil de
aprender y potente, ampliamente utilizado para controlar el comportamiento
de la página web.
• Postgresql
PostgreSQL es un potente sistema de base de datos relacional de objetos de
código abierto que usa y amplía el lenguaje SQL combinado con muchas
características que almacenan y escalan de manera segura las cargas de
trabajo de datos más complicadas. Los orígenes de PostgreSQL se remontan
a 1986 como parte del proyecto POSTGRES en la Universidad de California
en Berkeley y tiene más de 30 años de desarrollo activo en la plataforma
central.
17
describir semánticamente documentos científicos. Sin embargo, su diseño
general le ha permitido adaptarse, en los años siguientes, para describir otros
tipos de documentos e incluso aplicaciones.
3.2.6 Frameworks
• Groovy
Groovy es un lenguaje orientado a objetos para la Plataforma Java, como
alternativa al lenguaje de programación Java. Es un lenguaje dinámico,
similar a Python, Ruby, Perl. A demás puede usarse como lenguaje de
scripting dentro de la Plataforma Java. Siendo precisos, Groovy es un
Lenguage Dinámico Ágil.
18
Groovy utiliza una sintáxis con llaves para delimitar bloques, y se compila
dinámicamente hacia bytecodes para la Máquina Virtual Java, funcionando
así con cualquier librería y código Java. El compilador Groovy genera
bytecodes Java estándard que pueden usarse dentro de cualquier proyecto
Java. Además, la mayoría del código Java es sintácticamente válido en
Groovy.
• Grails
Grails es un framework para el desarrollo de aplicaciones web basado en el
lenguaje de programación Groovy, que a su vez se basa en la Plataforma
Java.
• Bootstrap
Bootstrap es un Framework para crear páginas webs de gran calidad que se
adaptan a múltiples pantallas, es decir su interface tiene el concepto de
Responsive Design (Diseño Adaptable).
19
• JQuery
jQuery es un software libre y de código abierto. Posee un doble
licenciamiento bajo la Licencia MIT y la Licencia Pública General de GNU v2,
permitiendo su uso en proyectos libres y privativos. jQuery consiste en un
único fichero JavaScript que contiene las funcionalidades comunes de DOM,
eventos, efectos y AJAX. Es una biblioteca o Framework de JavaScript,
creada inicialmente por John Resig. Fue presentada el 14 de enero de 2006
en el BarCamp NYC.
3.2.7 Herramientas
• IntellijIdea
Es un ambiente de desarrollo integrado (IDE) para el desarrollo de programas
informáticos. Es desarrollado por JetBrains (anteriormente conocido como
IntelliJ), y está disponible en dos ediciones: community edition y edición
comercial. Esta última es una edición de pago. Mientras que la edición de
comunidad está disponible bajo una licencia de código abierto.
20
IntelliJ IDEA es un entorno de desarrollo integrado (IDE) multiplataforma para
Java. El IDE puede extenderse mediante numerosos complementos que
harán del programa todavía más completo. Como dato interesante el 65 %
de los desarrolladores en Java escoge IntelliJ IDEA como IDE.
• DBeaver
DBeaver es un gestor universal de BBDD multiplataforma, que ofrece soporte
a las bases de datos más conocidas del mercado (MySQL, Oracle, DB2, SQL
Server, PostgreSQL, etc), así como algunas NoSQL (MongoDB, Cassandra).
• Workbench
Esta es una herramienta visual de diseño de bases de datos que integra
desarrollo de software, administración de bases de datos, diseño de bases
de datos, creación y mantenimiento para el sistema de base de datos
MySQL.
21
MySQL Workbench permite diseñar visualmente, modelar, generar y
administrar bases de datos. Incluye todo lo que necesita un modelador de
datos para crear modelos complejos de ER, ingeniería directa e inversa y
también ofrece características clave para realizar tareas difíciles de gestión
de cambios y documentación que normalmente requieren mucho tiempo y
esfuerzo.
• Figma
Figma es un programa que ofrece todas las herramientas necesarias para
diseñar un proyecto. Sobre todo, es ideal para crear interfaces de usuario
tanto para web como para móvil. También permite crear prototipos, generar
código para el traspaso (hand-off) e ilustrar, aunque para esto último no es la
mejor herramienta para ello.
3.3 Metodología
3.3.1 Scrum
Scrum es una forma ágil de gestionar un proyecto, generalmente el desarrollo de
software, un marco para administrar un proceso.
22
qué persona hará qué tarea o cómo se resolverá un problema. Esos son problemas
que decide el equipo en su conjunto.
Dentro del desarrollo ágil, los equipos Scrum están respaldados por dos roles
específicos. El primero es un ScrumMaster, que puede considerarse como un
entrenador para el equipo, ayudando a los miembros del equipo a usar el proceso
Scrum para desempeñarse al más alto nivel.
El propietario del producto (PO) es el otro rol, y en el desarrollo del software Scrum,
representa a la empresa, los clientes o usuarios, y guía al equipo hacia la
construcción del producto correcto.
Scrum es utilizado para que el producto pueda llegar rápidamente al usuario final,
para estar seguro de responder a la necesidad, por esto el uso de sprints.
23
Su nombre, MVC, parte de las iniciales de Modelo-Vista-Controlador (Model-View-
Controller, en inglés), que son las capas o grupos de componentes en los que
organizaremos nuestras aplicaciones bajo este paradigma.
Modelo
En la capa Modelo encontraremos siempre una representación de los datos del
dominio, es decir, aquellas entidades que nos servirán para almacenar información
del sistema que estamos desarrollando.
Vista
Los componentes de la Vista son los responsables de generar la interfaz de nuestra
aplicación, es decir, de componer las pantallas, páginas, o cualquier tipo de
resultado utilizable por el usuario o cliente del sistema.
Controlador
La misión principal de los componentes incluidos en el Controlador es actuar como
intermediarios entre el usuario y el sistema. Serán capaces de capturar las acciones
de este sobre la Vista, como puede ser la pulsación de un botón o la selección de
una opción de menú, interpretarlas y actuar en función de ellas.
24
Realizarán también tareas de transformación de datos para hacer que los
componentes de la Vista y el Modelo se entiendan. Así, traducirán la información
enviada desde la interfaz.
Esto significa, por ejemplo, que no debemos usar workarounds que hagan
que el código y el lenguaje parezcan raros.
25
Debemos sentir que es fácil de leer por cualquier desarrollador sin pasar
horas investigándolo.
La simplicidad tiene que ser un elemento clave del diseño, y se debe evitar
la complejidad innecesaria. YAGNI es una práctica que nos alienta a
enfocarnos exclusivamente en las cosas más simples que hagan funcionar
al software.
26
La expresividad del código significa que tiene nombres significativos. Estos
nombres deben expresar la intención. No tienen que resultar engañosos.
Tienen que ser distintivos. La expresividad hace que el código se documente
a sí mismo, resultando en que sea menos importante la documentación.
Requerimientos
• La tarea podrá crearse desde 0
• Una nueva tarea inicia con estatus inactivo o en modo “borrador”. El modo
“borrador” se apaga con la opción publicar.
• Para cambios el proceso será el siguiente:
1.- Editar tarea
27
2.- Activar la opción publicar. Este cambio lo verán solo los puestos
que no hayan iniciado la captura de la tarea editada.
• Las ediciones de las tareas generan en el sistema una nueva versión
manteniendo el registro la versión anterior para posteriores reportes.
• La creación y todas las ediciones de las tareas se guardan en vivo.
• Solo se permitirá la edición de la tarea por un solo puesto a la vez.
• Los elementos de captura podrán condicionarse entre sí.
• La condición disponible dependerá del tipo de dato.
• Los elementos simples de captura podrán relacionarse a productos.
• La captura de un elemento relacionado a productos que tiene una condición
permitirá únicamente la captura del universo de productos que la cumplan.
Elementos y atributos
28
Dimensión de productos
Tipo
Categoria Subcategoria Segmento Producto Marca+Categoria Marca+Segmento
Fabricante+SegmentoFabricante+Categoria
Entero x x x x x x x
Decimal x x x x x x x
Lista selección unica x x x x x x x
Lista Selección multiple x x x x x x x
Lista ranking x x x x x x x
Check / SI-NO /True-False x x x x x x x
Hecho x x x x x x x
Fecha x x x x x x x
Hora x x x x x x x
Feha y hora x x x x x x x
Texto x x x x x x x
Comentario x x x x x x x
Código QR x x x x x x x
Código de barras x x x x x x x
Audio x x x x x x x
Video x x x x x x x
Firma x x x x x x x
Foto x x x x x x x
Humor
Contador
Precio x
Comunicación de precio (Si/No) x x x
Catalogación(Si/No) x x x
Disponibiliad (Si/No) x x x
Agotamiento (Si/No) x x x
Disponibilidad x x x
Frentes (entero) x x x x x x x x
Frentes (decimal) x x x x x x x x
Fondos (entero) x x x x x x x x
Fondos (decimal) x x x x x x x x
Inventario (entero) x x x x x x x x
Inventario (decimal) x x x x x x x x
Pedido (entero) x
Pedido (decimal) x
Caducidad (fecha) x
Caducidad (entero) x x x x x x x x
Ventas (entero) x
Ventas (decimal) x
Abordos x x x x x
29
Ilustración 6 Jerarquía de condicionales
Planeación
Para la estructura de base de datos se tomaron como referencia las formas
normales, lo cual permite una mejor eficiencia para la extracción y almacenamiento
de datos.
30
Creándose una tabla por cada uno de los elementos esenciales que necesitan
almacenarse. Separándose en 5 elementos fundamentales: Tareas, acciones,
catálogo de opciones y versiones de las tareas.
Cuando un usuario da clic en el botón de “Nueva tarea”, se creó un modal con las
opciones de tipos de tareas disponibles, la cual se puede elegir para crear desde 0.
31
Ilustración 8 Modal tipos de tareas
Una vez el usuario haya elegido la tarea que desea crear, lo manda a una pantalla
de configuración para la nueva tarea.
Para esto, se creó una nueva vista llamada “Creación de tareas”, la cual tendrá las
interacciones necesarias con el controlador para configurar una tarea. En esta vista
se puede configurar el nombre de la tarea, su alcance y vigencia, así como las
acciones que se deseen crear. Dentro de esta pantalla es posible también publicar
el borrador creado o si se desea cancelarlo.
32
Ilustración 9 Interfaz de tarea
4.1.4 Acciones
Dentro de los componentes esenciales de la tarea son las acciones de estas, por lo
cual dentro de la pantalla de configuración de tareas se colocó la configuración de
sus acciones, colocando un botón en la parte inferior derecha, siguiendo las mejores
prácticas del UX/UI, este botón se colocó de fácil acceso para el usuario, en donde
el usuario al dar clic podrá crear una nueva acción para la tarea en configuración.
Una creada la nueva acción podrá configurarse, para lo cual se creó un formulario
con los atributos modificables de la tarea. Por ejemplo, descripción de la tarea,
obligatoriedad, opción de foto y foto múltiple, límites y asociación a árbol de
productos.
33
Ilustración 10 Formulario de acciones
34
Ilustración 11 Tipos de acciones
35
Ilustración 12 Alcance de tarea
Para esta funcionalidad se tomó un plugin basado en Javascript para poder mover
los elementos dentro de la pantalla y colocarlos en un lugar en específico, con esto
se logró que una acción ya creada pudiera colocarse debajo de otra para así crear
una condición entre acciones, convirtiendo la tarea debajo en acción hijo y la y tarea
encima como acción padre.
36
Una vez colocada la tarea donde se desea condicionar, aparece un formulario
dinámico, en el cual existen 3 opciones fundamentales para elegir los posibles
escenarios de condición, en donde se podrá elegir entre: “Si la acción padre tiene
cualquier respuesta la acción hijo aparece”, “Si la acción padre se contesta con una
respuesta en específico la acción hijo aparece” y “Si no es posible contestar la
acción padre, la acción hijo aparece”.
Ilustración 13 Condicionales
37
Ilustración 14 Selector nivel de productos
38
Ilustración 15 Selección de elementos
39
esta pantalla. La información dada al usuario deberá ser clara, así, podrá verse
cuando una tarea esta activa, y visual en móvil.
Para facilidad del usuario, la tabla puede ser ordenada por cada una de las
columnas mostradas.
40
Ilustración 16 Tabla de tareas
41
Para poder cambiar la configuración de una tarea, se colocó un botón en la parte
superior de la pantalla de visualización de tareas para habilitar una nueva versión
de la tarea, tomando siempre en cuenta el requerimiento de que solo un puesto
podrá editar la tarea a la vez.
El para generar una nueva versión de la tarea “duplica” los registros de la tarea,
para así mantener versión previa sin modificaciones y poder generar una nueva
versión para las modificaciones que se quieran hacer.
42
Para que el usuario en campo pueda corregir el error será necesario mandarle una
tarea predefinida por el sistema, la cual ayudara y guiara al usuario en campo para
la correcta corrección del problema que ocasiono la venta cero. Además de que
proporcionara información para un reporte posterior al cliente.
43
Proporcionar al sistema la funcionalidad de generar alertas de tarea foco de manera
manual, de forma que, el usuario web pueda mandar la alerta detectada de al
personal de campo y esta quede registrada para su posterior seguimiento.
La venta cero es una alerta generada por el sistema o usuarios al notar que en una
tienda un producto deja de venderse sin razón aparente y el usuario en campo debe
ser el encargado de verificar, inspeccionar y realizar la tarea definida para localizar
la razón de esta falta de ventas, y en caso de, poder solucionar el problema de la
venta cero.
Las tareas foco dan al usuario el valor necesario para evitar pérdidas monetarias,
detectando y corrigiendo errores en campo de manera temprana.
Antes de crear esta nueva tarea deberá ser añadido un nuevo tipo de tarea a la
tabla capture_module_type para especificar las tareas de tipo foco, las cuales
tendrán la columna is_system = true para especificar que es una tarea definida por
el sistema y esta no podrá ser editada por el usuario.
44
• Description: i18n descripción del tipo de tarea foco
• Default_capture_module_id: Relación con la definición de tarea default.
• Has_product: Bandera para saber si la tarea foco incluye un producto o no.
• Attr_info: Columna con formato json para almacenar los atributos distintos
entre tareas.
Las tareas foco necesitaran de una nueva tabla a nivel proyecto para almacenar sus
datos y dar su posterior seguimiento. Dicha tabla contendrá los campos:
• Id: llave primaria del registro
• Active: bandera para activar o desactivar una tarea foco
• Attributes: formato JSON para almacenar la información de la tarea. Ejemplo
(venta cero):
{"end_date":"20200331","last_sale_date":"20200114","lost_estimated":"1200
0.00","detected_date":"20200331","description":"description","sales":"12","pr
ice":"12.50","product_id":"1","days_wo_sales":"5","stock":"12","place_id":"1",
"start_date":"20200331"}
• Capture_module_id: Relación con la tarea correspondiente.
• Focus_task_type_id: Relación con tipo de tarea foco.
• Notified: contendrá un booleano para saber si la push fue enviada a 1 o más
puestos
45
Ilustración 19 Selector de tarea foco
Una vez seleccionada la tarea foco que se desea alertar, se despliega un formulario
dinámico para insertar los atributos de la tarea foco que se enviara a los usuarios
de campo.
46
Ilustración 20 Modal venta cero
• saveFocusTask
• ExportFocusTask
47
4.3.4 Reporte de tareas foco vigentes
Para el usuario es esencial poder visualizar las tareas foco que ya se han lanzado,
y su respectivo seguimiento, por lo cual dentro del modal de tareas foco se
desarrolló un link para poder exportar un archivo .csv con la información de las
tareas foco que siguen vigentes.
48
Este archivo es un .csv separado por punto y coma para que sea facil de visualizar
por cualquier editor de texto o en programas como excel, para que sea facil de
filtrar o generar un reporte al cliente.
Se consultarán los puestos que hayan tenido una visita a la tienda seleccionada en
un rango de 15 días atrás o definida en 15 días delante.
49
Si la fecha actual está dentro de la vigencia de la venta cero guardada se buscarán
todos los puestos que tengan una visita planeada con la tienda correspondiente
dentro de los días de vigencia.
• getByRole: retornara la definición de las tareas foco válidas para una lista de
role ids, en caso de que la lista llegue vacía se tomara el userId en session
para tomar todos los puestos de ese usuario.
• getStatus: Este servicio servirá para refrescar la información de las tareas
foco solicitadas. Recibirá un listado de ids de tareas foco y retornará la
información de estas.
• getByPlace: Retornará la definición de todas las tareas foco vigentes a partir
de una lista de ids de lugares.
50
4.4 Despliegue y pruebas de entorno
Una vez desarrolladas las funcionalidades de manera local en una computadora de
escritorio, fue necesario hacer pruebas en los servidores donde es lanzada la
aplicación. Ya que los sistemas operativos y los entornos entre la pc local y los
servidores en la nube son distintos.
Para esto el sistema Storecheck III ya cuenta con distintos entornos que simulan los
ambientes en producción para que los desarrolladores podamos probar nuestros
desarrollos una vez finalizados.
Con este despliegue se generan las pruebas de entorno, las cuales consisten en
que las funcionalidades programadas funcionen de igual manera en la pc local que
en el servidor de aplicación.
En caso de que esto no funcione así será necesario cambiar el desarrollo para que
ambos entornos funcionen de igual manera.
51
datos y concurrencia dentro del sistema, además de su comportamiento e
interacción con las otras funcionalidades del sistema.
Una vez que las funcionalidades pasan las pruebas realizadas en el entorno de
preproducción es posible lanzar a los servidores de producción en donde el usuario
ya podrá utilizar cada una de las funcionalidades desarrolladas.
Capítulo 5. Resultados
De acuerdo con los objetivos establecidos en el capítulo 2 del reporte de
residencias, los resultados son los siguientes:
Creación de tareas
Se creo la funcionalidad completa generando una interfaz de usuario actualizada
donde se puede configurar desde 0 un módulo y con la posibilidad de crear nuevas
versiones.
Administración de tareas
La pantalla de administración de tareas es capaz de mostrar visualmente al usuario
las tareas almacenadas en el sistema, así como la posibilidad de desactivar, clonar
o crear nuevas tareas a partir de esta pantalla.
Tareas foco
Se adapto el sistema para poder generar alertas de manera manual, siguiendo el
desarrollo previo de tareas y automatizando para alertar a las posibles perdidas
monetarias que tenga el cliente.
52
Todo esto se realizó bajo la metodología SCRUM, basada en sprint de 3 semanas
y con el desarrollo continuo de las funcionalidades.
53
6.2 Competencias genéricas
Capacidad de planificar y organizar siguiendo la filosofía de trabajo SCRUM.
Basada en Sprint y mejora continua.
Conclusiones y recomendaciones
Conclusiones
El desarrollo de los módulos requirió tanto de la implementación de los
conocimientos adquiridos durante la carrera, como la adquisición de nuevos
conocimientos que complemente la formación como ingeniero.
54
mediante esta se pudieron desglosar los grandes objetivos en pequeñas tareas que
pudieran realizarse durante los sprint para así terminar en tiempo cada uno de los
objetivos.
Recomendaciones
Sin duda el uso de nuevas metodologías agiles es una de las recomendaciones
más grandes adquiridas durante este proyecto, ya que, son metodologías
especializadas para la realización de cualquier proyecto, las cuales ayudan a
organizar y separar cada una de las tareas a realizar cumpliendo así con todos los
objetivos establecidos en el proyecto.
Los proyectos en producción necesitan mas que solo las habilidades de desarrollo,
es necesario tomar en cuenta el contexto que lo rodea y los distintos problemas
que abordan cualquier sistema web, entre los cuales se encontraron la
concurrencia entre usuarios, tiempos de respuesta, manejo de errores y
escalabilidad de código.
55
Finalizando las recomendaciones como un plus para la formación de un ingeniero
es siempre seguir los estándares y las mejores practicas de desarrollo. Las cuales
ayudaran a no solo resolver el problema dado, sino en el menor tiempo y con la
mejor calidad posible.
56
OpenGIS Consortium (1999) OpenGIS Simple Features Specification For SQL
http://www.opengis.org/docs/99-049.pdf
W3. (2020). HTML Living Standard . 26 de marzo del 2019, de W3 Sitio web:
https://html.spec.whatwg.org/multipage/introduction.html
W3.org. (2016). A brief history of CSS until 2016. 26 de marzo del 2019, de W3.org
Sitio web: https://www.w3.org/Style/CSS20/history.html
Damian Amoedo. (2017). Intellij IDEA, instala este IDE para desarrollar con Java
desde PPA. 23 abril 2020, de Ubuntu Sitio web: https://ubunlog.com/intellij-idea-
ide-java/
José María Aguilar. (2019). ¿Qué es el patrón MVC en programación y por qué es
útil?. 24 abril 2020, de Campus mvp Sitio web:
57
https://www.campusmvp.es/recursos/post/que-es-el-patron-mvc-en-programacion-
y-por-que-es-util.aspx
58