Digitalización de procesos de reparto y gestión de almacenes
Introducción
En este artículo mostraré en detalle las motivaciones en la resolución de un caso de negocio complejo relacionado con la integración de sistemas para la gestión de procesos logísticos.
Recientemente he finalizado un proyecto para Monva S.L, una compañía que distribuye en distintos canales el Aceite de Oliva Virgen Extra que ella misma produce y envasa. El objetivo ha sido facilitar el proceso de reparto a sus clientes de los pedidos que registra en su sistema ERP, integrando la actividad comercial con la programación de envíos, el reparto, las entregas, y la gestión de sus almacenes.
Qué mejor manera que poner en valor y promocionar las capacidades propias que describiendo e ilustrando los resultados alcanzados en la ejecución de los distintos proyectos que vamos finalizando.
NOTA IMPORTANTE: Si bien la descripción de los productos que puedan aparecer en las distintas pantallas que se utilizan para mostrar las distintas funcionalidades que ofrece la solución son reales, la información sobre clientes, o los precios asociados a los productos no tienen ninguna relación con la realidad de Monva S.L. correspondiéndose con datos arbitrarios cargados en los servidores de pruebas con el único fin de verificar el correcto funcionamiento de los sistemas.
El desafío
Además de la oportunidad de conocer AOVEs verdaderamente exquisitos, he de decir que profesionalmente, la experiencia de trabajo en el sector primario ha sido una de las más satisfactorias que haya podido tener hasta la fecha, sin que esto reste ni un ápice de complejidad al desafío que supone mantener unos estándares de calidad para el servicio que Monva presta a sus clientes tan altos como los de los productos que comercializa. Estos requisitos se describen a continuación:
La solución
Técnicamente
La solución técnica se ha basado en la construcción de una serie de componentes sobre el framework de desarrollo del ERP Dolibarr que hemos implantado durante 2020, más el desarrollo de una app para teléfonos móviles que permite desplegar las funcionalidades necesarias para el proceso de reparto, incorporando la explotación del hardware del dispositivo que las facilita.
La integración con el ERP se ha realizado utilizando íntegramente las funciones de la API que proporciona, dentro de un módulo integrado con el sistema de forma nativa, lo que debería asegurar la capacidad de la solución para adaptarse a la futura evolución del ERP. Estos desarrollos se han producido en PHP según las recomendaciones de desarrollo del ERP.
El módulo desplegado en el ERP se acompaña de otras funcionalidades que no se incluían de forma nativa, que se corresponden con otras necesidades del negocio tales como: el registro de orígenes y destinos para muestras comerciales, el registro de pedidos integrado con el sistema de e-commerce, o la gestión de las entregas de otros proveedores logísticos. Aspectos sobre los que desarrollaré futuros artículos en la misma línea que el que aquí se presenta.
En cuanto a la app ha sido desarrollada ad-hoc únicamente para sistemas operativos Android, habiéndose compilado y probado con éxito en dispositivos Xiaomi con las versiones 10 y 11 de Android. Esta aplicación ha sido desarrollada utilizando el framework Xamarin Forms de Microsoft en C# para la parte común del proyecto, y en Java para las funciones que acceden al hardware específico del dispositivo. Adicionalmente, se integra con una impresora de tickets portátil a la que se accede por Bluetooth para imprimir los albaranes de entrega correspondientes.
Finalmente, las necesidades de explotación nativa del hardware del dispositivo móvil resultaron ser las siguientes:
Las funciones de impresión se han desarrollado sobre el API de una impresora Bixolon SSP-310 con tickets de 8cm de ancho de papel térmico. La elección de este modelo tiene en cuenta el criterio del precio, que incorpora los mecanismos de conectividad necesarios, unas dimensiones y pesos adecuados, y el conjunto de accesorios que permiten preservar su integridad en el desarrollo de la actividad de los repartidores. Una vez probada se observa un rendimiento más que aceptable.
Funcionalmente
Se trataba de integrar la actividad del departamento comercial que recibe los pedidos desde cualquier canal (telefónico, e-commerce, o email), con la asignación del reparto de esos pedidos a las personas que se ocupan de esta tarea, ofreciendo a estos últimos las herramientas necesarias para ayudar a completar los procesos e informar del estado de las entregas que van realizando.
La solución automatiza actividades que anteriormente tenían que completarse manualmente requiriendo la transcripción manual de volúmenes de información relativamente grandes y sensibles entre distintas personas, lo que suma a los beneficios de adopción de este modelo los menores costes de atención de errores que típicamente suelen ser mucho mayores que los asociados a la realización de las tareas.
El proceso y la productividad
Se describe el proceso completo que es posible gestionar desde la nueva solución, indicando el tiempo que se reemplaza como medida de la productividad de su adopción. Las medidas sobre estos tiempos se corresponden con estimaciones desde la experiencia personal que cualquiera puede adaptar a sus necesidades.
El resto de cifras que aparecen en relación a volúmenes de actividad, precios, o duración de jornadas laborales han sido calculadas con el objetivo de mostrar un escenario de conveniencia de adopción de la solución en el que se produce la recuperación de la inversión en un periodo de aproximadamente un año.
El proceso puede resumirse de la siguiente manera:
La siguientes tablas describen un escenario posible para calcular los beneficios de adopción del nuevo modelo de reparto:
Donde se considera la capacidad de un único repartidor y unos costes laborales iguales para la función de reparto y las funciones administrativas de la gestión de pedidos. Las posibles discrepancias con los valores aportados pueden variar en función de la naturaleza del reparto o de los costes, que bien pueden compensarse con otras bondades no reflejadas relacionadas con la mayor facilidad de la gestión de stocks y el control de almacenes, y la atención de contingencias relacionadas con la gestión de errores humanos sobre el proceso original.
En este escenario, los costes y beneficios de la aplicación de esta solución quedarían de la siguiente manera.
Donde se incluye una estimación realista de los aprovisionamientos necesarios para garantizar la continuidad del servicio además de los costes del software: teléfonos (2), impresoras portátiles (2), accesorios de seguridad para las impresoras, y consumibles.
Cada cual podría hacer sus cuentas conociendo sus costes y los niveles de calidad de sus servicios. Se presenta un escenario típico de amortización del software en 5 años, mostrando que la recuperación de la inversión podría producirse en menos de un año en función de los parámetros reales que se soporten en cada caso. Obviamente, incrementando el número de envíos, o el número de repartidores el beneficio se multiplica.
La utilidad que se le quiera dar a esta mejora puede tener numerosas variantes, pero personalmente me quedo con la posibilidad de hacer crecer la capacidad de la actividad de reparto, y poder dedicar tiempo de los departamentos comerciales a realizar nuevas funciones que impulsen este crecimiento (por ejemplo, el marketing digital para potenciar las ventas en canales online, customer care...).
El resultado
Básicamente, la distribución de las tareas realizadas por el departamento comercial se realiza en la oficina desde la extensión de los servicios del ERP Dolibarr mediante:
Mientras que las tareas realizadas por el servicio de reparto se completarían íntegramente desde la app instalada en un teléfono.
Funciones desplegadas sobre el ERP
1.- Generación de códigos QR para identificación de lotes en la línea de envasado.
El ERP Dolibarr no incorpora de forma nativa la posibilidad de generar códigos QR que sinteticen la información de un producto, su lote su fecha de caducidad. En este caso, a esta información se la ha añadido un número de serie de manera que en la lectura posterior de los productos se evite la posibilidad de leer códigos repetidos.
Ahora, el usuario que gestiona la producción puede asociar el resultado de sus partes de trabajo (productos terminados a la venta) con un código QR único para cada embalaje que se añade en la etiqueta en su cadena de producción.
2.- Gestión de embalajes y desembalajes
Conocer las entradas y salidas de los productos que se entregan hace necesario identificar el contenido de cada embalaje, por lo que también ha sido necesario desarrollar un módulo de embalajes que permita controlar sus contenidos por lotes de forma precisa.
Incorporar estas capacidades no valoradas en el modelo de coste/beneficio anterior implica dotar a la organización de mayores posibilidades comerciales, puesto que ahora serán capaces de configurar catálogos de productos a la venta que combinan productos de distinta naturaleza, más complejos que el esquema simple de embalaje primario, secundario y terciario basado en un único tipo de envase. En cualquier caso, el ERP Dolibarr no prevé de forma nativa la gestión en este sentido.
Si bien el modelo lógico que incorpora el ERP Dolibarr permitiría gestionar los embalajes desde el módulo de producción, la acción de desembalar se volvería extremadamente costosa y estaría sometida a numerosos errores muy difíciles de corregir. Ahora es posible identificar con un código QR el contenido de cada embalaje secundario y gestionar stocks por cualquier combinación posible de productos a la venta.
3.- Configuración de empresas de reparto
En este apartado se ha extendido la información de los proveedores de tal manera que se asocian con empresas y los empleados designados para la función de reparto, así como los almacenes con los que puede operar cada una de ellas.
Se ha añadido a título informativo el registro de información adicional sobre horarios de semanales de reparto y cobertura geográfica del servicio de reparto para atender futuras demandas que puedan darse teniendo en cuenta estos parámetros.
En este caso se integran en la ficha de proveedores del ERP como puede verse en la ilustración.
4.- Funciones comerciales
Las funciones comerciales se integran con el módulo comercial integradas creando una nueva opción en la ficha de los pedidos denominada "reparto", que tiene en cuenta las cantidades ya repartidas para cada pedido y permite configurar envíos asignado: una empresa de reparto y un repartidor de los configurados, una fecha y hora de entrega de la mercancía al cliente, y la posibilidad de imprimir el albarán valorado a título informativo según los términos comerciales definidos en el pedido.
Una vez asignado el repartidor, es posible determinar las cantidades de productos que saldrán de cada almacén para completar la entrega. En este momento, se crea un envío que pasa a la lista de tareas pendientes del repartidor asignado.
Es posible configurar los envíos para que sean entregados tanto por personal de reparto de los proveedores asociados al servicio como por empleados de la propia organización.
Una vez configurado el envío y asignado a un repartidor, cambia el estado del pedido quedando pendiente su cierre formalizando la entrega.
Una vez configurado el envío, es posible consultar la carga de trabajo por productos en la siguiente pantalla.
Funciones desplegadas sobre la app móvil
El diseño de la app móvil sobre todo tiene en en cuenta la facilidad de uso sin que impacte negativamente en el resto de actividades que tiene que realizar el personal de reparto. El proceso principal que representa reproduce el flujo habitual necesario para la la entrega de un envío en las siguientes etapas:
1.- Configuración de la aplicación
La configuración de la aplicación únicamente requiere especificar el la ubicación donde se encuentran los servicios que van a responder a sus demandas.
Recomendado por LinkedIn
2.- Envíos pendientes de entrega
El acceso nos lleva directamente al listado de envíos pendientes de entrega, desde donde el personal de reparto puede progresar en su resolución de forma ordenada. La persona de reparto dispone de toda la información agrupada por días a la que accede seleccionando en el calendario el día para el que quiere visualizar la información.
Desde esta misma pantalla el personal de reparto puede conocer la carga que necesita embarcar en la furgoneta cada día y sincronizar los datos del dispositivo con el servidor.
3.- Detalle del envío.
Pulsando sobre un envío desde el listado de envíos pendientes el personal de reparto comienza el proceso de la entrega seleccionando el siguiente envío que se va a entregar y accediendo a sus detalles.
Además de toda la información del envío, el usuario dispone de accesos directos al servicio de mapas que tenga configurado el dispositivo (en este caso google maps) como ayuda a la conducción para alcanzar el destino, como directamente a las funciones del llamada del teléfono si necesita contactar con el comercial que configuró el envío o la persona del cliente que lo está esperando. Estas funciones se representan por las zonas activas de la pantalla en la sección de contacto correspondiente.
4.- Lectura de productos
Una vez alcanzado el destino, la persona de reparto retira de la furgoneta los productos que efectivamente van a ser entregados y los asocia con el envío. El escaner avisa con un pitido de las lecturas correctas e incorrectas (si no se identifica el artículo, o se corresponde con una lectura de un artículo que ya ha sido escaneado), y mantiene visualmente el avance del proceso.
En el ejemplo se escanean los códigos generados desde la pantalla del backoffice.
Es posible completar las entregas con menos productos de los configurados en los envíos, puesto que la actividad de reparto está sometida a contingencias que pueden hacer que la entrega no llegue a ser completada (roturas, errores...). En este punto la app avisa al repartidor y le pide confirmación.
Adicionalmente, es posible eliminar de la entrega artículos que han sido escaneados a conveniencia del repartidor.
5.- Completar la entrega
Una vez en el destino, la app permite la captura de información adicional relacionada con la identificación de la persona a la que se realiza la entrega, y aquella que tiene que ver con los importes satisfechos a la entrega si así estuviera pactado en las condiciones comerciales.
6.- Impresión del justificante de entrega
La impresión del justificante requiere de la impresora, y esta debe de estar previamente configurada en el dispositivo.
Impresora Bixolon SSP-310
Algunos aspectos del funcionamiento de la impresora deben ser configurados localmente desde las utilidades que proporciona el fabricante. Una vez configurada, se debe emparejar con el dispositivo desde donde será accesible para la app.
Buscar impresora
La conexión de la app con la impresora se encuentra sometida a múltiples factores contingentes que pueden lograr que no se establezca la conexión (adaptador Bluetooth apagado, impresora apagada, sin papel...), por lo que la app debe disponer de la utilidad que permita reconectar en el caso de ser necesario.
8.- Imprimir justificante de entrega
Una vez que la impresora se encuentra accesible desde la app, es posible imprimir el justificante de entrega.
Con el siguiente resultado (mis disculpas por el pulso de la fotografía)
Pulsando sobre el botón "SIGUIENTE ENTREGA" se vuelve al listado de envíos pendientes, donde la entrega que se ha completado habrá desaparecido.
Es en este momento cuando se intenta enviar la información al servidor, y en el caso de no haber conectividad el repartidor puede seguir completando entregas sobre la lista original.
Los elementos con información discrecional que aparece en la impresión del ticket (el logotipo, y el texto del encabezado, y el texto del pie son configurables en función de las necesidades del cliente.
9- Sincronización de información de envíos
Como se ha explicado, la aplicación puede trabajar "online" y "offline", lo que requiere un mecanismo de comunicación con el ERP silencioso para la persona de reparto a la hora de recuperar la información sobre sus tareas pendientes, y enviar información sobre las entregas realizadas.
Sólo existe un servicio publicado en el ERP que recibe la información capturada en los dispositivos, la procesa, y devuelve como resultado la lista de tareas pendientes para el repartidor que se está conectando. Para el acceso se utiliza el servicio de "tokens" nativos del ERP, quedando delegado en este componente la seguridad de los accesos.
9.1 Eventos de sincronización
La información capturada en los dispositivos se almacena localmente, de tal manera que cuando se producen determinados sucesos en la aplicación se recupera y se envía al servidor, y esta no es eliminada del dispositivo hasta que se haga llegar al servidor.
El mecanismo de sincronización de información se dispara en tres sucesos de la aplicación:
9.1.- Estado de los pedidos con envíos procesados
Una de las ventajas de utilizar las funciones nativas que proporciona el ERP es hacer valer el conocimiento que contienen sus procesos en cuanto a la transición de los estados en el ciclo de vida de un pedido desde que una mercancía es solicitada por un cliente, hasta que se completa la entrega y se emite la factura según las condiciones comerciales pactadas.
De esta manera, la fuerza comercial debe conocer en todo momento si se han completado o no las entregas de un pedido, porque esta circunstancia puede tener implicaciones importantes a la hora de emitir la factura/s correspondientes. Así, el proceso de sincronización tiene en cuenta de la misma manera si con cada entrega se completan o no las necesidades del cliente para tomar las decisiones correspondientes (configurar nuevos envíos hasta completarse).
Este proceder ofrece la flexibilidad necesaria para responder a situaciones de ausencia de stock de un determinado producto, donde un mismo pedido puede ser completado con varios envíos en función de las necesidades del cliente en cada momento concreto del tiempo.
9.2.- Tratamiento de errores
También derivado de la posibilidad de trabajo "online" y "offline" existe el caso indeseable de que existan asimetrías entre el estado de la información sobre pedidos y envíos entre el servidor y la aplicación (por ejemplo, un repartidor notifica la entrega de un envío habiendo sido borrado el pedido o el envío con los que se corresponde).
En este caso se tiene en cuenta que la información que transmiten los repartidores no puede perderse, puesto que implica la entrega física de productos a un cliente. El mecanismo de sincronización utiliza el módulo nativo de tickets que proporciona los servicios de "help desk", creando una incidencia que se asocia con la persona responsable en la empresa de la gestión del pedido, y el cliente del envío cuya entrega produce la incidencia, enviando un email que da fe de su existencia de forma activa.
El módulo de Tickets de Dolibarr permite al usuario acceder en todo momento a los casos que le han sido asignados y disponer de la información de seguimiento necesaria.
La estrategia para documentar y permitir la gestión de estos casos sería la siguiente.
Consideraciones a la solución
La solución se ha desarrollado sobre el ERP/CRM Dolibarr con dependencias con los siguientes módulos nativos:
La integración con otro sistema de gestión requeriría el estudio del modelo que representa y el desarrollo de los componentes necesarios que se describen a lo largo de este artículo, y depende del modelo de datos que incorpore el ERP en cuestión y sus capacidades integración.