Pular para o conteúdo

Model account.move.line: Como Funcionam as Linhas de Lançamento em Odoo

Guia essencial sobre o modelo de linhas de lançamentos no Odoo para programadores e consultores funcionais
10 de março de 2026 por
Model account.move.line: Como Funcionam as Linhas de Lançamento em Odoo
Dasolo
| Nenhum comentário ainda

Introdução


No Odoo, os modelos determinam a forma como a informação é organizada e armazenada na base de dados. Tudo o que é gestão empresarial — encomendas, faturas, movimentos contabilísticos — é representado por um modelo que define os campos e as relações entre registos.


Perceber os modelos do Odoo é fundamental tanto para programadores como para consultores funcionais. São a espinha dorsal da arquitectura de dados: definem campos, ligações entre tabelas e a lógica de negócio que corre por trás das operações.

Neste texto vamos focar-nos num dos modelos mais críticos da Contabilidade do Odoo: account.move.line. Se precisa de relatórios personalizados, sincronizar com sistemas externos ou ajustar processos de conciliação, vai encontrar-se a trabalhar com este modelo.

O que é o modelo account.move.line


O modelo account.move.line descreve cada linha de um lançamento contabilístico. Cada linha corresponde a um débito ou crédito numa escritura; no lançamento completo, os totais de débito e crédito têm de coincidir para que a escrita seja correcta.


Este modelo integra o módulo de Contabilidade e funciona como filho de account.move — que representa o movimento no seu conjunto (faturas, recibos, extratos bancários, lançamentos manuais). Um lançamento pode ter várias linhas associadas.


O account.move.line é definido no módulo base de contabilidade e é frequentemente estendido por outros módulos através de herança de modelos. O módulo de Vendas acrescenta campos de fatura, Compras adiciona campos de fornecedor e a contabilização analítica introduz distribuição analítica, tudo sem duplicar a estrutura principal.

Campos principais do modelo


A seguir estão os campos mais relevantes do account.move.line. Conhecê-los permite manipular lançamentos, conciliações e relatórios com confiança.


1. name

Tipo: Char. Etiqueta ou descrição da linha, visível em vistas e relatórios. Em linhas originadas por faturas, costuma vir do nome do produto ou de uma descrição personalizada.


2. move_id

Tipo: Many2one (account.move). Liga a linha ao lançamento pai. Cada linha pertence exactamente a um movimento — é a relação essencial para agrupar as linhas em lançamentos.


3. account_id

Tipo: Many2one (account.account). Conta utilizada na linha. Obrigatória. Deve apontar para uma conta operacional (não de visualização ou encerrada) e é usada nos relatórios do plano de contas.


4. debit

Tipo: Float. Valor a débito. Padrão 0.0. Numa linha apenas debit ou credit está preenchido. Débitos aumentam contas do activo e despesas.


5. credit

Tipo: Float. Valor a crédito. Padrão 0.0. Créditos aumentam passivos, capital e proveitos. O total de débitos tem de igualar o total de créditos no movimento.


6. balance

Tipo: Float. Campo calculado: debit menos credit. Mostra o efeito líquido da linha — positivo para débitos, negativo para créditos — e é utilizado em relatórios e conciliações.


7. partner_id

Tipo: Many2one (res.partner). Cliente, fornecedor ou outra entidade associada à linha. Fundamental para contas a receber/pagar, relatórios de ageing e processos de conciliação.


8. date

Tipo: Date. Data efectiva da linha. Normalmente herda a data do movimento pai e serve para fecho de período e relatórios temporais.


9. date_maturity

Tipo: Date. Data de vencimento do pagamento. Relevante para contas a receber e a pagar, usada em ageing e agendamento de pagamentos.


10. currency_id

Tipo: Many2one (res.currency). Moeda da linha. Pode ser diferente da moeda da empresa quando se regista um lançamento em moeda estrangeira.


11. amount_currency

Tipo: Float. Valor na moeda da linha. Usado em operações multi-moeda juntamente com currency_id para cálculos e reconciliações.


12. quantity

Tipo: Float. Quantidade opcional. Utilizada em linhas ligadas a produtos (faturas, faturas de compra) para relatórios por unidades e cálculo de preço unitário.


13. product_id

Tipo: Many2one (product.product). Produto associado à linha. Preenchido quando a origem é uma venda, compra ou linha de fatura.


14. product_uom_id

Tipo: Many2one (uom.uom). Unidade de medida da quantidade, usada para apresentar e converter quantidades de forma correta.


15. price_unit

Tipo: Float. Preço unitário. Utilizado com quantity para calcular o valor das linhas em faturas e facturas de compra.


16. tax_ids

Tipo: Many2many (account.tax). Impostos aplicados à linha. Ao validar, o Odoo pode criar linhas adicionais para os montantes de imposto.


17. tax_line_id

Tipo: Many2one (account.tax). Em linhas de imposto, refere o imposto gerador. Permite distinguir linhas de imposto das linhas contabilísticas normais.


18. analytic_account_id

Tipo: Many2one (account.analytic.account). Conta analítica para controlo de custos e proveitos. Usada quando a contabilidade analítica está activa.


19. analytic_distribution

Tipo: Json ou Text. Armazena a distribuição analítica por várias contas. Em versões recentes substitui a apenas indicar uma conta analítica quando se usam planos de distribuição.


20. ref

Tipo: Char. Referência externa ou nota, geralmente herdada do movimento pai. Visível em relatórios e útil para casar movimentos.


21. narration

Tipo: Text. Nota interna ligada ao movimento. Normalmente não aparece em documentos enviados ao cliente, mas ajuda na auditoria interna.


22. journal_id

Tipo: Many2one (account.journal). Diário do movimento. Utilizado para filtrar relatórios e análises por diário.


23. company_id

Tipo: Many2one (res.company). Empresa a que a linha pertence. Em ambientes multi-empresa define a visibilidade e influencia consolidação.


24. reconciled

Tipo: Boolean. Indica se a linha está totalmente conciliada. Útil para mostrar só os itens pendentes nas vistas de conciliação.


25. full_reconcile_id

Tipo: Many2one (account.full.reconcile). Agrupa todas as linhas conciliadas entre si, permitindo rastrear conjuntos de conciliação completos.


26. payment_id

Tipo: Many2one (account.payment). Para linhas de pagamento, liga ao registo de pagamento correspondente. Usado ao reconciliar faturas com pagamentos.


27. statement_id

Tipo: Many2one (account.bank.statement). Para linhas que vêm de extratos bancários, liga ao extrato. Essencial na conciliação bancária.


28. statement_line_id

Tipo: Many2one (account.bank.statement.line). Liga à linha específica do extrato bancário quando se faz o pareamento de movimentos com transacções bancárias.


29. display_type

Tipo: Selection. Pode ser 'line_section' ou 'line_note' para cabeçalhos e notas no lançamento. Essas linhas são apenas de exibição, sem débito nem crédito.


30. create_date

Tipo: Datetime. Data e hora de criação do registo. Gerido automaticamente pelo Odoo e útil para auditoria.


31. write_date

Tipo: Datetime. Data e hora da última modificação. Também gerido automaticamente e ajuda a seguir alterações ao longo do tempo.

Como este modelo entra nos processos da empresa


1. Faturação a clientes

Ao validar uma fatura, o Odoo gera linhas em account.move.line: linhas de receita vão para contas de proveitos, linhas a receber para a conta do cliente e são criadas linhas de imposto conforme necessário. O campo partner_id liga a linha ao cliente para ageing e conciliação.


2. Faturas de fornecedores

As faturas de compra geram linhas para despesas, IVA dedutível e contas a pagar. A estrutura é equivalente à das faturas de cliente, mas com tipos de conta invertidos conforme a natureza da operação.


3. Conciliação bancária

Linhas de extrato bancário são associadas a linhas de movimentos através de statement_line_id; quando concilia, o Odoo agrupa as linhas com full_reconcile_id e marca-as como reconciliadas (reconciled = True).


4. Lançamentos manuais

Os utilizadores podem registar lançamentos manuais com várias linhas: cada uma tem uma conta, débito ou crédito e, opcionalmente, partner. Antes de validar, o Odoo exige que os totais de débito e crédito coincidam.



5. Relatórios analíticos e de custos

Com contabilização analítica activa, as linhas transportam analytic_account_id ou analytic_distribution, permitindo relatórios por projecto, departamento ou outras dimensões para analisar custos e receitas.

Como os desenvolvedores estendem este modelo


Os programadores estendem account.move.line com padrões estabelecidos — a herança de modelos é o método principal para acrescentar campos ou lógica sem tocar no núcleo.


Herança de modelo

Defina _inherit = 'account.move.line' no seu módulo para prolongar o modelo. Pode adicionar campos, sobrescrever métodos ou impor restrições. Trabalhar por herança mantém as alterações isoladas e facilita actualizações.


Adicionar campos

Declare novos campos no modelo herdado com o tipo adequado: Char, Many2one, Boolean, Integer, Text, Selection, etc. Pense em campos dependentes da empresa para ambientes multi-company e tenha atenção às dependências em campos calculados.


Extensões em Python

Sobrescreva métodos como create, write ou unlink para injectar lógica. Use sempre super() para manter o comportamento padrão. Evite comprometer a regra de débito=crédito e lembre-se das chamadas de API expostas para integrações externas.


Odoo Studio

O Odoo Studio permite adicionar campos sem escrever código — útil para ajustes rápidos como etiquetas ou campos auxiliares. Para lógica complexa, regras de conciliação ou integrações, os módulos personalizados são mais robustos e fáceis de manter.

Boas práticas


  • Nunca crie ou altere linhas de movimento directamente sem passar pelo movimento pai. Use a API do movimento (por exemplo, line_ids) para que o Odoo aplique verificações, regras e mantenha a consistência dos dados.
  • Ao construir relatórios, filtre por move_id.state = 'posted' para excluir rascunhos e movimentos cancelados.
  • Atribua account_id com o tipo correcto (recebível, pagável, etc.) para assegurar que ageing e conciliações funcionam como esperado.
  • Em integrações via API, crie primeiro o movimento e só depois adicione as linhas, garantindo desde logo que débitos e créditos ficam equilibrados antes de validar.
  • Para campos personalizados, utilize prefixos como x_ ou o prefixo do seu módulo para evitar colisões com futuras versões do Odoo.

Erros comuns


  • Definir simultaneamente debit e credit numa mesma linha. Cada linha deve ter apenas um dos campos preenchido.
  • Criar movimentos desequilibrados. Ototal de débitos tem de ser igual ao total de créditos — o Odoo valida isto ao postar o movimento.
  • Editar directamente linhas já postadas em vez de usar reversões ou lançamentos de ajustamento. Movimentos contabilísticos validados devem ser corrigidos com lançamentos novos.
  • Esquecer de preencher partner_id em linhas de recebíveis/pagáveis. Isso impede relatórios de ageing correctos e dificulta a conciliação.
  • Sobrescrever métodos centrais sem chamar super(). Isso pode quebrar conciliações, bloqueios ou funcionalidades de módulos dependentes.

Conclusão


O account.move.line é o coração da contabilidade no Odoo: regista cada débito e crédito de faturas, recibos e lançamentos. Dominar os seus campos e saber como os módulos o estendem facilita configuração, personalização e integrações seguras.

Se for consultor funcional a mapear processos ou programador a desenvolver relatórios e integrações, compreender bem o account.move.line reduz erros e acelera implementações.

Precisa de ajuda na sua implementação Odoo?


A Dasolo apoia empresas a implementar, personalizar e optimizar Odoo, com especial foco em integrações via API e desenvolvimento. A nossa equipa conhece a fundo a arquitectura de dados do Odoo e modelos como o account.move.line.


Se precisa de apoio na sua implementação Odoo, desenvolvimento de módulos ou integrações, podemos ajudar. Agende uma demonstração para conversarmos sobre o seu projecto.

Model account.move.line: Como Funcionam as Linhas de Lançamento em Odoo
Dasolo 10 de março de 2026
Compartilhar esta publicação
Iniciar sessão para deixar um comentário