Duas famílias de mensagens
Para organizar as mensagens do módulo, convém separá-las pelo que está a fazer quando surgem:
- Valores de configuração que não batem certo:
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.eMajor overdue threshold cannot exceed critical threshold.
- Ações ou dados de uma exceção:
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.eSource record id must be positive.
Perante Ignoring an exception requires a reason., a correção é escrever um motivo antes de ignorar a exceção.
Se quiser ver primeiro que menus o módulo acrescenta e por onde passa um registo, encontra isso em como funciona o módulo por dentro.
Um caso do início ao fim
Exemplo Caso ilustrativo: a empresa e os seus dados são inventados para explicar o fluxo.
A Distribuições Garbí é uma distribuidora fictícia que acabou de instalar o módulo no seu Odoo. A Marta, responsável de armazém, encarrega-se de o deixar configurado e de rever as exceções todas as manhãs. Vamos acompanhando o que ela faz e que mensagem lhe aparece em cada momento.
Primeiro passo: a configuração
A Marta abre Inventory › Route Exceptions › Route Exception Settings, onde existe um único registo.

Primeiro põe o intervalo de análise a zero para testar e o módulo responde com Scan interval and retention must be at least 1. A mensagem deixa claro o mínimo: tanto o intervalo de análise como a retenção têm de valer 1 ou mais. A Marta volta a pôr um valor válido e guarda.
Depois escreve por engano um número negativo num valor de dias e aparece Day values cannot be negative. Basta trocá-lo por um valor que não seja negativo.
Com o limiar de encomendas pendentes acontece algo parecido: deixa-o a zero e surge Backorder threshold and lookback must be at least 1. Tal como antes, o limiar e o período de consulta para trás devem ser no mínimo 1.
A seguir ajusta os escalões de antiguidade e repete o mesmo limite em dois escalões seguidos. O módulo rejeita com Age bucket boundaries must increase strictly. Os limites têm de ir por ordem crescente e sem repetições, por isso a Marta deixa cada limite acima do anterior.
Por fim, coloca o limiar de atraso de Major acima do de Critical. Surge Major overdue threshold cannot exceed critical threshold. A solução é baixar o de Major ou subir o de Critical até o primeiro não ultrapassar o segundo.
Segundo passo: tratar as exceções
Com a configuração guardada, a Marta passa para Inventory › All Route Exceptions.

Há uma exceção que considera não merecer acompanhamento e decide ignorá-la sem escrever nada. O módulo trava a ação com Ignoring an exception requires a reason. A Marta acrescenta o motivo e então já a pode ignorar.
Noutra exceção tenta uma alteração e aparece Cannot change route exception from %(old)s to %(new)s. A mensagem indica de onde parte a alteração e para onde tentava ir, e significa que o módulo não permite essa passagem concreta. A Marta verifica em que estado está a exceção antes de escolher outra alteração.
Numa terceira, uma ação que precisa do documento de origem termina em The source document no longer exists or is not accessible. O texto dá duas possibilidades: o documento já não existe ou não está acessível para o seu utilizador. A Marta pergunta ao administrador se o documento ainda existe e se as suas permissões o abrangem.
Terceiro passo: o acompanhamento
Já sem avisos pendentes, a Marta revê o painel e o relatório para ver as exceções abertas e o tempo de resolução por tipo.


A mensagem que não surgiu no caso
A Marta não encontrou Source record id must be positive., mas convém conhecê-la. Se uma exceção for criada com um identificador de registo de origem que não seja positivo, aparece esta mensagem. É preciso rever que valor é atribuído a esse identificador.
Resumo das mensagens e o que fazer
| Mensagem | O que fazer |
|---|---|
Day values cannot be negative. | Trocar o valor de dias por um que não seja negativo |
Scan interval and retention must be at least 1. | Pôr 1 ou mais no intervalo de análise e na retenção |
Backorder threshold and lookback must be at least 1. | Pôr 1 ou mais no limiar e no período para trás |
Age bucket boundaries must increase strictly. | Ordenar os limites dos escalões do menor para o maior, sem repetir |
Major overdue threshold cannot exceed critical threshold. | Deixar o limiar de Major igual ou abaixo do de Critical |
Ignoring an exception requires a reason. | Escrever o motivo antes de ignorar |
Cannot change route exception from %(old)s to %(new)s. | Rever o estado atual e escolher outra alteração |
The source document no longer exists or is not accessible. | Confirmar que o documento existe e que tem acesso |
Source record id must be positive. | Rever que valor é atribuído ao identificador de origem |
O que aprender com o caso
A maior parte das mensagens do exemplo surgiu durante a configuração e todas se resolveram lendo o texto: indica o mínimo, a ordem ou a relação entre limiares que o módulo espera. Antes de mexer nas definições, tenha claro que valores vai introduzir e por que ordem vão os escalões.
No trabalho diário, as mensagens travam duas coisas: ignorar uma exceção sem motivo e fazer uma alteração que o módulo não permite. Quando o aviso fala do documento de origem ou do seu identificador, o problema está no documento ou no valor do identificador, não na exceção.
Como a FlexigoTech o ajuda
A FlexigoTech implementa Odoo 17, 18, 19 e 20 e desenvolve conectores e integrações à medida. O módulo está publicado na Odoo Apps para 17, 18, 19 e 20, a 9 € sem IVA por versão do Odoo, pagamento único. Encontra mais detalhes na página do módulo e na sua ficha da Odoo Apps.
Continue a ler
Verificado no código do módulo (versão 20.0) e nas fontes indicadas
Fontes
- Código do módulo: flexigo_warehouse_route_exception_dashboard 20.0 (8c481836): models/route_exception.py
- Código do 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
