Apresentação
O campo Texto é provavelmente aquilo em que os utilizadores mais escrevem dentro do Odoo: notas internas, descrições de produtos ou comentários numa encomenda costumam ser inseridos aqui. É o campo indicado sempre que se precisa de várias linhas de texto livre.
Apesar de, na interface, se parecer apenas com uma área de texto simples, conhecer as suas características técnicas e o papel que ocupa no modelo de dados do Odoo facilita muito o desenho de formulários, a criação de módulos personalizados e a configuração de campos via Odoo Studio para equipas de trabalho.
Este guia explica que tipo de conteúdo o campo Texto guarda, como se comporta nas vistas e na ORM, mostra exemplos de uso empresarial, orientações para personalização, práticas recomendadas e os erros frequentes que convém evitar.
O que é o campo Texto no Odoo
No ORM do Odoo, fields.Text serve para armazenar texto multilinha simples. Em termos de base de dados, corresponde a uma coluna TEXT no PostgreSQL, sem uma limitação de comprimento. Pode conter desde uma linha até vários parágrafos sem problemas.
Na interface, aparece como um elemento redimensionável <textarea> em formulários; nas listas, mostra-se truncado para caber na coluna; e nas vistas de pesquisa suporta filtros de texto tal como um campo Char.
A definição básica do campo, quando feita por código num módulo Python, segue a sintaxe típica dos modelos Odoo — declarando o campo no modelo e ajustando os atributos que interessam ao negócio.
Exemplo mínimo em Python para declarar um campo Texto num modelo herdado, mostrando os parâmetros mais usados como etiqueta e tradução.
No Odoo Studio, este campo aparece como Multi-Line Text. O Studio cria automaticamente nomes técnicos com o prefixo x_studio_. Se definir o campo por código ou pela API XML-RPC, escolhe você o nome técnico do campo.
Diferenças entre Text, Char e Html
Existem três tipos principais para armazenar texto no Odoo e acertar na escolha evita dores de cabeça: cada um destina-se a necessidades diferentes — linha única, texto livre ou conteúdo formatado.
- Campo Char: destinado a texto de uma linha — adequado para nomes, códigos, referências ou valores curtos. Pode ter limite de comprimento quando faz sentido.
- Campo Text: textarea multilinha — pensado para descrições, observações e comentários livres. Armazena texto simples, sem formatação HTML.
- Campo Html: editor WYSIWYG — indicado quando a formatação importa (ex.: descrições web, modelos de email). Guarda marcação HTML.
O Text fica no meio-termo: dá mais espaço que um Char mas não traz a complexidade do Html. Para a maioria das notas internas e descrições simples é a escolha mais prática no modelo de dados do Odoo.
Como funciona o campo
Ao acrescentar um campo Texto a um modelo, o Odoo cria automaticamente a coluna TEXT na base de dados quando o módulo é instalado ou atualizado — não é preciso escrever migrações SQL manuais.
Ao contrário do Char, o campo Text não tem parâmetro size. A coluna na base de dados não impõe limite de caracteres por design: estes campos destinam-se a conteúdo aberto, sem um teto artificial.
Atributos importantes do campo
Os principais atributos que convém conhecer ao definir um campo Texto no Odoo: tradução, obrigatoriedade, valor por defeito, cálculo, persistência, cópia e indexação.
- translate: quando
True, permite versões do texto por idioma — útil em instalações multilíngues para conteúdos que aparecem a clientes ou numa interface pública. - required: torna o campo obrigatório na interface e na ORM — o utilizador não consegue gravar o registo sem preenchê-lo.
- default: define um valor inicial ao criar registos; pode ser uma string fixa ou uma função que calcule o valor por defeito.
- compute: liga o campo a um método Python que calcula o seu valor dinamicamente — útil para resumos automáticos ou campos derivados.
- store: quando usado com
compute, decide se o resultado calculado fica guardado na base de dados. Comstore=True, o campo torna-se pesquisável e aparece em relatórios. - copy: controla se o valor é copiado ao duplicar um registo. Por defeito é
True; ponhaFalsepara notas que não devem ser replicadas. - index: raramente aplicável a Text, porque indexação por texto funciona de outra forma que o B-tree usado em Char. Para pesquisa eficiente recorra à pesquisa textual do PostgreSQL ou às funcionalidades de filtro do Odoo.
Como se apresenta nas vistas
Em formulários surge como um <textarea> verticalmente redimensionável; em listagens o conteúdo aparece truncado para caber; e em pesquisas suporta filtros de texto quando incluído na definição da vista de pesquisa.
Ao contrário do campo Html, o Text não carrega um editor WYSIWYG — os utilizadores escrevem texto simples e o que for digitado é gravado tal e qual, com quebras de linha preservadas.
Interação com a ORM do Odoo
Para desenvolvedores, ler e gravar campos Texto é direto: o valor está disponível no objeto record e a ORM trata da persistência. As quebras de linha são mantidas. Não existe sanitização automática de HTML — é essa diferença que o separa do campo Html, onde o Odoo trata da segurança contra XSS.
Casos práticos na empresa
Exemplos reais de utilização
Vendas: notas internas de encomenda
Em encomendas de venda há campos de nota interna onde a equipa comercial regista instruções de entrega, embalagens especiais ou preferências do cliente. Estas anotações seguem a encomenda e são visíveis para operações sem serem impressas para o cliente.
Stock: notas internas no produto
No formulário do produto existe um separador de Notas com um campo Texto onde a equipa do armazém escreve instruções de manuseio, avisos de fragilidade ou informações do fornecedor. Por serem texto interno, esses dados não aparecem no site nem em documentos enviados ao cliente.
Compras: condições do fornecedor e instruções de entrega
Nas encomendas de compra, um campo Texto para notas do fornecedor ajuda a guardar acordos ou restrições combinadas por email/telefone. Ter essa informação anexada ao pedido evita mal-entendidos quando a mercadoria chega e o contexto já não está claro.
CRM: resumos de oportunidade e notas de reuniões
Equipes de vendas usam campos Texto em oportunidades para registar notas livres sobre reuniões, objeções ou o contexto de compra. Ao contrário das mensagens do chatter, um campo dedicado mantém essa informação estruturada e fácil de consultar por outro colega que assuma o caso.
RH: comentários sobre colaboradores e candidatos
Nas fichas de colaborador ou candidato, o RH costuma guardar notas de entrevistas, observações de integração ou feedback de avaliação. Um campo Texto no modelo de empregado é uma forma simples de manter esse histórico sem criar modelos adicionais — pesquisável e imprimível para relatórios internos.
Criar ou personalizar o campo Texto
Formas de adicionar um campo Texto
Existem três vias principais para criar um campo Texto no Odoo, consoante o contexto técnico e o tipo de implantação: Odoo Studio (sem código), módulo Python (código) ou API XML-RPC (criação programática).
Odoo Studio (sem programação)
- O Odoo Studio é a opção mais prática para utilizadores de negócio e consultores que não querem escrever código. Para adicionar um campo Texto sem desenvolvimento:
- Abra o Odoo Studio a partir do menu principal (é necessário ter a app Studio instalada).
- Vá ao formulário onde pretende o novo campo.
- Arraste o campo Multi-Line Text do painel lateral para o lugar desejado no formulário.
- Defina a etiqueta, se é obrigatório e um valor por defeito nas propriedades do campo.
Grave e saia do Studio.
O Studio cria o campo e atualiza a vista automaticamente, atribuindo o prefixo x_studio_. O campo fica disponível de imediato, sem migrações de BD ou reinícios de servidor.
Por código — módulo Python
Quando a personalização precisa de controlo de versão e deploy entre ambientes, declare o campo em Python num módulo. É o método recomendado para alterações de produção:
Depois de declarar o campo no ficheiro do modelo, acrescente-o à vista XML correspondente para que apareça na interface. O Odoo gera a coluna na BD ao instalar/atualizar o módulo — é a abordagem standard para personalizações duradouras.
Via API XML-RPC
Se gere campos programaticamente — por exemplo num script de deployment ou numa configuração remota — pode criar campos Texto através da API XML-RPC:
Exemplo de chamada para criar um registo emir.model.fields, indicandottypecomotexte definindo propriedades como nome, descrição e estado manual.
Definir ttype: text instrui o Odoo a criar um campo Texto. state: manual sinaliza que o campo foi criado fora de um módulo (caso típico do Studio ou de scripts automáticos). Esta técnica é útil para automação e deploy remoto de configurações.
Boas práticas
Regras práticas essenciais
Use Text apenas quando for realmente necessário permitir várias linhas. Um erro habitual é escolher Text para valores curtos que cabem numa linha — nesses casos o Char é mais adequado e resulta numa interface mais limpa e num modelo de dados coerente.
Quando precisar de formatação, use Html
Se o conteúdo exigir listas, negritos, hiperligações ou outra formatação visual, o campo Text não serve. Nesse caso opte por um campo Html com editor WYSIWYG; pedir aos utilizadores que formatem texto num textarea bruto cria frustração e resultados pobres.
Ative translate para conteúdos visíveis ao cliente
Em empresas multilíngues, qualquer campo Texto que apareça em documentos ou na loja online deve ter translate=True, para permitir versões por idioma sem sobrescrever trabalho de tradução. Para notas internas geralmente não é necessário.
Defina copy=False para notas que não devem ser duplicadas
Por defeito, campos Texto são copiados ao duplicar registos. Para notas contextuais (ex.: conversa com um cliente) onde a cópia causa confusão, use copy=False para garantir que o registo duplicado começa com as notas limpas.
Campos calculados com store=True para sumarização automática
Um padrão útil é criar um campo Texto calculado que agregue informações de outros campos (resumo automático). Com store=True e os @api.depends() corretos, esse texto fica guardado na BD e torna-se pesquisável — uma solução leve para resumos internos sem gerar relatórios complexos.
Erros comuns
Escolher Text quando na verdade é preciso Html
Se o conteúdo for publicado no site ou em PDFs formatados, usar Text em vez de Html elimina toda a formatação. Conteúdos colados com pontos ou negritos perderão o estilo — confirme sempre o canal de saída antes de escolher o tipo de campo.
Escolher Text quando Char bastaria
Campos Text tornam o formulário visualmente volumoso. Para valores curtos como códigos de rastreio ou SKUs, prefira Char, que é mais compacto e mais adequado ao layout do formulário.
Esquecer translate em campos visíveis a diferentes idiomas
Numa instalação multinacional, omitir translate=True num campo Texto visível causa problemas: todos os utilizadores veem a mesma string independentemente da língua. Corrigir isto depois de dados inseridos requer migração cuidada para não perder conteúdo traduzido.
Usar Text para dados estruturados
Guardar JSON, listas separadas por pipe ou outros formatos estruturados num campo Texto complica manutenção. Dados com estrutura devem ir para campos apropriados (Selection, Many2one) ou para um modelo relacionado com campos próprios — não se deve codificar estrutura em texto livre se se quiser filtrar, agrupar ou reportar.
Não incluir o campo na vista de pesquisa
Um campo Texto com informação relevante que não está na vista de pesquisa torna-se inalcançável pelo filtro da lista: os utilizadores acabam por percorrer registros manualmente. Se for preciso procurar por essa informação, acrescente o campo à definição da vista de pesquisa.
Fecho
O campo Texto é um dos elementos discretos do Odoo que passa despercebido até começar a construir formulários a sério.
Decidir entre Char, Text e Html é uma das primeiras escolhas numa customização Odoo; acertar desde o início evita retrabalhos e problemas de qualidade de dados mais tarde.
Quer adicione um campo de notas via Studio, o declare num módulo Python ou o crie pela API, as práticas e padrões desta orientação ajudam a escolher e configurar o campo conforme o caso de uso.
Modelos de dados bem pensados resultam de muitas decisões pequenas e correctas. Escolher o tipo de campo certo para cada peça de informação é uma dessas decisões — e o campo Texto, quando usado apropriadamente, é uma ferramenta fiável para capturar texto livre que não cabe em campos estruturados.
Na Dasolo acompanhamos empresas na implementação, personalização e optimização do Odoo em todas as áreas. Se precisa de ajuda a desenhar um modelo de dados coerente, criar campos e fluxos à medida ou a implementar o Odoo do zero, temos equipa para o apoiar. Contacte-nos e conversamos sobre o seu projeto Odoo.