Deux familles de messages
Pour s'y retrouver, le plus simple est de classer les messages du module selon ce que vous faites au moment où ils apparaissent :
- Valeurs de configuration incohérentes :
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.etMajor overdue threshold cannot exceed critical threshold.
- Actions ou données d'une exception :
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.etSource record id must be positive.
Face à Ignoring an exception requires a reason., la correction est de saisir un motif avant d'ignorer l'exception.
Si vous voulez d'abord voir quels menus le module ajoute et quel parcours suit un enregistrement, consultez le fonctionnement interne du module.
Un cas du début à la fin
Exemple Cas illustratif : l'entreprise et ses chiffres sont inventés pour expliquer le flux.
Distributions Garbí est un distributeur fictif qui vient d'installer le module dans son Odoo. Marta, responsable d'entrepôt, se charge de le configurer et de passer en revue les exceptions chaque matin. Nous suivons ce qu'elle fait et le message qu'elle obtient à chaque étape.
Première étape : la configuration
Marta ouvre Inventory › Route Exceptions › Route Exception Settings, qui contient un seul enregistrement.

Elle commence par mettre l'intervalle d'analyse à zéro pour tester, et le module répond Scan interval and retention must be at least 1. Le message indique clairement le minimum : l'intervalle d'analyse comme la rétention doivent valoir 1 ou plus. Marta remet une valeur valide et enregistre.
Ensuite, elle saisit par erreur un nombre négatif dans une valeur en jours et obtient Day values cannot be negative. Il suffit de la remplacer par une valeur non négative.
Même chose avec le seuil de reliquats : elle le laisse à zéro et voit Backorder threshold and lookback must be at least 1. Comme précédemment, le seuil et la période de rétrospection doivent être d'au moins 1.
Puis elle ajuste les tranches d'ancienneté et répète la même limite dans deux tranches consécutives. Le module refuse avec Age bucket boundaries must increase strictly. Les limites doivent être croissantes et sans doublon ; Marta place donc chaque limite au-dessus de la précédente.
Enfin, elle fixe le seuil de retard Major au-dessus de celui de Critical. Le message Major overdue threshold cannot exceed critical threshold. s'affiche. La solution consiste à baisser Major ou à relever Critical jusqu'à ce que le premier ne dépasse plus le second.
Deuxième étape : traiter les exceptions
Une fois la configuration enregistrée, Marta passe à Inventory › All Route Exceptions.

Elle estime qu'une exception ne mérite pas de suivi et décide de l'ignorer sans rien écrire. Le module bloque l'action avec Ignoring an exception requires a reason. Marta ajoute le motif et peut alors l'ignorer.
Sur une autre exception, elle tente un changement et obtient Cannot change route exception from %(old)s to %(new)s. Le message indique le point de départ et la cible du changement, et signifie que le module n'autorise pas ce passage précis. Marta vérifie le statut de l'exception avant de choisir un autre changement.
Sur une troisième, une action qui a besoin du document d'origine se termine par The source document no longer exists or is not accessible. Le texte évoque deux possibilités : le document n'existe plus, ou il n'est pas accessible à son utilisateur. Marta demande à l'administrateur si le document existe toujours et si ses droits le couvrent.
Troisième étape : le suivi
Sans plus aucune alerte en attente, Marta consulte le tableau de bord et le rapport pour voir les exceptions ouvertes et le temps de résolution par type.


Le message absent du cas
Marta n'a pas rencontré Source record id must be positive., mais il vaut mieux le connaître. Il apparaît si une exception est créée avec un identifiant d'enregistrement d'origine non positif. Vérifiez alors quelle valeur est attribuée à cet identifiant.
Récapitulatif des messages et actions à mener
| Message | Que faire |
|---|---|
Day values cannot be negative. | Remplacer la valeur en jours par une valeur non négative |
Scan interval and retention must be at least 1. | Saisir 1 ou plus pour l'intervalle d'analyse et la rétention |
Backorder threshold and lookback must be at least 1. | Saisir 1 ou plus pour le seuil et la période de rétrospection |
Age bucket boundaries must increase strictly. | Classer les limites des tranches de la plus petite à la plus grande, sans doublon |
Major overdue threshold cannot exceed critical threshold. | Garder le seuil Major égal ou inférieur à celui de Critical |
Ignoring an exception requires a reason. | Saisir le motif avant d'ignorer |
Cannot change route exception from %(old)s to %(new)s. | Vérifier le statut actuel et choisir un autre changement |
The source document no longer exists or is not accessible. | Vérifier que le document existe et que vous y avez accès |
Source record id must be positive. | Vérifier quelle valeur est attribuée à l'identifiant d'origine |
Ce qu'il faut retenir du cas
La plupart des messages de l'exemple sont apparus pendant la configuration, et tous se sont résolus en lisant le texte : il précise le minimum, l'ordre ou la relation entre seuils attendus par le module. Avant de toucher aux paramètres, sachez quelles valeurs vous allez saisir et dans quel ordre vont les tranches.
Au quotidien, les messages bloquent deux choses : ignorer une exception sans motif et effectuer un changement que le module n'autorise pas. Quand l'alerte parle du document d'origine ou de son identifiant, le problème vient du document ou de la valeur de l'identifiant, pas de l'exception.
Comment FlexigoTech vous accompagne
FlexigoTech déploie Odoo 17, 18, 19 et 20 et développe des connecteurs et intégrations sur mesure. Le module est publié sur Odoo Apps pour les versions 17, 18, 19 et 20, à 9 € HT par version d'Odoo, en paiement unique. Vous trouverez plus de détails sur la page du module et sur sa fiche Odoo Apps.
À lire aussi
Vérifié dans le code du module (version 20.0) et dans les sources citées
Sources
- Code du module : flexigo_warehouse_route_exception_dashboard 20.0 (8c481836): models/route_exception.py
- Code du module : 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
