Pular para o conteúdo

Campo Booleano no Odoo: Guia Completo Para Desenvolvedores e Utilizadores

Guia prático sobre o campo Boolean no modelo de dados Odoo: como funcionam as caixas de seleção, implicações para workflows e opções de personalização técnica.
6 de março de 2026 por
Campo Booleano no Odoo: Guia Completo Para Desenvolvedores e Utilizadores
Dasolo
| Nenhum comentário ainda

Introdução


O campo Booleano é provavelmente o mais simples e, ao mesmo tempo, um dos mais presentes no Odoo. Sempre que assinala uma caixa numa encomenda, activa ou desactiva um cliente, ou marca um produto como favorito, está a manipular este tipo de campo.


Apesar da sua aparente simplicidade, o Booleano tem características e consequências práticas que vale a pena dominar. Saber quando o usar, como configurá‑lo e quando optar por outras opções evita confusões e implementações difíceis de manter.


Este guia explora o campo Booleano de forma prática: o que ele guarda, como se manifesta no modelo de dados e nas vistas, como o criar com Studio ou em código, exemplos de uso em processos de empresa e dicas para tirar o máximo partido sem criar problemas futuros.

O que é o campo Booleano no Odoo


No ORM do Odoo, um campo Booleano só pode assumir dois estados: True ou False. No PostgreSQL traduz‑se por uma coluna do tipo BOOLEAN, sem zonas cinzentas — o valor é activado ou não, sim ou não.


Para o utilizador, um Booleano aparece normalmente como uma caixa de verificação num formulário. Em listagens mostra‑se habitualmente um ícone de visto quando está activo e fica vazio quando não está. Em alguns casos aplica‑se um 'widget' que transforma a caixa numa alavanca (toggle) para uma apresentação mais amigável.


Em módulos Odoo escritos em Python, a definição do campo segue o padrão habitual do ORM:

from odoo import fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    needs_manual_review = fields.Boolean(
        string='Needs Manual Review',
        default=False,
    )

O argumento string define o rótulo visível na interface; default define o valor inicial quando surgem novos registos. Mesmo que o Odoo trate campos Booleanos sem default como False, declarar explicitamente o valor inicial é uma prática clara e evitadora de dúvidas.

No Odoo Studio esse tipo de campo chama‑se simplesmente Checkbox. Campos criados via Studio recebem automaticamente um prefixo x_studio_. Se os definir em Python ou via API, decide você o nome técnico do campo.

Como funciona o campo


Ao adicionar um campo Booleano a um modelo, o Odoo cria a coluna correspondente na base de dados durante a instalação ou atualização do módulo — não precisa de SQL manual para isso.


Um detalhe importante: um campo Booleano em Odoo nunca devolve None/NULL ao ler‑se via ORM. Mesmo que a coluna esteja vazia na BD, o Odoo normaliza o valor e apresenta False. Isto difere de tipos como Many2one ou Char, onde o valor vazio pode exigir verificações adicionais.


Principais atributos do campo

Estas são as propriedades mais relevantes que pode configurar num Booleano dentro do framework Odoo:

  • default: define o estado inicial quando um registo é criado. Normalmente False, salvo em cenários de opt‑out onde True faz mais sentido.
  • compute: associa uma função Python que calcula dinamicamente o valor. Útil quando o flag deriva de outras informações do registo.
  • store: usado com compute, indica se o valor calculado é gravado na BD. Com store=True, o campo pode ser pesquisado e agrupado sem recálculo constante.
  • readonly: impede alterações manuais na interface. Ideal para flags que só o sistema deve definir.
  • copy: controla se o valor é duplicado ao copiar um registo. Por defeito é True; para flags de aprovação convém definir copy=False para evitar duplicar estados indevidos.
  • groups: limita visibilidade/edição a determinados grupos de utilizadores.

Aparência nas vistas

Em formulários, o Booleano é uma checkbox; em listagens aparece como um visto para True e vazio para False, facilitando a leitura rápida das linhas.

Pode alterar o aspecto com widgets: o toggle exibe uma alavanca, útil para preferências; o boolean_favorite converte o flag num ícone de estrela, como acontece em produtos ou contactos no Odoo padrão.


Usos em domínios e filtros

Booleanos são ideais em domínios — as expressões de filtro do Odoo usadas em pesquisas, ações automatizadas e regras de acesso. Um filtro típico para registos activos é simples e direto:

[('needs_manual_review', '=', True)]

Dado o carácter binário, os filtros ficam muito simples e fáceis de compreender, sem necessidade de operadores complexos.

[('needs_manual_review', '=', False)]

Graças a isto, Booleanos integram bem com ações automáticas, agendamentos e regras do servidor: são fáceis de testar e de acionar sem lógica extensa.


Interação com o ORM

Ler e escrever campos Booleanos em desenvolvimento Odoo é directo: acede‑se ao atributo no registo, compara‑se com True/False e atribui‑se o novo valor — o ORM trata da persistência e das conversões, inclusive quando se comunica por XML‑RPC.

Casos de negócio reais


Exemplos práticos por departamento


CRM: marcar leads qualificadas

Equipa comercial: um campo is_qualified na ficha do lead permite distinguir rapidamente oportunidades validadas pelas equipas sénior das que ainda estão em prospeção. Filtrar por este flag organiza facilmente a pipeline sem criar estágios adicionais desnecessários.


Vendas: identificar encomendas que exigem revisão manual

Algumas encomendas devem passar por aprovação (valor elevado, cliente novo, condições especiais). Um flag needs_manual_review, definido por regras automatizadas, cria uma fila clara para a equipa financeira ou operações, permitindo filtrar e processar aprovações sem vasculhar todas as encomendas.


Stock: indicar produtos fora de catálogo

Quando um produto deixa de ser comercializado mas precisa permanecer no sistema, um campo is_discontinued na template ajuda compras e vendas a evitar cotações ou recompras. Este flag pode condicionar regras de listas de preços, validação de encomendas de compra e visibilidade na loja online.


Contabilidade: sinalizar faturas que exigem atenção

Para faturas com disputas ou discrepâncias, um campo under_dispute dá à equipa financeira uma forma estruturada de triagem e relatório. Permite também suprimir lembretes automáticos enquanto a questão não for resolvida, evitando cobranças indevidas ao cliente.


Recursos Humanos: registar formações e certificações

No RH, um Booleano como safety_training_completed proporciona uma forma simples e auditável de controlar formações obrigatórias. Os gestores conseguem filtrar equipas para ver quem falta completar a formação, e os dados alimentam relatórios de conformidade sem precisar de módulos complexos.

Criar ou personalizar um campo Booleano


Três formas de adicionar um Booleano a um modelo Odoo


Por Odoo Studio (sem código)

O Studio é a ferramenta low‑code do Odoo para personalizações sem Python ou XML. Para criar um Booleano via Studio:

  1. Abra o Odoo Studio (é necessária a app Studio).
  2. Navegue para o formulário onde quer inserir o campo.
  3. Arraste um campo Checkbox da barra lateral para o layout do formulário.
  4. Defina o rótulo, valor por defeito e restrições (obrigatório/readonly) nas propriedades do campo.
  5. Guarde e saia do Studio.

O Studio cria o campo na BD com o prefixo x_studio_ e atualiza a vista automaticamente — não é preciso reiniciar ou fazer upgrade do módulo.


Por código em um módulo personalizado

Para desenvolvedores, o Booleano é definido em Python dentro dos modelos. Esta é a via recomendada quando precisa de versionamento, testes e deployment controlado:

from odoo import fields, models

class ResPartner(models.Model):
    _inherit = 'res.partner'

    x_is_key_account = fields.Boolean(
        string='Key Account',
        default=False,
        copy=False,
    )

Depois de definido, acrescente o campo às vistas XML pertinentes para que apareça na interface; a coluna na BD será criada quando instalar ou atualizar o módulo.


Para campos calculados, o padrão é o seguinte:

from odoo import api, fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    is_high_value = fields.Boolean(
        string='High Value Order',
        compute='_compute_is_high_value',
        store=True,
    )

    @api.depends('amount_total')
    def _compute_is_high_value(self):
        for order in self:
            order.is_high_value = order.amount_total >= 10000

Ao usar store=True num campo compute, armazena‑se o resultado na BD — o que permite pesquisar e agrupar sem recalcular sempre que a vista carrega.


Via API XML‑RPC

Se faz configurações programáticas ou deploys remotos, pode criar campos Booleanos via XML‑RPC no modelo ir.model.fields:

field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_needs_manual_review',
        'field_description': 'Needs Manual Review',
        'model_id': model_id,
        'ttype': 'boolean',
        'state': 'manual',
    }]
)

O state: 'manual' indica que o campo foi criado fora de um módulo (como o Studio ou API) — a escolha correta para campos geridos por configuração remota ou ferramentas de migração.


Boas práticas


1. Declare sempre um default

Mesmo que o ORM normaliza para False, explicitar default=False clarifica intenção no código e evita surpresas em ações automatizadas ou filtros que assumam outro comportamento.


2. Use nomes que façam sentido como perguntas

Nomes do tipo is_verified, needs_approval, has_warranty ou is_key_account são imediatos e auto‑explicativos. Evite termos vagos como flag, status ou check, que não dizem o que o campo representa.


3. copy=False para flags de aprovação ou estado

Se o campo representa um estado que não deve ser transportado para registos duplicados (por exemplo is_approved), defina copy=False — caso contrário os duplicados herdarão estados indevidos.


4. Prefira computed fields para estados derivados

Em vez de espalhar ações que escrevam manualmente num Booleano quando outros campos mudam, use compute com @api.depends(). Centraliza a lógica, torna‑a mais previsível e facilita a manutenção.


5. Adicione o Booleano às vistas de pesquisa quando for usado em filtros

If users regularly need to filter records based on a Boolean field, add it explicitly to the search view. In Studio, enable the search option in the field properties panel. In code, add it to the <search> view XML. This gives users a clean filter button in the search bar rather than forcing them to use advanced filters every time.

Erros frequentes a evitar


Evitar usar Booleanos para estados com mais de duas opções

O erro mais comum é usar vários Booleanos para representar estados múltiplos (pendente, aprovado, rejeitado). Isso rapidamente complica a lógica. Para múltiplos estados use Selection ou um workflow de estado apropriado.


Esquecer copy=False em flags de aprovação

Ao duplicar registos, valores são copiados por defeito. Se um registo duplicado não devia herdar um estado (aprovado, enviado), isso cria inconsistências — por isso assegure copy=False nesses casos.


Não incluir o campo na vista de pesquisa

Quando um Booleano é importante para filtrar mas não faz parte da search view, os utilizadores são obrigados a usar filtros avançados repetidamente — tornando processos diários mais lentos. Acrescente o campo à pesquisa logo que o implemente.


Criar um Booleano quando já existe o campo active

Muitos modelos já têm um campo active que gere visibilidade/arquiamento. Se quer ocultar registos, use active em vez de criar um flag personalizado — assim mantém‑se alinhado com o comportamento padrão do Odoo e as ações de arquivar/desarquivar da interface.


Fields compute sem store=True usados em filtros

Um computed Booleano não guardado (store=False) não pode ser usado em filtros SQL; tentativas de pesquisar por esse campo falham ou são ignoradas. Se precisa de filtrar ou agrupar, defina store=True.

Conclusão


O Booleano é um desses componentes que passa despercebido porque cumpre bem a sua função. Está presente em tudo: do active que controla visibilidade ao is_published do site, até aos inúmeros flags customizados que gestores adicionam para processos internos.


Compreender o seu comportamento no modelo de dados, configurá‑lo com defaults e atributos corretos, e saber quando optar por Selection ou outro tipo de campo são passos cruciais para implementar soluções Odoo limpas, previsíveis e fáceis de manter.

Um Booleano configurado corretamente é quase invisível para o utilizador final: simplesmente funciona. Usado sem critério, cria ambiguidades, estados inválidos e um amontoado de remendos. A diferença está em conhecer as regras e aplicá‑las de forma consistente.

Na Dasolo acompanhamos empresas na implementação, personalização e otimização do Odoo em todas as áreas. Seja para desenhar um modelo de dados claro, adicionar campos às suas rotinas ou desenvolver um módulo completo, apoiamos o seu projeto. Contacte‑nos e vamos conversar sobre o seu projecto Odoo.

Campo Booleano no Odoo: Guia Completo Para Desenvolvedores e Utilizadores
Dasolo 6 de março de 2026
Compartilhar esta publicação
Iniciar sessão para deixar um comentário