| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 2512 |
| Technical Name |
l10n_ro_account_report_payment_register |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 2512 |
| Technical Name |
l10n_ro_account_report_payment_register |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
Romania - Payment Register
Tipizat Romanian Payment Register (Cod 14-1-1/b) — chronological listing of bank and cash transactions split into receipts / payments × bank / cash, with monthly subtotals; exportable as PDF, Excel and CSV.
Overview
This module produces the Romanian Registru Jurnal de Încasări și Plăți (Form Code 14-1-1/b) as a printable tipizat A4 form, plus Excel and CSV exports for archival or further processing.
The register is a chronological listing of every posted bank and
cash transaction in the selected period, split into Receipts and
Payments and further split by liquidity channel (Bank vs. Cash).
Monthly subtotals (Total luna <Luna>) are inserted between months
and a grand total (Total general) closes the report.
Layout (one row per posted bank / cash move):
- Nr. crt. — chronological counter, continuable across periods.
- Dată — posting date of the move.
- Nr. Doc. — document number (payment reference / move ref / move name, in that order of preference).
- Partener — partner on the move (own column for readability).
- Explicații — line / move description.
- Încasări — Bancă / Numerar — debit on the journal's liquidity account, split by journal type.
- Plăți — Bancă / Numerar — credit on the journal's liquidity account, split by journal type.
- Moneda / Sumă valută — only displayed when at least one line uses a currency other than the company's; rows in the company currency leave these cells empty.
Built & supported by NextERP Romania
Romanian Odoo specialists, here for the long run — from implementation to localization and day-to-day production support.
What we do
Odoo Solutions
From quick-start rollouts to multi-company deployments and custom modules built for your processes.
Romanian Localization
SAF-T (D406), e-Factura, e-Transport, D300 / D390 / D394, ANAF integration, full chart of accounts and fiscal positions.
Our Services
Implementation, customization, migration, integration, support and consultancy — Romanian-speaking, SLA-backed.
Features
- Tipizat Form Code 14-1-1/b — nine to eleven columns (No., Date, Doc. No., Partner, Description, Receipts Bank / Cash, Payments Bank / Cash, plus Currency / Amount in Currency when any line is in foreign currency) with the company header (name, Tax ID, Trade Register) and the standard signature footer on the PDF.
- Liquidity-account scope — only the line(s) posted on a
journal's
default_account_idare considered, so transfers and counter-bookings inside the same move are filtered out and each movement is counted once. - Bank vs. cash split — derived from the journal's
type(bankorcash); a single positivedebitbecomes Receipts, a positivecreditbecomes Payments, each on the matching side. - Monthly subtotals — moves are grouped by
(year, month)of the posting date, withTotal luna <Luna>subtotals localised viababel.dates(Romanian by default, followsenv.lang). - Three output formats — PDF (chunked at 1000 rows per render
and merged via PyPDF2 / pypdf for large periods), Excel
(
xlsxwriterlow-memory) and CSV (;-delimited, UTF-8 BOM). - Foreign-currency column — auto-shown only when the period contains at least one foreign-currency line; the column carries the currency code and absolute amount in that currency, while the Bank / Cash columns stay in company currency.
- Continuable numbering and optional journal filter — the
starting
Nr. crt.chains periods into one sequence; the journal selector is restricted to bank and cash journals of the active company and can be left empty for "all".
Configuration
The module is plug-and-play: no master data has to be created specifically for the Payment Register. A few prerequisites have to be in place on the bank and cash journals so the printout matches the legal form:
- Bank and cash journals with a liquidity account — each
account.journalof typebankorcashmust have adefault_account_idset; the SQL fetcher reads the journal liquidity account from this field and considers only theaccount_move_linerows posted on it. - Journal types — the Bank vs. Cash column split is derived
from
journal.type; make sure each journal is configured asbankorcash(mixed journals will fall under "all bank / cash journals" only if at least one is of the right type). - Posted entries only — the fetcher filters on
parent_state = 'posted', so unposted statements / payments do not appear. Validate the bank statements and the payments before running the register so the cut-off is meaningful. - Company header data — set the company
vat(Tax ID) andcompany_registry(Trade Register) on Settings → Companies so the PDF header carries them alongside the company name. - Locale for monthly labels — the
Total luna <Luna>row formats the month name viababel.datesusing the active user'senv.lang(defaults toro_RO); make sure the Romanian language is loaded if you want Romanian month names.
Access to the wizard is granted via
account.group_account_user (declared in
security/ir.model.access.csv); no further role configuration is
required.

How it works
Opening the wizard
Go to Accounting → Reporting → Romania → Payment Register. The
menu item is registered under the Romania-scoped statements menu
contributed by l10n_ro_account_enterprise and is visible to users
holding account.group_account_readonly.

Wizard fields
| Field | Meaning |
|---|---|
| Company | Defaults to the active company; selector only shown in multi-company mode |
| Date from / Date to | Inclusive period — defaults to the previous calendar month |
| Journals | Many2many tags restricted to bank / cash journals; leave empty for all |
| Starting number | First value of the Nr. crt. column — chain to the last entry of the previous period |
| Output format | PDF (A4), Excel or CSV |
What happens on Generate
- The wizard validates the period and runs a single raw SQL query
joining
account_move_linetoaccount_move,account_journal,res_partnerandres_currency. Onlyparent_state = 'posted'lines posted on each journal'sdefault_account_id(liquidity account) are kept, ordered by(date, move.name, move.id). - Each move is classified by journal type — a positive debit on a
bankjournal becomesreceipt_bank, a positive credit on acashjournal becomespayment_cash, etc. Lines in a currency other than the company's also carry the foreign currency code and absolute amount. - The rows are grouped by
(year, month)of the posting date and aTotal luna <Luna>subtotal is computed per month; the month label is formatted viababel.datesusingenv.lang. - For PDF output the groups are sliced into chunks bounded by
PDF_MAX_ROWS_PER_CHUNK = 1000body rows (monthly subtotals stay attached to the last slice of their group), each chunk rendered via the QWeb template and merged via PyPDF2 / pypdf. - XLSX output goes through
xlsxwriterinconstant_memorymode, with the Currency / Amount in Currency columns shown only when at least one row in the period uses a foreign currency. CSV is;-delimited with a UTF-8 BOM so Excel opens it directly. - The generated file is streamed back through
/web/contentfor immediate download.
If no bank or cash transaction matches the filter the wizard raises
a UserError instead of producing an empty form.
Versions
19.0.1.0.0 (2026-05-24)
- Changelog tracking starts at this release.
Discover the NextERP suite
Other modules from the same publisher, built to work together.
NextERP Romania
Odoo implementation, customization, Romanian localization and long-term support since 2018.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module