O Odoo 20.0 FINAL saiu depois da Odoo Experience de Bruxelas (24–26 de setembro de 2026) e já está publicado na App Store. Antes de portar o que quer que fosse, lemos o código-fonte real (não um changelog nem um blog de terceiros) para saber o que quebra um conector que hoje funciona no Odoo 19. Isto é o que encontrámos, com o ficheiro e a linha onde o verificámos.
Método: cada linha da tabela resulta de executar ls, grep ou git log sobre /srv/odoo-fuente/odoo-20.0 e /srv/odoo-fuente/enterprise-20.0 (commits 17ff827a1 e e5186134, 26 e 27 de setembro de 2026), e não de ler sobre o Odoo 20 noutro lado.
As quatro roturas que verificámos
| O que desaparece | O que acontece se o seu módulo o usar | Verificado em |
|---|---|---|
base_vat e base_iban | O módulo não instala se depender deles: a validação de NIF/IBAN passou para o núcleo. | addons/ do código-fonte do Odoo 20.0 FINAL |
ir.model.access e ir.rule | Fundem-se num modelo novo, ir.access. Os CSV de permissões no formato antigo não são lidos. | odoo/addons/base/models/ir_access.py + odoo/upgrade_code/19.4-00-ir-access.py |
odoo.osv (o pacote inteiro) | from odoo.osv import expression dá ModuleNotFoundError e o módulo não carrega. | odoo/osv/ ausente no código-fonte do Odoo 20.0 FINAL |
O campo datas nos anexos | ir.attachment.create({'datas': ...}) lança AssertionError desde 31 de outubro de 2026. Até então criava o anexo com tamanho 0, sem qualquer erro, e o PDF assinado saía vazio. | odoo/addons/base/models/ir_attachment.py:502 no código-fonte do Odoo 20.0 de 2 de novembro de 2026 (antes, a linha 535) |
Atualização de 6 de novembro de 2026: até 31 de outubro, a mais perigosa era a dos anexos, porque não lançava nenhuma exceção: um conector de assinatura eletrónica que continuasse a escrever 'datas': base64... instalava limpo, passava o smoke test e guardava o PDF assinado com tamanho 0. Desde o commit c06a07264bdb do Odoo («[FIX] base: remove fallback for datas»), esse create lança AssertionError: _check_contents should handle that. A correção não muda: 'raw' com os bytes sem codificar, que serve no Odoo 17, 18, 19 e 20.
O que rever antes de migrar um conector próprio
grep -rn base_vat\|base_iban __manifest__.pyem todos os seus módulos: se aparecer emdepends, não instala.grep -rn 'from odoo.osv import'no código Python: cada ocorrência tem de ser alterada parafrom odoo.fields import Domain.- Ficheiros
ir.model.access.csv: executarodoo-bin upgrade_code --script 19.4-00-ir-access, que converte o formato, atualiza o manifesto e apaga o CSV antigo (o script da própria Odoo). - Qualquer
'datas': base64.b64encode(...)escrito num anexo: alterá-lo para'raw': ..., que funciona da mesma forma no Odoo 17, 18, 19 e 20 : não é preciso esperar pela portagem para o corrigir.
Como o testámos nós
Cada conector nosso que chega ao Odoo 20 passa primeiro por um Odoo 20.0 FINAL real com Enterprise: instala-se mesmo, executa-se toda a sua bateria de testes (com pelo menos um teste e nenhum ignorado) e só se tudo ficar a verde é publicado. Instalar sem erros não basta: a rotura dos anexos, por exemplo, só a vê um teste que cria o documento (até 31 de outubro, um que além disso o abrisse), nunca um log de instalação limpo.
Com esse critério, já temos 9 conectores publicados no Odoo 20 (o detalhe está neste artigo) e o resto do catálogo vai chegando módulo a módulo, à medida que passa a bateria completa, não de uma só vez.
Perguntas frequentes
Já se pode instalar o Odoo 20 em produção?
O Odoo 20.0 FINAL está publicado e disponível na App Store. Antes de migrar uma instalação com conectores personalizados, verifique se dependem de base_vat, base_iban ou odoo.osv, e se escrevem anexos com 'datas'.
Porque pode falhar no Odoo 20 um conector que instala bem?
Porque instalar só verifica que o manifesto e as vistas carregam. A alteração nos anexos (campo datas) não surge ao instalar: desde 31 de outubro de 2026 dá AssertionError ao criar o registo e, até essa data, não dava qualquer erro e o documento ficava guardado vazio. Só a deteta um teste que passe por esse código.
Ligações úteis dentro da FlexigoTech
O que fazemos sobre isto
O seu conector depende de nós? Dizemos-lhe se o Odoo 20 o quebra
Escreva-nos com o nome do módulo e dizemos-lhe, com base no código real, se alguma destas quatro roturas o afeta. Escreva para comercial@flexigobe.com ou ligue para +34 616 809 504.

