Pular para o conteúdo

Odoo 19: Posições em aberto no portal do cliente com data de referência e exportação para PDF – módulo portal_open_items

5 de novembro de 2026 | Odoo 19 Community | Desenvolvimento próprio
5 de novembro de 2026 por
Odoo 19: Posições em aberto no portal do cliente com data de referência e exportação para PDF – módulo portal_open_items

Módulo Odoo 19 portal_open_items: lista de posições em aberto no portal do cliente com data de referência e exportação para PDF

«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 .

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.

Portal do cliente no Odoo 19 com o mosaico Posições em aberto ao lado de encomendas e faturas

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.

Formulário de contacto do Odoo com a opção Mostrar lista de posições em aberto no portal

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:

Lista de posições em aberto no portal do cliente Odoo com faturas vencidas, nota de crédito, saldo e soma das posições vencidas

ColunaConteúdo
DocumentoNú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
DataData da fatura ou do lançamento, respetivamente
VencimentoData de vencimento; nas posições vencidas, por baixo, «n dias de atraso» a vermelho
MontanteMontante original da posição
Em abertoMontante 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?»

Posições em aberto à data de referência 02.11.2026 no portal do cliente Odoo

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.

Linha cronológica: fatura, pagamento parcial, data de referência e pagamento do restante, e o cálculo do montante em aberto à data de referência

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:

PDF Posições em aberto à data de referência com cabeçalho, tabela, saldo e soma das posições vencidas

  • 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.

Página de posições em aberto no portal de clientes Odoo com a análise do comportamento de pagamento a verde, laranja e vermelho e a avaliação má

  • 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:

PDF Posições em aberto à data de referência 05.10.2026 com comportamento de pagamento, avaliação boa e nota sobre o pagamento antecipado

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:

Modelo de acesso: contacto com opção, sem opção, contacto de outra empresa, endereço do PDF e colaborador

  • Só com a opção definida. Sem a marca no contacto não há mosaico, e um acesso a /my/open-items redireciona 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.

ComponenteFunção
Campo portal_open_items em res.partnerOpçã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-itemsMostra 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/pdfGera o PDF com a mesma data de referência e entrega-o com nome de ficheiro.
Relatório report_open_itemsModelo QWeb no layout da empresa (web.external_layout) com verificação própria da autorização.
Modelos do portalMosaico em A minha conta, trilho de navegação, página com formulário de data e tabela.
Formulário de contactoOpção na área Website, visível apenas para o grupo account.group_account_invoice.
TraduçãoAlemã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:

  1. abrir o contacto que deve ver a lista (pessoa com acesso ao portal),
  2. no formulário, marcar a caixa de seleção Mostrar lista de posições em aberto no portal e guardar,
  3. 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.

Contacte-nos agora

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.