| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 1849 |
| Technical Name |
l10n_ro_account_counterpart |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 1849 |
| Technical Name |
l10n_ro_account_counterpart |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 18.0 19.0 |
Romania - Account Counterpart
Romania - Define Counterparts and calculate them automatically
Overview
Adds the Romanian plan de corespondență (counterpart-account map) to Odoo: a per-account list of accounts a given account is normally balanced against in a journal entry. The module ships a CSV with the official mapping for the Romanian chart of accounts (219 lines), keyed on account-code prefixes, and a one-click loader that fills the many-to-many on every account of the current company.
Every Romanian posted journal-item then stores two computed fields:
l10n_ro_counterpart_id (the counterpart account) and
l10n_ro_counterpart_line_id (the specific line on the other side of
the entry). The compute picks the move's opposite-sign lines and keeps
the one whose account belongs to the configured counterparts list,
making cash-book / bank-statement style reporting and partner balance
analysis straightforward.
A Recompute Romanian Counterparts server action is available from the Action menu on the journal-item list, so you can refresh counterparts on demand after editing the map. Both fields are added to the journal-item list / form so they are visible in every search and pivot.
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
- Counterpart map per account —
account.account.l10n_ro_counterpart_idis a many2many to itself throughaccount_counterpart_rel, listing every account that the selected account can be balanced against in a Romanian journal entry. - Bundled Plan de Corespondență —
data/plan_corespondenta.csvships the official prefix-based mapping for the Romanian Chart of Accounts (e.g.103 → 101|501|643|665|765); accounts are matched bycode_store.startswith(prefix). - Stored computed counterpart on each line —
account.move.line.l10n_ro_counterpart_idandl10n_ro_counterpart_line_idare computed and stored, depending onparent_stateand the account's counterpart list. Only posted lines on Romanian companies are populated. - Sign-based pairing — for each posted line, the compute picks opposite-sign lines on the same move and keeps the one whose account is in the counterpart list. This handles two-leg entries (cash receipts, bank statements) and multi-line entries (purchases with tax) consistently.
- Pre-init hook for fast install —
pre_init_hookadds the two columns directly via SQL so the install does not trigger a full ORM-side recomputation on existing databases. - One-click loader — Accounting → Configuration → Settings →
Load Romanian Counterpart Accounts parses the CSV and inserts the
pairs directly into
account_counterpart_rel(raw SQL, no per-record write). - Recompute server action — Action → Recompute Romanian
Counterparts on the journal-item list, scoped to
account.group_account_user.
Configuration
You need accounting manager rights (account.group_account_manager)
and an installed Romanian Chart of Accounts.
1. Load the counterpart accounts map
- Open Accounting → Configuration → Settings.
- Find the Load Romania Account Counterparts setting block and tick Load Romanian Counterpart Accounts.
- Save the settings.
The save triggers _add_l10n_ro_account_counterparts(), which reads
data/plan_corespondenta.csv, matches each row by code prefix
against your company's accounts, and inserts the pairs into
account_counterpart_rel using raw SQL — no recompute is triggered
during the import.
Run this on a fresh database whenever possible. If you install on an existing live database, the field is computed lazily on each subsequent posted move; you can also batch-refresh historical lines from the action below.
2. Adjust the map per account (optional)
Open Accounting → Configuration → Chart of Accounts, then open any Romanian account. Under the Accounting page, the Romania - Counterparts many2many tag widget lets you add or remove counterpart accounts for that account.
These per-account changes take effect on new posted journal items immediately. To refresh historical lines, see step 3.
3. Recompute counterparts on existing lines
From any journal-item list (Accounting → Journal Entries → Journal
Items), filter the lines you want, then click
Action → Recompute Romanian Counterparts. The server action is
available to users in the Accounting / Billing group
(account.group_account_user).
Only Romanian posted lines without a counterpart are reprocessed.
4. Multi-company
The loader is scoped per company (comp_accounts = … .with_company(self)
filtered by company_ids). Re-run the toggle in each company's
settings if you need the map loaded everywhere.
How it works
Once the counterpart map is loaded, every Romanian posted journal item
gets its counterpart account and counterpart line filled in
automatically. There is no UI flow to run by hand — the fields are
stored on account.move.line and update as you post entries.
Where you see counterparts
- Journal Items list (Accounting → Journal Entries → Journal Items) — a new Romania - Counterpart Account column.
- Journal Item form — the counterpart account and counterpart line appear next to the regular Account field.
- Pivot / search / group-by — both fields are indexed and can be used as group-by axes (e.g. cash account by counterpart) or as a filter (e.g. bank account 5121 grouped by counterpart account).
Counterpart selection logic
For each posted line on a Romanian company:
- Look at the other lines on the same move.
- Keep the ones with opposite sign on
amount_currency. - Among those, keep the line whose
account_idbelongs to the account'sl10n_ro_counterpart_idlist. - The first match wins; both the account and the specific line are stored.
For balanced two-leg entries (typical for bank statements, cash
receipts, manual journal vouchers) the counterpart is unambiguous. For
multi-line entries (e.g. a vendor bill with VAT) the result is the
counterpart account that matches the bundled
plan_corespondenta.csv, so the cash-book / journal-book reports
group lines on the right column.
Refreshing existing data
If you change the per-account counterpart list, run Action →
Recompute Romanian Counterparts on the journal-item list to refresh
the lines you just modified. Only lines whose
l10n_ro_counterpart_id is empty are recomputed, so the action is
safe to run repeatedly.
Versions
19.0.0.1.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