
«Quant ens queda encara per cobrar de vosaltres?» Aquesta pregunta arriba de manera regular a qualsevol cartera de clients, sovint poc abans del tancament del trimestre, abans de l'auditoria dels comptes anuals o quan la comptabilitat del client prepara pagaments. Qui no la respon per iniciativa pròpia se la veu formular per correu electrònic o per telèfon, i algú ha d'exportar de la comptabilitat una llista de partides obertes (llista OP) i enviar-la. Amb Odoo 19 Community això no es fa soli: el portal de clients mostra les factures una per una, però no una llista de les partides obertes de tota l'empresa, i encara menys a una data escollida lliurement.
Hem escrit per a això el mòdul Partides obertes al portal de clients (portal_open_items) per a Odoo 19. Els clients amb accés activat veuen al portal una llista de totes les factures obertes, els abonaments i els pagaments encara no assignats de la seva empresa, poden triar una data de tall, descarregar la llista en PDF i veuen d'un cop d'ull com està la seva moral de pagament. El mòdul és programari lliure sota la llicència AGPL-3 i es troba a GitHub:
github.com/Alex0176/odoo-portal-open-items
Hem instal·lat el mòdul el 5 de novembre de 2026 al nostre sistema de producció. L'opció hi està desactivada per defecte i només s'activa després d'acordar-ho amb cada client. L'experiència en explotació encara és, doncs, curta; hem fet proves amb tretze proves automàtiques i una base de dades de prova amb clients d'exemple. Qui adopti el mòdul hauria de llegir les seccions sobre el càlcul de la data de tall, sobre la moral de pagament i sobre els límits .
Contingut d'aquest article
- El problema: la llista OP a petició
- La solució d'un cop d'ull
- Habilitació per contacte: l'opció
- La llista al portal de clients
- Partides obertes a una data de tall
- Exportació a PDF
- Moral de pagament: valoració d'un cop d'ull
- Qui pot veure què? El model d'accés
- Implementació tècnica
- Proves
- Instal·lació i configuració
- Límits i advertiments
- Preguntes freqüents
- Suport de Biricon IT Services
El problema: la llista OP a petició
Una llista de partides obertes mostra quines factures d'un client encara no s'han pagat, quina part està vençuda i a quant ascendeix el saldo. Per al proveïdor és una eina de planificació de la liquiditat i de gestió de reclamacions. Per al client és la base per planificar pagaments, conciliar les factures amb la seva pròpia comptabilitat i aclarir dubtes sense obrir cada factura per separat. Motius habituals:
- Tancament trimestral i anual: la comptabilitat del client vol saber quines obligacions de pagament existien a 31.12. Es tracta d'una data de tall en el passat.
- Conciliació: el client creu haver pagat una factura i nosaltres la veiem encara oberta. Una llista comuna amb data, venciment i import ho aclareix més ràpid que una cadena de correus.
- Execucions de pagament: qui prepara pagaments cada setmana o cada mes necessita veure d'un sol cop d'ull totes les factures obertes d'un proveïdor, amb les vençudes al capdamunt.
- Diverses persones de contacte: en una empresa, una persona fa la comanda i una altra paga. Les partides obertes pertanyen a l'empresa, no a una persona concreta.
Fins ara extraíem aquestes llistes a mà de la comptabilitat i les enviàvem per correu. Això costa temps i, al capdavall, és una instantània que l'endemà ja està obsoleta. És millor una llista que el client pugui obrir ell mateix al portal en qualsevol moment, sempre amb l'estat actual.
La solució d'un cop d'ull
El mòdul amplia el portal de clients d'Odoo amb una pàgina Partides obertes i una icona a El meu compte. Les funcionalitats:
- Opció per contacte: «Mostra la llista de partides obertes al portal». Només si està activada, l'usuari del portal veu la icona i la pàgina. Per defecte està desactivada.
- Tota l'empresa: la llista conté les partides obertes de tots els contactes de l'empresa, no només les de l'usuari connectat.
- Data de tall: el client tria una data i veu què estava obert aquell dia.
- Exportació a PDF: la llista com a PDF amb el disseny de la seva empresa, amb capçalera, saldo i suma de les partides vençudes.
- Moral de pagament: proporció de factures pagades puntualment, amb lleu retard i tard, la factura oberta més antiga i una valoració bona o dolenta, al portal i al PDF.
- Les partides vençudes estan marcades amb color i mostren els dies transcorreguts des de la data de venciment.
- Els abonaments i saldos a favor apareixen a la llista amb import negatiu i redueixen el saldo.
- Enllaç: cada factura de la llista porta a la vista de la factura al portal.
- Multilingüe: la interfície i el PDF segueixen l'idioma de l'usuari; s'inclou la traducció a l'alemany.

La icona apareix a la pàgina d'inici El meu compte, al costat de les comandes i les factures. Qui no té l'opció no la veu.
Habilitació per contacte: l'opció
Una llista OP mostra dades comercials de tota una empresa. Per això el mòdul no l'habilita per a tots els usuaris del portal, sinó només allà on vostè ho vulgui expressament. Al formulari del contacte, a la pestanya Lloc web, hi ha la casella «Mostra la llista de partides obertes al portal». És visible per als usuaris amb drets de facturació (grup account.group_account_invoice) i actua per a aquest únic contacte.

Això s'ajusta a la pràctica: en una empresa, la direcció o la comptabilitat han de veure la llista, però no un empleat que només consulta tiquets. L'opció s'aplica a el contacte, però les partides mostrades pertanyen a tota l'empresa. Per tant, activi l'opció a la persona que ha de tenir la visió global de l'empresa.
La llista al portal de clients
Un clic a la icona obre /my/open-items. La pàgina mostra el nom de l'empresa, la selecció de la data de tall i la taula amb les partides obertes:

| Columna | Contingut |
|---|---|
| Document | Número de document de la factura o de l'abonament, enllaçat a la vista de la factura al portal; a sota, la referència, si n'hi ha |
| Data | Data de la factura o de l'assentament, respectivament |
| Venciment | Data de venciment; en les partides vençudes, a sota, «n dies vençuda» en vermell |
| Import | Import original de la partida |
| Pendent | Import encara pendent (després de pagaments parcials) |
Sota la taula hi ha el saldo, és a dir, la suma de tots els imports pendents, i la suma de les partides vençudes. Les files vençudes tenen fons de color perquè es vegin de seguida en fer una ullada. Els abonaments i els pagaments que encara no s'han assignat a cap factura apareixen amb signe negatiu i redueixen el saldo; una nota sota la taula ho explica al client. Si la seva empresa treballa en diverses monedes, el saldo es mostra per moneda.
Partides obertes a una data de tall
Sobre la data hi ha «Partides obertes a una data de tall», al costat un camp de data i el botó Mostra. Amb una data de tall en el passat, la llista mostra què encara no estava pagat aquell dia. Aquesta és exactament l'anàlisi que cal per a tancaments, auditories i conciliacions: «Quines obligacions de pagament teníem a 31.12. amb aquest proveïdor?»

Com es calcula la data de tall
Per a cada partida val: Pendent a la data de tall = import de la factura menys tots els pagaments que estaven conciliats fins a la data de tall inclosa. Una partida apareix a la llista si ja estava comptabilitzada a la data de tall i hi tenia encara un romanent. Una factura del 7 de setembre de 1.250,50 €, parcialment pagada el 20 d'octubre amb 500,00 € i saldada amb la resta el 5 de novembre, apareix doncs a la llista amb 750,50 € amb data de tall 2 de novembre i ja no hi apareix amb data de tall 5 de novembre.

El venciment també s'avalua a la data de tall: una partida està vençuda si la seva data de venciment és anterior a la data de tall i el romanent és positiu. Els dies de demora es compten fins a la data de tall, no fins avui. Una data de tall en el futur es tracta com a avui, igual que una data buida o no vàlida a la línia d'adreça. Així, la llista no pot simular cap previsió.
Què significa aquí «data del pagament»
Allò determinant és la data en què la factura i el pagament es van conciliar entre si a Odoo (la més gran de les dues dates d'assentament), no la data de la factura. Aquest és el cas habitual: el pagament s'enregistra el dia de l'ingrés i s'assigna a la factura. Qui assigna els pagaments només dies més tard veu la factura com a oberta durant més temps. L'apartat límits hi entra amb més detall.
Exportació a PDF
Mitjançant Descarrega el PDF, el mòdul genera la llista com a fitxer PDF per a la data de tall escollida. El botó Imprimeix obre la mateixa llista al diàleg d'impressió del navegador. El PDF utilitza el disseny de document de la seva empresa d'Odoo (logotip, adreça, peu de pàgina de la configuració) i el format de paper europeu:

- Títol amb la data de tall: «Partides obertes a la data de tall 02.11.2026», fins i tot si la data de tall és avui. Si no hi ha partides obertes, hi diu «No hi ha cap partida oberta.»
- Adreça del client al camp d'adreça del disseny de l'empresa, perquè la llista també tingui sentit un cop impresa.
- Partides vençudes en negreta, perquè destaquin també en la impressió en blanc i negre.
- Saldo i suma de les partides vençudes al final de la taula, per moneda si n'hi ha diverses.
- Nom del fitxer amb empresa i data, per exemple
Open_items_Muster_Handels_GmbH_2026-11-02.pdf.
Moral de pagament: valoració d'un cop d'ull
Des de la versió 19.0.1.1.0 hi ha sobre la taula una breu anàlisi de com de puntualment paga les factures l'empresa. La mateixa anàlisi apareix al PDF. Així el client veu ell mateix on es troba i vostè ja no ha d'explicar-li-ho per separat.

- Verd: «El 47 % s'ha pagat dins del termini de pagament.» Es refereix a factures pagades el dia de venciment o abans.
- Taronja: «El 29 % s'ha pagat la setmana següent a l'acabament del termini de pagament.» Són pagaments d'un a set dies després del venciment.
- Vermell: «El 24 % s'ha pagat més tard, de mitjana després de 39 dies (25 dies després de l'acabament del termini de pagament).» La primera xifra compta des de la data de la factura; la xifra entre parèntesis, des del venciment. La línia només apareix si hi ha factures d'aquest tipus.
- «Les factures estan obertes fins a 60 dies.» És l'antiguitat de la factura més antiga que a la data de tall encara està oberta, comptada des de la data de la factura.
A sota hi ha la valoració de la moral de pagament: bona o dolenta i, al final de la pàgina (al PDF, al final de la pàgina), l'avís «Els clients amb mala moral de pagament passen a pagar per avançat.» El PDF mostra les mateixes línies amb el disseny de capçalera de carta:

Què es compta
- Es valoren les factures al client que estan comptabilitzades. Els abonaments i els esborranys no compten. En cas de pagament a terminis, cada termini compta per separat.
- Període: les factures dels darrers dotze mesos i totes les factures que encara estan obertes, encara que siguin més antigues.
- El dia de pagament és la data de l'última conciliació amb un pagament, igual que amb la data de tall.
- Factures obertes: si una factura està vençuda a la data de tall, compta com si s'hagués pagat a la data de tall, és a dir, taronja o vermella. Una factura oberta que encara no ha vençut no es valora.
- Amb una data de tall en el passat val l'estat d'aquell dia: els pagaments posteriors a la data de tall encara no compten.
- Si no hi ha res a valorar, hi ha «No hi ha factures dels darrers 12 mesos per valorar.» i no hi ha valoració.
Quan és «bona» la moral de pagament?
La valoració és bona si almenys el 70 % de les factures són verdes o taronja (puntuals o com a màxim una setmana tard) i cap factura oberta està vençuda des de fa més de 30 dies. Si no, és dolenta. Els llindars (7 dies, 70 %, 30 dies, 12 mesos) són constants al començament de models/res_partner.py i s'hi poden adaptar.
Important: el mòdul no fa passar ningú a pagar per avançat. L'avís del peu de pàgina és un text fix que mostra als clients amb valoració dolenta què en pot resultar. Si vostè ho decideix així, i quan, és cosa seva. Si la frase no li agrada, canviï-la a les dues plantilles (pàgina del portal i informe) o a la traducció.
Qui pot veure què? El model d'accés
Les partides obertes són dades sensibles; per això l'accés ens va importar més que qualsevol funció addicional. El model és deliberadament senzill:

- Només amb l'opció activada. Sense la marca al contacte no hi ha icona, i una crida a
/my/open-itemsredirigeix a El meu compte. - Sempre l'empresa pròpia. L'empresa es determina a partir de l'usuari connectat, no a partir d'un paràmetre de l'adreça. No hi ha manera de sol·licitar una empresa aliena mitjançant la línia d'adreça.
- Mateixa comprovació en el PDF. Odoo posa a disposició els informes PDF, en principi, també mitjançant una adreça general. Per això el mòdul torna a comprovar dins de l'informe mateix: només els usuaris amb dret de comptabilitat o els usuaris del portal amb l'opció activada per a la seva pròpia empresa reben un PDF; tots els altres, un error d'accés.
- Només partides comptabilitzades. Els esborranys i els documents cancel·lats no apareixen mai.
- Només els propis àmbits comptables: només es tenen en compte els assentaments d'empreses a les quals l'usuari té accés.
Implementació tècnica
El mòdul només depèn d'account i portal, és a dir, de components d'Odoo Community. Afegeix un sol camp al contacte i, per la resta, consta de controlador, classe d'informe i plantilles.
| Component | Funció |
|---|---|
Camp portal_open_items a res.partner | Opció booleana «Mostra la llista de partides obertes al portal», no copiable, per defecte desactivada. |
_open_items_data() | Cerca les línies de crèdit comptabilitzades i encara no conciliades de l'empresa i calcula per a cada línia el romanent, el venciment i els dies. Retorna les línies, les sumes per moneda i la data de tall. |
_payment_morale() | Avalua les factures dels darrers dotze mesos i totes les factures obertes a la data de tall: proporcions de puntuals, fins a set dies tard i més tard, durada mitjana, factura oberta més antiga i la valoració bona o dolenta. |
_open_items_residual() | Romanent d'una línia a la data de tall: import menys totes les conciliacions parcials amb data fins a la data de tall, en la moneda de la factura. |
Controlador /my/open-items | Mostra la pàgina, avalua la data de tall (buida, no vàlida o en el futur = avui) i, sense l'opció, redirigeix a El meu compte. |
Controlador /my/open-items/pdf | Genera el PDF amb la mateixa data de tall i el serveix amb nom de fitxer. |
Informe report_open_items | Plantilla QWeb amb el disseny de l'empresa (web.external_layout) amb comprovació pròpia de l'autorització. |
| Plantilles del portal | Icona a El meu compte, fil d'Ariadna, pàgina amb formulari de data i taula. |
| Formulari de contacte | Opció a l'àrea Lloc web, només visible per al grup account.group_account_invoice. |
| Traducció | S'inclouen l'alemany (de.po) i la plantilla (.pot). |
Les partides obertes es llegeixen de les línies d'assentament, no de les factures. Això és important: només així apareixen també els abonaments i els pagaments encara no assignats, i només així es pot reconstruir l'estat d'un dia anterior a partir de les conciliacions (account.partial.reconcile). La consulta s'executa per a tota l'empresa (commercial_partner_id) amb drets elevats; la comprovació de si l'usuari pot veure-les es fa abans.
Proves
El mòdul inclou tretze proves automàtiques que a nosaltres passen en verd:
- accés només amb l'opció activada, altrament redirecció a El meu compte,
- la llista conté les partides de tota l'empresa, però mai les d'una altra,
- l'opció val per contacte, no per a tots els usuaris de l'empresa,
- els abonaments apareixen a la llista amb import negatiu i redueixen el saldo,
- data de tall: una factura pagada més tard apareix abans a la llista, després no,
- pàgina amb data futura i amb data no vàlida,
- l'adreça del PDF retorna un fitxer PDF,
- informe en HTML i comprovació d'accés a l'informe,
- import obert a la data de tall després de pagaments parcials abans i després de la data de tall,
- moral de pagament: classificació en puntual, fins a una setmana tard i més tard, amb les mitjanes, també per a una data de tall en el passat,
- moral de pagament amb factures obertes i la valoració bona o dolenta,
- moral de pagament sense factures i mai amb dades d'una altra empresa,
- moral de pagament a la pàgina del portal i al PDF.
A més, hem provat la pàgina al navegador en una base de dades de proves amb clients d'exemple; les il·lustracions d'aquest article en provenen. Tots els noms, números de document i imports que hi apareixen són inventats.
Instal·lació i configuració
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
Les dependències són account i portal. Després d'instal·lar-lo cal reiniciar el servei d'Odoo, perquè el mòdul conté codi Python. Qui opera un sistema de producció hauria d'instal·lar el mòdul primer en una còpia de la base de dades. Després:
- obrir el contacte que ha de veure la llista (persona amb accés al portal),
- al formulari, activar la casella Mostra la llista de partides obertes al portal i desar,
- iniciar sessió al portal com a aquest usuari o comprovar-ho conjuntament amb el client: icona, llista, data de tall i PDF.
Abans de l'habilitació, comprovi la configuració del remitent i del disseny de la seva empresa, perquè el PDF pren el logotip, l'adreça i el peu de pàgina del disseny de document. El mòdul no envia cap correu electrònic per si mateix ni genera notificacions.
Límits i advertiments
- Estat d'avui per a documents comptabilitzats. La data de tall calcula a partir dels assentaments tal com són ara al sistema. Si, després de la data de tall, una factura s'ha cancel·lat o s'ha tornat a esborrany, la llista no la mostra. No és una instantània immutable «tal com es va imprimir aleshores».
- Els pagaments compten des del dia de la conciliació. Si un pagament s'assigna només dies després de l'entrada d'una factura, la factura apareix a la llista com a oberta fins aleshores. Qui vulgui anàlisis netes a una data de tall hauria d'assignar els pagaments amb prontitud. Una conciliació bancària amb factures no és inclosa a Odoo Community; per a això fem servir el nostre mòdul Bank-Statement-Matcher.
- La moral de pagament és tan bona com la seva conciliació. Es compta quan es va assignar un pagament a una factura. Els pagaments que fa molt que no es concilien fan que un client sembli pitjor del que és. Comprovi la valoració dels seus clients abans de deduir-ne res.
- La valoració és visible per al client. Qui té l'opció veu també el resultat i l'avís sobre el pagament per avançat. El mòdul no canvia res de les condicions de pagament.
- Només crèdits a cobrar. El mòdul mostra el que el client li deu a vostè, no les seves obligacions de pagament envers el client.
- Sense nivells de reclamació ni enllaç de pagament a la llista. El client pot obrir una factura des de la llista i pagar-la allà, tal com el seu portal ho permeti d'altra manera.
- PDF i funcionament multiprocés. Per generar informes PDF, Odoo crida internament la seva pròpia adreça web. Si el seu sistema funciona amb un sol procés de treball, això pot bloquejar-se. Això val per a tots els informes PDF del portal, no només per a aquest mòdul. Comprovi el botó del PDF una vegada després de la instal·lació en condicions reals.
- Només provat amb Odoo 19.0 Community. No l'hem comprovat per a altres versions.
- No substitueix la gestió de reclamacions ni l'extracte de compte. La llista no substitueix ni un extracte de compte comptable ni els seus processos de reclamació; només fa transparent l'estat.
Preguntes freqüents
Què és una llista de partides obertes (llista OP)?
Un estat de totes les factures que encara no s'han pagat o no s'han pagat del tot, amb data de factura, venciment i import pendent. També s'anomena «factures obertes», «compte de client» o «balanç de comprovació», tot i que un balanç de comprovació, en sentit estricte, es refereix als saldos de tots els comptes.
Per què el portal d'Odoo no mostra ja de sèrie una llista OP?
El portal mostra comandes, factures i pagaments per separat, amb estat i filtres. Una llista global de l'empresa amb saldo i una anàlisi a data de tall no formen part de l'abast de la Community, pel que hem vist. Per a això està pensat el mòdul.
Tots els usuaris del portal d'una empresa veuen la llista?
No. Només els contactes amb l'opció activada. La llista mostrada, però, comprèn tota l'empresa, no només les factures d'aquest contacte.
Puc triar una data de tall del passat, per exemple el 31.12. de l'any anterior?
Sí, qualsevol data fins avui. La llista mostra llavors les partides que estaven comptabilitzades i encara no pagades aquell dia. Tingui en compte les indicacions sobre el càlcul: allò determinant és el dia de la conciliació del pagament.
S'admet una data de tall en el futur?
No. Les dates futures es tracten com a avui, perquè la llista no mostri un estat que encara no existeix.
Apareixen a la llista els abonaments i els avançaments?
Sí. Els abonaments i els pagaments que encara no s'han assignat a cap factura apareixen a la llista amb import negatiu i redueixen el saldo. Una nota sota la taula ho explica al client.
Com es detecten les partides vençudes?
Una partida està vençuda si la seva data de venciment és anterior a la data de tall i encara hi ha un romanent positiu pendent. Els dies de demora es compten fins a la data de tall.
Existeix el PDF també en altres idiomes?
Sí, la interfície i el PDF segueixen l'idioma de l'usuari. S'inclou la traducció a l'alemany; per a més idiomes n'hi ha prou amb un fitxer .po o amb la traducció mitjançant la interfície d'Odoo.
Pot un client veure la llista d'una altra empresa si canvia l'adreça?
No. L'empresa es dedueix sempre de l'usuari connectat. L'adreça només conté la data de tall. També l'adreça d'informes PDF d'Odoo es torna a comprovar dins de l'informe mateix.
Com es calcula la moral de pagament?
A partir de les factures de client comptabilitzades dels darrers dotze mesos i de totes les factures obertes. Per a cada factura compta quants dies després del venciment es va pagar: com a màxim el dia de venciment (verd), fins a set dies després (taronja) o més tard (vermell). La valoració és bona amb almenys un 70 % de verd o taronja i cap factura oberta vençuda des de fa més de 30 dies. Els detalls es troben a la secció moral de pagament.
El mòdul fa passar a pagar per avançat els clients amb mala moral de pagament?
No. Només mostra la valoració i l'avís. Les condicions de pagament, el pagament per avançat i els bloquejos continuen sent decisió seva i procés seu a Odoo.
El mòdul envia correus electrònics o reclamacions?
No. Només proporciona la pàgina i el PDF. No genera missatges, notificacions ni activitats.
Funciona el mòdul amb Odoo Enterprise?
Només depèn d'account i portal, que existeixen en ambdues edicions. Només l'hem provat a l'edició Community d'Odoo 19.
Sota quina llicència està el mòdul?
Sota l'AGPL-3. Pot utilitzar-lo, modificar-lo i redistribuir-lo si compleix les condicions de la llicència. Els errors i les propostes de millora són benvinguts com a issue al repositori de GitHub .
Suport de Biricon IT Services
Atenem instal·lacions d'Odoo per a petites i mitjanes empreses: des de la implantació, passant per adaptacions i migracions, fins a l'explotació diària. Si vol oferir als seus clients al portal partides obertes, factures i tiquets, ampliar la comptabilitat a Odoo Community o portar un mòdul amb seguretat a la seva instància de producció, l'ajudarem de bon grat. Altres desenvolupaments propis: Arxivar una empresa juntament amb els usuaris del portal, Registre mercantil i verificació d'adreces per a clients austríacs, Números de document a partir de prefix, any i comptador i Conjunts de productes al pressupost com a secció.
Data: 6 de novembre de 2026. Versió del mòdul 19.0.1.1.1. Canvis des de la primera versió del 5 de novembre: moral de pagament (19.0.1.1.0) i correcció de l'import obert a la data de tall després de pagaments parcials (19.0.1.1.1). Tots els noms, números de document i imports de les il·lustracions són inventats.