
«Quanto é que ainda temos em aberto convosco?» Esta pergunta surge regularmente em qualquer carteira de clientes, geralmente pouco antes do fim do trimestre, antes da auditoria das contas anuais ou quando a contabilidade do cliente prepara pagamentos. Quem não lhe responde por iniciativa própria recebe-a por e-mail ou por telefone, e alguém tem de exportar da contabilidade uma lista de posições em aberto (lista OP) e enviá-la. No Odoo 19 Community isso não acontece por si só: o portal do cliente mostra, é certo, as faturas individuais, mas não uma lista das posições em aberto de toda a empresa, e muito menos a uma data escolhida livremente.
Para isso escrevemos o módulo Posições em aberto no portal do cliente (portal_open_items) para o Odoo 19. Os clientes com acesso ativado veem no portal uma lista de todas as faturas em aberto, notas de crédito e pagamentos ainda não atribuídos da sua empresa, podem escolher uma data de referência, descarregar a lista em PDF e veem de relance como está o seu comportamento de pagamento. O módulo é software livre sob a licença AGPL-3 e está no GitHub:
github.com/Alex0176/odoo-portal-open-items
Instalámos o módulo a 5 de novembro de 2026 no nosso sistema de produção. A opção está aí desativada por predefinição e só é definida mediante acordo com cada cliente. A experiência em funcionamento ainda é, por isso, curta; testámos com treze testes automáticos e com uma base de dados de teste com clientes de exemplo. Quem adotar o módulo deve ler as secções sobre cálculo da data de referência, sobre o comportamento de pagamento e sobre as limitações .
Conteúdo deste artigo
- O problema: lista OP a pedido
- A solução em resumo
- Ativação por contacto: a opção
- A lista no portal do cliente
- Posições em aberto à data de referência
- Exportação para PDF
- Comportamento de pagamento: avaliação de relance
- Quem pode ver o quê? O modelo de acesso
- Implementação técnica
- Testes
- Instalação e configuração
- Limitações e notas
- Perguntas frequentes
- Apoio da Biricon IT Services
O problema: lista OP a pedido
Uma lista de posições em aberto mostra que faturas de um cliente ainda não estão pagas, quais delas estão vencidas e qual é o saldo. Para o fornecedor, é um instrumento de planeamento de tesouraria e de gestão de cobranças. Para o cliente, é a base para planear pagamentos, reconciliar as faturas com a sua própria contabilidade e esclarecer dúvidas sem abrir cada fatura individualmente. Situações típicas:
- Encerramento trimestral e anual: A contabilidade do cliente quer saber que dívidas existiam a 31.12. Trata-se de uma data de referência no passado.
- Reconciliação: O cliente julga ter pago uma fatura, nós vemo-la ainda em aberto. Uma lista comum com data, vencimento e montante esclarece a situação mais depressa do que uma cadeia de e-mails.
- Processamentos de pagamentos: Quem prepara pagamentos semanal ou mensalmente precisa de ver todas as faturas em aberto de um fornecedor de relance, com as vencidas no topo.
- Vários interlocutores: Numa empresa, uma pessoa encomenda e outra paga. As posições em aberto pertencem à empresa, não a uma pessoa individual.
Até agora extraíamos estas listas manualmente da contabilidade e enviávamo-las por e-mail. Isso custa tempo e, no fim, é uma fotografia do momento que fica desatualizada no dia seguinte. É melhor uma lista que o cliente abre por si, a qualquer momento, no portal, sempre com a situação atual.
A solução em resumo
O módulo acrescenta ao portal de clientes do Odoo uma página Posições em aberto e um mosaico em A minha conta. As funcionalidades:
- Opção por contacto: «Mostrar lista de posições em aberto no portal». Só quando está definida é que o utilizador do portal vê o mosaico e a página. Por predefinição está desativada.
- Toda a empresa: A lista contém as posições em aberto de todos os contactos da empresa, não apenas as do utilizador com sessão iniciada.
- Data de referência: O cliente escolhe uma data e vê o que estava em aberto nesse dia.
- Exportação para PDF: A lista em PDF, no layout da sua empresa, com cabeçalho, saldo e soma das posições vencidas.
- Comportamento de pagamento: proporção de faturas pagas dentro do prazo, com ligeiro atraso e com atraso, a fatura em aberto mais antiga e uma avaliação boa ou má, no portal e no PDF.
- As posições vencidas estão assinaladas a cores e indicam os dias decorridos desde a data de vencimento.
- As notas de crédito e os saldos a favor aparecem na lista com montante negativo e reduzem o saldo.
- Ligação: Cada fatura da lista leva à vista da fatura no portal.
- Multilingue: A interface e o PDF seguem o idioma do utilizador; a tradução alemã acompanha o módulo.

O mosaico aparece na página inicial A minha conta, junto das encomendas e faturas. Quem não tem a opção não o vê.
Ativação por contacto: a opção
Uma lista OP mostra dados comerciais de uma empresa inteira. Por isso, o módulo não a ativa para todos os utilizadores do portal, mas apenas onde o pretender expressamente. No contacto, no formulário, no separador Website, encontra-se a caixa de seleção «Mostrar lista de posições em aberto no portal». É visível para utilizadores com direitos de faturação (grupo account.group_account_invoice) e aplica-se a esse único contacto.

Isto corresponde à prática: numa empresa, a administração ou a contabilidade deve ver a lista, mas um colaborador que só consulta tickets não. A opção aplica-se ao contacto, mas as posições apresentadas pertencem a toda a empresa. Defina, portanto, a opção na pessoa que deve ter a visão geral da empresa.
A lista no portal do cliente
Um clique no mosaico abre /my/open-items. A página mostra o nome da empresa, a seleção da data de referência e a tabela com as posições em aberto:

| Coluna | Conteúdo |
|---|---|
| Documento | Número do documento da fatura ou nota de crédito, com ligação à vista da fatura no portal; por baixo, a referência, se existir |
| Data | Data da fatura ou do lançamento, respetivamente |
| Vencimento | Data de vencimento; nas posições vencidas, por baixo, «n dias de atraso» a vermelho |
| Montante | Montante original da posição |
| Em aberto | Montante ainda em aberto (após pagamentos parciais) |
Sob a tabela encontram-se o saldo, ou seja, a soma de todos os montantes em aberto, e a soma das posições vencidas. As linhas vencidas têm fundo colorido, para serem vistas de imediato ao percorrer a lista. As notas de crédito e os pagamentos que ainda não foram atribuídos a uma fatura aparecem com sinal negativo e reduzem o saldo; uma nota sob a tabela explica-o ao cliente. Se a sua empresa trabalha com várias moedas, o saldo é indicado por moeda.
Posições em aberto à data de referência
Acima da data encontra-se «Posições em aberto à data de referência», ao lado um campo de data e o botão Mostrar. Com uma data de referência no passado, a lista mostra o que ainda não estava pago nesse dia. É exatamente a análise necessária para encerramentos, auditorias e reconciliações: «Que dívidas tínhamos a 31.12. perante este fornecedor?»

Como é calculada a data de referência
Para cada posição aplica-se: Em aberto à data de referência = montante da fatura menos todos os pagamentos que estavam reconciliados até à data de referência, inclusive. Uma posição consta da lista se, na data de referência, já estava lançada e ainda tinha um resto. Uma fatura de 7 de setembro no valor de 1.250,50 €, parcialmente paga a 20 de outubro com 500,00 € e liquidada com o restante a 5 de novembro, consta, portanto, da lista com 750,50 € para uma data de referência de 2 de novembro e já não consta para uma data de referência de 5 de novembro.

O atraso também é avaliado à data de referência: uma posição está vencida se a sua data de vencimento for anterior à data de referência e o resto for positivo. Os dias de atraso contam-se até à data de referência, não até hoje. Uma data de referência no futuro é tratada como hoje, tal como uma data vazia ou inválida na barra de endereços. A lista não pode, assim, simular uma previsão.
O que significa aqui «data do pagamento»
É determinante a data em que fatura e pagamento foram reconciliados entre si no Odoo (a maior das duas datas de lançamento), não a data da fatura. Este é o caso habitual: o pagamento é lançado no dia da entrada do pagamento e atribuído à fatura. Quem só atribui os pagamentos passados alguns dias vê a fatura como em aberto durante mais tempo. A secção limitações aborda este ponto com mais pormenor.
Exportação para PDF
Com Descarregar PDF, o módulo gera a lista como ficheiro PDF para a data de referência escolhida. O botão Imprimir abre a mesma lista na caixa de diálogo de impressão do navegador. O PDF utiliza o layout de documento da sua empresa Odoo (logótipo, morada, rodapé das definições) e o formato de papel europeu:

- Título com data de referência: «Posições em aberto à data de referência 02.11.2026», mesmo que a data de referência seja hoje. Se não houver posições em aberto, lê-se «Não existem posições em aberto.»
- Morada do cliente no campo de endereço do layout da empresa, para que a lista, mesmo impressa, fique associada ao assunto.
- Posições vencidas a negrito, para que se destaquem também na impressão a preto e branco.
- Saldo e soma das posições vencidas no fim da tabela, por moeda quando existem várias.
- Nome do ficheiro com empresa e data, por exemplo
Open_items_Muster_Handels_GmbH_2026-11-02.pdf.
Comportamento de pagamento: avaliação de relance
Desde a versão 19.0.1.1.0, existe acima da tabela uma breve análise da pontualidade com que a empresa paga as suas faturas. A mesma análise aparece no PDF. Assim, o cliente vê por si próprio em que ponto se encontra e já não precisa de lho explicar em separado.

- Verde: «47 % foram pagas dentro do prazo de pagamento.» Referem-se a faturas pagas na data de vencimento ou antes.
- Laranja: «29 % foram pagas na semana a seguir ao fim do prazo de pagamento.» São pagamentos feitos entre um e sete dias após o vencimento.
- Vermelho: «24 % foram pagas mais tarde, em média ao fim de 39 dias (25 dias após o fim do prazo de pagamento).» O primeiro número conta a partir da data da fatura, o número entre parênteses a partir do vencimento. A linha só aparece se existirem tais faturas.
- «As faturas estão em aberto há até 60 dias.» Esta é a idade da fatura mais antiga que ainda está em aberto na data de referência, contada a partir da data da fatura.
Abaixo encontra-se a avaliação do comportamento de pagamento: boa ou má e, no fim da página (no PDF, no final da folha), a nota «Os clientes com mau comportamento de pagamento são passados para pagamento antecipado.» O PDF mostra as mesmas linhas no layout com cabeçalho:

O que é contado
- São avaliadas as faturas emitidas ao cliente que estão lançadas. Notas de crédito e rascunhos não contam. Em caso de pagamento em prestações, cada prestação conta individualmente.
- Período: as faturas dos últimos doze meses e todas as faturas que ainda estão em aberto, mesmo que sejam mais antigas.
- O dia de pagamento é a data da última reconciliação com um pagamento, tal como na data de referência.
- Faturas em aberto: Se uma fatura está vencida na data de referência, conta como se tivesse sido paga nessa data, ou seja, laranja ou vermelho. Uma fatura em aberto que ainda não venceu não é avaliada.
- Com uma data de referência no passado vale a situação desse dia: os pagamentos posteriores à data de referência ainda não contam.
- Se não houver nada para avaliar, aparece «Não há faturas dos últimos 12 meses para avaliar.» e não há avaliação.
Quando é que o comportamento de pagamento é «bom»?
A avaliação é boa se pelo menos 70 % das faturas estiverem a verde ou laranja (pontuais ou, no máximo, uma semana atrasadas) e nenhuma fatura em aberto estiver vencida há mais de 30 dias. Caso contrário, é má. Os limiares (7 dias, 70 %, 30 dias, 12 meses) estão como constantes no início de models/res_partner.py e podem ser ajustados aí.
Importante: o módulo não passa ninguém para pagamento antecipado. A nota no rodapé é um texto fixo que mostra aos clientes com má avaliação o que daí pode resultar. Se e quando decide nesse sentido, é consigo. Se a frase não lhe agradar, altere-a nos dois modelos (página do portal e relatório) ou na tradução.
Quem pode ver o quê? O modelo de acesso
As posições em aberto são dados sensíveis; por isso, o acesso foi para nós mais importante do que qualquer funcionalidade adicional. O modelo é deliberadamente simples:

- Só com a opção definida. Sem a marca no contacto não há mosaico, e um acesso a
/my/open-itemsredireciona para A minha conta. - Sempre a própria empresa. A empresa é determinada a partir do utilizador com sessão iniciada, não a partir de um parâmetro no endereço. Não há forma de pedir, através da barra de endereços, uma empresa alheia.
- A mesma verificação no PDF. O Odoo disponibiliza, por princípio, os relatórios em PDF também através de um endereço geral. Por isso, o módulo volta a verificar no próprio relatório: só os utilizadores com direito de contabilidade ou os utilizadores do portal com a opção definida para a sua própria empresa obtêm um PDF; todos os outros recebem um erro de acesso.
- Só posições lançadas. Os rascunhos e os documentos cancelados nunca aparecem.
- Só os próprios âmbitos contabilísticos: Só são tidos em conta os lançamentos de empresas a que o utilizador tem acesso.
Implementação técnica
O módulo depende apenas de account e portal, isto é, de componentes do Odoo Community. Acrescenta um único campo ao contacto e, de resto, consiste em controlador, classe de relatório e modelos.
| Componente | Função |
|---|---|
Campo portal_open_items em res.partner | Opção booleana «Mostrar lista de posições em aberto no portal», não copiável, desativada por predefinição. |
_open_items_data() | Procura as linhas de crédito lançadas e ainda não reconciliadas da empresa e calcula, por linha, o resto, o atraso e os dias. Devolve as linhas, os totais por moeda e a data de referência. |
_payment_morale() | Avalia as faturas dos últimos doze meses e todas as faturas em aberto à data de referência: proporções de pontuais, com até sete dias de atraso e mais tarde, duração média, fatura em aberto mais antiga e a avaliação boa ou má. |
_open_items_residual() | Resto de uma linha à data de referência: montante menos todas as reconciliações parciais com data até à data de referência, na moeda da fatura. |
Controlador /my/open-items | Mostra a página, avalia a data de referência (vazia, inválida ou no futuro = hoje) e, sem a opção, redireciona para A minha conta. |
Controlador /my/open-items/pdf | Gera o PDF com a mesma data de referência e entrega-o com nome de ficheiro. |
Relatório report_open_items | Modelo QWeb no layout da empresa (web.external_layout) com verificação própria da autorização. |
| Modelos do portal | Mosaico em A minha conta, trilho de navegação, página com formulário de data e tabela. |
| Formulário de contacto | Opção na área Website, visível apenas para o grupo account.group_account_invoice. |
| Tradução | Alemão (de.po) e modelo (.pot) acompanham o módulo. |
As posições em aberto são lidas das linhas de lançamento, não das faturas. Isto é importante: só assim aparecem também as notas de crédito e os pagamentos ainda não atribuídos, e só assim é possível reconstituir a situação de um dia anterior a partir das reconciliações (account.partial.reconcile). A consulta é feita para toda a empresa (commercial_partner_id) com direitos elevados; a verificação de se o utilizador a pode ver precede-a.
Testes
O módulo inclui treze testes automáticos, que passam em verde no nosso ambiente:
- acesso apenas com a opção definida, caso contrário redirecionamento para A minha conta,
- a lista contém as posições de toda a empresa, mas nunca as de outra,
- a opção aplica-se a cada contacto, não a todos os utilizadores da empresa,
- as notas de crédito aparecem com montante negativo na lista e reduzem o saldo,
- data de referência: uma fatura paga mais tarde consta da lista antes, mas não depois,
- página com data futura e com data inválida,
- o endereço do PDF devolve um ficheiro PDF,
- relatório em HTML e verificação de acesso no relatório,
- montante em aberto à data de referência após pagamentos parciais antes e depois da data de referência,
- comportamento de pagamento: classificação em pontual, até uma semana de atraso e mais tarde, com os valores médios, também para uma data de referência no passado,
- comportamento de pagamento com faturas em aberto e a avaliação boa ou má,
- comportamento de pagamento sem faturas e nunca com dados de outra empresa,
- comportamento de pagamento na página do portal e no PDF.
Além disso, percorremos a página no navegador numa base de dados de teste com clientes de exemplo; as figuras deste artigo provêm daí. Todos os nomes, números de documento e montantes aí apresentados são totalmente fictícios.
Instalação e configuração
git clone https://github.com/Alex0176/odoo-portal-open-items.git
ln -s /pfad/odoo-portal-open-items/portal_open_items /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i portal_open_items --stop-after-init
As dependências são account e portal. Após a instalação, o serviço Odoo tem de ser reiniciado, porque o módulo contém código Python. Quem opera um sistema de produção instala o módulo primeiro numa cópia da base de dados. Depois:
- abrir o contacto que deve ver a lista (pessoa com acesso ao portal),
- no formulário, marcar a caixa de seleção Mostrar lista de posições em aberto no portal e guardar,
- iniciar sessão no portal como esse utilizador ou verificar em conjunto com o cliente: mosaico, lista, data de referência e PDF.
Antes da ativação, verifique as definições de remetente e de layout da sua empresa, pois o PDF adota o logótipo, a morada e o rodapé do layout de documento. O módulo não envia e-mails por si próprio nem gera notificações.
Limitações e notas
- Situação atual dos documentos lançados. A data de referência calcula com base nos lançamentos tal como estão agora no sistema. Se, depois da data de referência, uma fatura foi cancelada ou reposta em rascunho, a lista não a mostra. Não é uma fotografia imutável «tal como foi impressa na altura».
- Os pagamentos contam a partir do dia da reconciliação. Se um pagamento só é atribuído dias depois da entrada de uma fatura, esta consta da lista como em aberto até então. Quem pretende análises rigorosas à data de referência deve atribuir os pagamentos atempadamente. A reconciliação bancária com faturas não está incluída no Odoo Community; para isso utilizamos o nosso módulo Bank-Statement-Matcher.
- O comportamento de pagamento vale tanto quanto a sua reconciliação. Conta-se o momento em que um pagamento foi atribuído a uma fatura. Pagamentos que ficam muito tempo sem reconciliar fazem um cliente parecer pior do que é. Verifique a avaliação dos seus clientes antes de tirar daí quaisquer conclusões.
- A avaliação é visível para o cliente. Quem tem a opção vê também o resultado e a nota sobre o pagamento antecipado. O módulo não altera, com isso, as condições de pagamento.
- Só créditos a receber. O módulo mostra o que o cliente lhe deve, não as suas dívidas para com o cliente.
- Sem níveis de cobrança nem ligação de pagamento na lista. O cliente pode abrir uma fatura a partir da lista e pagá-la aí, conforme o seu portal o permitir.
- PDF e funcionamento multiprocesso. Para gerar relatórios em PDF, o Odoo chama internamente o seu próprio endereço web. Se o seu sistema funciona com apenas um processo de trabalho, isso pode bloquear. Isto aplica-se a todos os relatórios em PDF no portal, não apenas a este módulo. Verifique o botão PDF uma vez, após a instalação, em condições reais.
- Testado apenas no Odoo 19.0 Community. Não o verificámos para outras versões.
- Não substitui a cobrança nem o extrato de conta. A lista não substitui nem um extrato de conta contabilístico nem os seus processos de cobrança; apenas torna a situação transparente.
Perguntas frequentes
O que é uma lista de posições em aberto (lista OP)?
Um mapa de todas as faturas que ainda não estão pagas ou não estão totalmente pagas, com data da fatura, vencimento e montante em aberto. Também é designada «faturas em aberto», «conta corrente do cliente» ou «balancete», embora um balancete, em sentido estrito, designe os saldos de todas as contas.
Porque é que o portal Odoo não mostra, de origem, uma lista OP?
O portal mostra encomendas, faturas e pagamentos individualmente, com estado e filtros. Uma lista global da empresa com saldo e uma análise à data de referência não fazem parte do âmbito da Community, tanto quanto vimos. É para isso que o módulo se destina.
Todos os utilizadores do portal de uma empresa veem a lista?
Não. Apenas os contactos com a opção definida. A lista apresentada abrange, porém, toda a empresa, não apenas as faturas desse contacto.
Posso escolher uma data de referência do passado, por exemplo 31.12. do ano anterior?
Sim, qualquer data até hoje. A lista mostra então as posições que, nesse dia, estavam lançadas e ainda não pagas. Tenha em atenção as notas sobre o cálculo: É determinante o dia da reconciliação do pagamento.
É suportada uma data de referência no futuro?
Não. As datas futuras são tratadas como hoje, para que a lista não mostre uma situação que ainda não existe.
As notas de crédito e os adiantamentos aparecem na lista?
Sim. As notas de crédito e os pagamentos que ainda não foram atribuídos a uma fatura constam da lista com montante negativo e reduzem o saldo. Uma nota sob a tabela explica-o ao cliente.
Como são identificadas as posições vencidas?
Uma posição está vencida se a sua data de vencimento for anterior à data de referência e ainda houver um resto positivo em aberto. Os dias de atraso são contados até à data de referência.
O PDF também existe noutros idiomas?
Sim, a interface e o PDF seguem o idioma do utilizador. A tradução alemã acompanha o módulo; para outros idiomas basta um ficheiro .po ou a tradução através da interface do Odoo.
Um cliente pode ver a lista de outra empresa se alterar o endereço?
Não. A empresa resulta sempre do utilizador com sessão iniciada. O endereço contém apenas a data de referência. Também o endereço de relatórios PDF do Odoo é novamente verificado no próprio relatório.
Como é calculado o comportamento de pagamento?
A partir das faturas de cliente lançadas dos últimos doze meses e de todas as faturas em aberto. Em cada fatura conta quantos dias após o vencimento foi paga: no máximo na data de vencimento (verde), até sete dias depois (laranja) ou mais tarde (vermelho). A avaliação é boa com pelo menos 70 % a verde ou laranja e nenhuma fatura em aberto vencida há mais de 30 dias. Os pormenores encontram-se na secção o comportamento de pagamento.
O módulo passa os clientes com mau comportamento de pagamento para pagamento antecipado?
Não. Mostra apenas a avaliação e a nota. As condições de pagamento, o pagamento antecipado e os bloqueios continuam a ser decisão sua e processo seu no Odoo.
O módulo envia e-mails ou avisos de cobrança?
Não. Apenas disponibiliza a página e o PDF. Não gera mensagens, notificações nem atividades.
O módulo funciona com o Odoo Enterprise?
Depende apenas de account e portal, que existem em ambas as edições. Testámo-lo apenas na edição Community do Odoo 19.
Sob que licença está o módulo?
Sob a AGPL-3. Pode utilizá-lo, alterá-lo e distribuí-lo, desde que cumpra as condições da licença. Erros e sugestões de melhoria são bem-vindos como issue no repositório GitHub .
Apoio da Biricon IT Services
Acompanhamos instalações Odoo para pequenas e médias empresas: da implementação, passando por personalizações e migrações, até à operação corrente. Se pretende disponibilizar aos seus clientes, no portal, posições em aberto, faturas e tickets, desenvolver a contabilidade no Odoo Community ou levar um módulo com segurança para a sua instância de produção, teremos todo o gosto em ajudar. Outros desenvolvimentos próprios: Arquivar empresa com utilizadores do portal, Registo comercial e verificação de moradas para clientes austríacos, Números de documento com prefixo, ano e contador e Conjuntos de produtos na proposta como secção.
Data: 6 de novembro de 2026. Versão do módulo 19.0.1.1.1. Alterações desde a primeira versão de 5 de novembro: comportamento de pagamento (19.0.1.1.0) e correção do montante em aberto à data de referência após pagamentos parciais (19.0.1.1.1). Todos os nomes, números de documento e montantes nas figuras são totalmente fictícios.