Dos familias de mensajes
Para ordenar los mensajes del módulo conviene separarlos por lo que estás haciendo cuando aparecen:
- Valores de configuración que no cuadran:
Day values cannot be negative.,Scan interval and retention must be at least 1.,Backorder threshold and lookback must be at least 1.,Age bucket boundaries must increase strictly.yMajor overdue threshold cannot exceed critical threshold.
- Acciones o datos de una excepción:
Ignoring an exception requires a reason.,Cannot change route exception from %(old)s to %(new)s.,The source document no longer exists or is not accessible.ySource record id must be positive.
Ante Ignoring an exception requires a reason. la corrección es escribir un motivo antes de ignorar la excepción.
Si quieres ver antes qué menús añade el módulo y qué recorre un registro, lo tienes en cómo funciona el módulo por dentro.
Un caso de principio a fin
Ejemplo Caso ilustrativo: la empresa y sus datos son inventados para explicar el flujo.
Distribuciones Garbí es una distribuidora inventada que acaba de instalar el módulo en su Odoo. Marta, responsable de almacén, se encarga de dejarlo configurado y de revisar las excepciones cada mañana. Vamos siguiendo lo que hace y qué mensaje le sale en cada momento.
Primer paso: la configuración
Marta abre Inventory › Route Exceptions › Route Exception Settings, donde hay un único registro.

Primero pone a cero el intervalo de escaneo para probar y el módulo responde con Scan interval and retention must be at least 1. El mensaje deja claro el mínimo: tanto el intervalo de escaneo como la retención tienen que valer 1 o más. Marta vuelve a poner un valor válido y guarda.
Después escribe por error un número negativo en un valor de días y aparece Day values cannot be negative. Basta con cambiarlo por un valor que no sea negativo.
Con el umbral de pedidos pendientes le pasa algo parecido: lo deja a cero y sale Backorder threshold and lookback must be at least 1. Igual que antes, el umbral y el periodo de consulta hacia atrás deben ser 1 como mínimo.
Luego ajusta los tramos de antigüedad y repite el mismo límite en dos tramos seguidos. El módulo lo rechaza con Age bucket boundaries must increase strictly. Los límites tienen que ir en orden creciente y sin repetirse, así que Marta deja cada límite por encima del anterior.
Por último, coloca el umbral de retraso de Major por encima del de Critical. Sale Major overdue threshold cannot exceed critical threshold. La solución es bajar el de Major o subir el de Critical hasta que el primero no supere al segundo.
Segundo paso: trabajar las excepciones
Con la configuración guardada, Marta pasa a Inventory › All Route Exceptions.

Hay una excepción que considera que no merece seguimiento y decide ignorarla sin escribir nada. El módulo para la acción con Ignoring an exception requires a reason. Marta añade el motivo y entonces puede ignorarla.
En otra excepción intenta un cambio y aparece Cannot change route exception from %(old)s to %(new)s. El mensaje indica de dónde parte el cambio y a dónde intentaba llegar, y significa que el módulo no permite ese paso concreto. Marta comprueba en qué estado está la excepción antes de elegir otro cambio.
En una tercera, una acción que necesita el documento de origen termina en The source document no longer exists or is not accessible. El texto da dos posibilidades: que el documento ya no exista o que no sea accesible para su usuario. Marta pregunta al administrador si el documento sigue existiendo y si sus permisos lo cubren.
Tercer paso: el seguimiento
Ya sin avisos pendientes, Marta revisa el tablero y el informe para ver las excepciones abiertas y el tiempo de resolución por tipo.


El mensaje que no salió en el caso
Marta no se encontró Source record id must be positive., pero conviene conocerlo. Si una excepción se crea con un identificador de registro de origen que no es positivo, aparece este mensaje. Hay que revisar qué valor se asigna a ese identificador.
Resumen de mensajes y qué hacer
| Mensaje | Qué hacer |
|---|---|
Day values cannot be negative. | Cambiar el valor de días por uno que no sea negativo |
Scan interval and retention must be at least 1. | Poner 1 o más en el intervalo de escaneo y en la retención |
Backorder threshold and lookback must be at least 1. | Poner 1 o más en el umbral y en el periodo hacia atrás |
Age bucket boundaries must increase strictly. | Ordenar los límites de los tramos de menor a mayor, sin repetir |
Major overdue threshold cannot exceed critical threshold. | Dejar el umbral de Major igual o por debajo del de Critical |
Ignoring an exception requires a reason. | Escribir el motivo antes de ignorar |
Cannot change route exception from %(old)s to %(new)s. | Revisar el estado actual y elegir otro cambio |
The source document no longer exists or is not accessible. | Comprobar que el documento existe y que tienes acceso |
Source record id must be positive. | Revisar qué valor se asigna al identificador de origen |
Qué aprender del caso
La mayor parte de los mensajes del ejemplo salieron durante la configuración y todos se resolvieron leyendo el texto: dice el mínimo, el orden o la relación entre umbrales que espera el módulo. Antes de tocar los ajustes, ten claro qué valores vas a poner y en qué orden van los tramos.
En el trabajo diario, los mensajes frenan dos cosas: ignorar una excepción sin motivo y hacer un cambio que el módulo no permite. Cuando el aviso habla del documento de origen o de su identificador, el problema está en el documento o en el valor del identificador, no en la excepción.
Cómo te ayuda FlexigoTech
FlexigoTech implanta Odoo 17, 18, 19 y 20 y desarrolla conectores e integraciones a medida. El módulo está publicado en Odoo Apps para 17, 18, 19 y 20, a 9 € sin IVA por versión de Odoo, pago único. Tienes más detalles en la página del módulo y en su ficha de Odoo Apps.
Sigue leyendo
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigo_warehouse_route_exception_dashboard 20.0 (8c481836): models/route_exception.py
- Código del módulo: flexigo_warehouse_route_exception_dashboard 20.0 (8c481836): models/route_exception_config.py
- apps.odoo.com/apps/modules/20.0/flexigo_warehouse_route_exception_dashboard
- apps.odoo.com/apps/modules/17.0/flexigo_warehouse_route_exception_dashboard
- apps.odoo.com/apps/modules/18.0/flexigo_warehouse_route_exception_dashboard
- apps.odoo.com/apps/modules/19.0/flexigo_warehouse_route_exception_dashboard
- flexigotech.com/en/services.html
