Contabilitatea primară: localizarea românească open source


Software liber, într-un repository public
Acesta e stratul la care se referă majoritatea oamenilor când spun „localizarea românească". Se află în repository-ul public l10n-romania al Odoo Community Association, are 43 de module pe Odoo 19 și e software liber, pe care oricine îl poate citi, folosi și completa.
Acoperă munca pe care un contabil o atinge în fiecare zi: taxele, gestiunea, documentele primare care trebuie să iasă pe hârtie și banca. E diferența dintre un Odoo corect tehnic și un Odoo în care un contabil român chiar poate lucra.
Închide chiar și conturile de venituri, cheltuieli și TVA la final de lună. Ce nu acoperă e restul închiderii — stornarea în roșu, reevaluarea valutară, mijloacele fixe — plus registrele tipizate și declarațiile ANAF, care stau în stratul de deasupra.


Contribuția NextERP la localizarea OCA
73%
din codul sursă din repository
32
din cele 43 de module create de noi
2015
primul nostru modul, pe Odoo 8.0
Branch-ul pentru Odoo 20 s-a deschis pe 30 septembrie 2026 și e încă gol. Din cele 43 de module, 28 au deja un pull request de migrare în așteptare, toate ale noastre.
Taxe și închidere
Regulile fiscale românești pe care motorul contabil generic nu le cunoaște.
TVA la încasare, cu conturile de TVA neexigibil
Deductibilitate dată de momentul încasării
TVA nedeductibil, total sau parțial
Închiderea conturilor de venituri și cheltuieli
Închiderea de TVA și nota de regularizare
Limitarea plăților în numerar conform legii
Gestiunea cantitativ-valorică
Stoc ținut și cantitativ și valoric, așa cum cere contabilitatea românească.
FIFO și media ponderată pe regulile românești
Dată contabilă separată de data livrării
Recepții în curs, pentru marfa nefacturată
Costuri la recepție repartizate pe costul mărfii
Diferențe de preț față de factura furnizorului
Fișa de magazie
Documente primare
Hârtiile pe care o firmă din România trebuie să le producă și să le păstreze.
Nota de intrare-recepție, standard și de amănunt
Aviz de însoțire valorizat
Mențiuni obligatorii pe documentele de livrare
Factura în format românesc
Chitanța și documentul de încasare
Registrul de casă al unui jurnal de numerar
Bancă și trezorerie
Extrase intrate, reconciliate, cu cursul valutar sub control.
Import MT940 pentru BCR și BRD
Import MT940 pentru ING și Raiffeisen
Import MT940 pentru Eximbank și Alpha Bank
Un motor MT940 comun la care se pot lega alte bănci
Raport de extras de cont
Curs valutar editabil pe factură
Parteneri, vamă și casa de marcat
Tot ce atinge datele de la ANAF sau partea de magazin.
Parteneri creați direct din codul fiscal
Date de firmă preluate de la ANAF
Validarea stării fiscale după listele ANAF
Cod fiscal și număr de registru unice
Declarația vamală, cu taxele pe costul mărfii
Mesaje preluate din SPV-ul ANAF
Localități și date poștale românești
Amănunt și casa de marcat
Gestiunea cu amănuntul din România nu are echivalent nicăieri altundeva în Odoo. Marfa se ține la preț de raft, cu adaosul și TVA-ul neexigibil în conturi separate, iar fiecare schimbare de preț trebuie să lase un document în urmă. Șase module o acoperă și sunt în întregime munca noastră.
Marfa la preț de vânzare
Contul 371 la preț de raft, cu 378 pentru adaos și 4428 pentru TVA neexigibilă.
Adaosul și TVA neexigibilă separate automat la fiecare înregistrare
Costuri la recepție care cresc costul fără să miște prețul de raft
Ce face o diferență de factură asupra adaosului, arătat înainte de validare
Adaosul recalculat când se schimbă prețul de vânzare
Documente și rapoarte
Hârtiile pe care un magazin trebuie să le producă, în formatul pe care îl cere un control.
Proces-verbal de schimbare de preț, cu tot istoricul în spate
NIR cu coloane de cost, adaos și TVA neexigibilă
Raport de stoc cu amănuntul, pe magazin
Adaos și TVA neexigibilă pe stocul din fiecare magazin
Punct de vânzare
Casa de marcat, legată de același stoc și aceleași conturi.
Bon fiscal emis din punctul de vânzare Odoo
Stornări care produc notă de credit și dispoziție de plată
Client identificat după CUI, preluat de la ANAF direct la casă
Mai multe sesiuni ținute deschise pe o casă, închise în ordine
Open source și în afara OCA
Nu tot ce publicăm deschis ajunge în repository-ul OCA. O parte din munca noastră repară chiar modulele românești ale Odoo — e-Factura și e-Transport — și se află în repository-ul nostru public, NextERP-Romania/odoo-community, sub aceleași licențe libere. Poți să-l citești, să-l folosești și să-l copiezi fără să fii clientul nostru.
e-Factura, extinsă
Extensii la modulul de e-Factura al Odoo, publicate sub LGPL-3.
Facturi trimise în SPV de un job programat, nu manual
Facturi de la furnizori preluate din SPV și create în Odoo
Câmpuri de text trunchiate la limitele CIUS-RO, ca ANAF să nu mai respingă
Descrieri lungi și note de linie scrise corect în XML
Utilizatori anume notificați când o transmitere eșuează
e-Transport, extins
Aliniat la specificația ANAF eTransport v2.0.2, sub LGPL-3.
Valoarea fără TVA calculată pe sensul operațiunii
Cantitate și unitate de măsură convertite consecvent
Greutatea brută nu se mai dublează la colete cu mai multe linii
Codul tarifar NC8 obligatoriu, în loc de o valoare implicită de zerouri
Aceleași verificări aplicate transferurilor în lot
Declarare întârziată după o indisponibilitate ANAF, conform OUG 41/2022
Trezorerie și restul
Alte module din același repository public, sub AGPL-3.
Linii de extras atașate automat la extrasul zilei
Util când MT940, CAMT.053 sau OCR aduc linii fără extras
Aplicat doar firmelor românești dintr-o bază multi-companie
Încă opt module open source dincolo de localizare
Punct de vânzare, inventar, excepții pe achiziții, costuri auto
Modul cu modul
Fiecare modul din repository, versiunea de Odoo în care a apărut prima dată, ziua primului commit și cine a scris codul sursă care se află azi în el. Cele mai vechi dintre ele datează din 2015 și din Odoo 8.0. Traducerile și fișierele generate sunt lăsate deoparte; acestea sunt linii de cod. Dincolo de cod, scriem și întreținem și traducerea românească a acestor module și documentația livrată cu ele.
Toate sunt publicate sub egida Odoo Community Association: fiecare dintre cele 43 de module are OCA printre autorii declarați, iar 39 dintre ele îl au și pe NextERP Romania. Autoratul e, prin urmare, comun prin construcție — tabelul de mai jos spune cine a scris codul dinăuntru.
| Modul | Din | Început | Linii | NextERP | Terrabit | QDev | Dakai Soft | Independenți |
|---|---|---|---|---|---|---|---|---|
l10n_ro_siruta | 8.0 | 2015-12-04 | retras după 15.0 | – | – | – | – | – |
l10n_ro_config | 8.0 | 2015-12-06 | 1 872 | 69% | 17% | 14% | – | – |
l10n_ro_vat_on_payment | 8.0 | 2016-01-13 | 871 | 92% | 8% | – | – | – |
l10n_ro_partner_unique | 8.0 | 2016-05-06 | 262 | 46% | 54% | – | – | – |
l10n_ro_partner_create_by_vat | 8.0 | 2016-05-08 | 1 308 | 72% | 26% | – | – | 2% |
l10n_ro_account_bank_statement_import_mt940_brd | 8.0 | 2016-06-21 | 480 | 46% | 54% | – | – | – |
l10n_ro_hr | 11.0 | 2017-11-26 | retras după 11.0 | – | – | – | – | – |
l10n_ro_hr_contract | 11.0 | 2017-11-26 | retras după 11.0 | – | – | – | – | – |
l10n_ro_hr_medical_holidays | 11.0 | 2017-11-26 | retras după 11.0 | – | – | – | – | – |
l10n_ro_fiscal_validation | 11.0 | 2018-01-29 | 241 | 100% | <1% | – | – | – |
l10n_ro_report_D300 | 11.0 | 2018-02-22 | retras după 11.0 | – | – | – | – | – |
l10n_ro_account_period_close | 11.0 | 2018-02-25 | 827 | 81% | 18% | – | 1% | – |
l10n_ro_address_extended | 11.0 | 2018-02-25 | retras după 15.0 | – | – | – | – | – |
l10n_ro_report_trial_balance | 11.0 | 2018-03-21 | retras după 11.0 | – | – | – | – | – |
l10n_ro_stock | 11.0 | 2019-12-08 | 421 | 65% | 35% | – | – | – |
l10n_ro_hr_payroll | 11.0 | 2020-04-23 | retras după 11.0 | – | – | – | – | – |
l10n_ro_account_report_invoice | 13.0 | 2020-07-06 | 258 | 94% | 6% | – | <1% | – |
l10n_ro_dvi | 13.0 | 2020-08-19 | 1 559 | 78% | 15% | – | 7% | – |
l10n_ro_city | 13.0 | 2020-09-02 | 292 | 9% | 84% | <1% | – | 7% |
l10n_ro_partner_statement | 13.0 | 2020-09-23 | retras după 13.0 | – | – | – | – | – |
l10n_ro_stock_account | 13.0 | 2020-10-03 | 6 091 | 61% | 34% | – | 1% | 4% |
l10n_ro_payment_to_statement | 14.0 | 2021-03-23 | 1 429 | 90% | 9% | – | 1% | – |
l10n_ro_stock_report | 13.0 | 2021-04-19 | 1 885 | 43% | 56% | – | 1% | <1% |
l10n_ro_nondeductible_vat | 14.0 | 2022-01-09 | 2 018 | 100% | <1% | – | – | – |
l10n_ro_payment_receipt_report | 14.0 | 2022-01-09 | 505 | 98% | 2% | – | <1% | – |
l10n_ro_account_edit_currency_rate | 14.0 | 2022-04-28 | 188 | 100% | – | – | – | – |
l10n_ro_stock_price_difference | 14.0 | 2022-06-08 | 1 023 | 80% | 20% | – | <1% | – |
l10n_ro_stock_account_notice | 14.0 | 2022-07-22 | retras după 18.0 | – | – | – | – | – |
l10n_ro_stock_account_date | 14.0 | 2022-07-23 | 434 | 91% | 9% | – | – | – |
l10n_ro_stock_account_date_wizard | 14.0 | 2022-07-23 | 189 | 94% | 2% | – | 3% | 1% |
l10n_ro_stock_picking_comment_template | 14.0 | 2022-07-24 | 497 | 99% | 1% | – | <1% | – |
l10n_ro_edi_ubl | 13.0 | 2022-07-28 | retras după 13.0 | – | – | – | – | – |
l10n_ro_stock_picking_valued_report | 14.0 | 2022-08-01 | 742 | 81% | 19% | – | <1% | – |
l10n_ro_account_anaf_sync | 14.0 | 2022-09-18 | retras după 17.0 | – | – | – | – | – |
l10n_ro_account_bank_statement_report | 14.0 | 2022-09-24 | 760 | 100% | <1% | – | – | – |
l10n_ro_account_edi_ubl | 14.0 | 2022-10-06 | retras după 16.0 | – | – | – | – | – |
l10n_ro_account_bank_statement_import_mt940_base | 14.0 | 2022-11-05 | 792 | 84% | 16% | – | – | – |
l10n_ro_account_bank_statement_import_mt940_bcr | 14.0 | 2022-11-05 | 504 | 48% | 52% | – | – | – |
l10n_ro_account_bank_statement_import_mt940_ing | 14.0 | 2022-11-05 | 664 | 77% | 23% | – | – | – |
l10n_ro_account_bank_statement_import_mt940_alpha | 14.0 | 2022-11-19 | 321 | 99% | 1% | – | – | – |
l10n_ro_stock_account_reception_in_progress | 14.0 | 2022-11-26 | 261 | 73% | 7% | – | – | 20% |
l10n_ro_account_bank_statement_import_mt940_rffsn | 14.0 | 2022-12-07 | 557 | 38% | 62% | – | – | – |
l10n_ro_stock_account_mrp | 14.0 | 2022-12-21 | retras după 16.0 | – | – | – | – | – |
l10n_ro_pos | 15.0 | 2023-08-15 | 666 | 21% | 79% | – | – | <1% |
l10n_ro_account | 15.0 | 2023-08-18 | 325 | 1% | 99% | – | – | – |
l10n_ro_stock_account_tracing | 14.0 | 2023-08-25 | retras după 14.0 | – | – | – | – | – |
l10n_ro_etransport | 16.0 | 2024-03-15 | retras după 17.0 | – | – | – | – | – |
l10n_ro_stock_account_landed_cost | 16.0 | 2024-04-22 | 882 | 84% | 16% | – | – | – |
l10n_ro_stock_account_tracking | 16.0 | 2024-04-22 | 364 | 90% | 10% | – | – | – |
l10n_ro_message_spv | 15.0 | 2024-06-12 | 3 685 | 1% | 99% | – | <1% | <1% |
l10n_ro_account_bank_statement_import_mt940_exim | 17.0 | 2026-05-12 | 538 | 32% | 68% | – | – | – |
l10n_ro_account_bank_statement_import_mt940_bt | 17.0 | 2026-05-12 | retras după 17.0 | – | – | – | – | – |
l10n_ro_stock_account_retail | 19.0 | 2026-09-07 | 4 620 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_landed_cost | 19.0 | 2026-09-07 | 491 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_picking_report | 19.0 | 2026-09-07 | 419 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_price_change | 19.0 | 2026-09-07 | 3 267 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_price_difference | 19.0 | 2026-09-07 | 201 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_report | 19.0 | 2026-09-07 | 1 207 | 100% | – | – | – | – |
l10n_ro_pos_refund | 19.0 | 2026-09-13 | 845 | 100% | – | – | – | – |
l10n_ro_pos_partner | 19.0 | 2026-09-15 | 370 | 100% | – | – | – | – |
| Total (43 active, 17 retrase) | 8.0 | 2015-12-04 | 45 131 | 73% | 26% | <1% | <1% | 1% |
Rândurile estompate sunt module care au existat și au fost retrase, pentru că funcționalitatea a ajuns în Odoo standard sau a fost preluată de alt modul; ele nu mai au cod pe 19.0, deci nu au procente. Procentele sunt rotunjite astfel încât fiecare rând să însumeze exact 100. O linie se contabilizează la cel care a scris-o prima dată, nu la cel care a migrat-o ultima dată. Acolo unde o migrare a rescris un fișier fără să-i poarte istoricul, atribuirea e recuperată potrivind textul cu toate versiunile anterioare ale aceluiași modul.
Un efort comun și de ce contează cine o întreține
Localizarea românească se construiește la vedere, de mai multe firme care lucrează în același repository și își revizuiesc reciproc modificările. Terrabit, QDev Web Labs și Dakai Soft contribuie alături de noi, împreună cu câțiva dezvoltatori independenți, iar unele module sunt în întregime ale lor. Revizuirea asta e parte din motivul pentru care codul e de încredere.
Fiecare versiune nouă de Odoo, și apare una pe an, înseamnă că toate aceste module trebuie migrate, testate și repuse în funcțiune. O firmă care doar folosește localizarea așteaptă pe altcineva să facă asta. O firmă care o scrie poate migra când are nevoie și poate repara o problemă în ziua în care apare.
Asta e diferența practică pentru clienții noștri: migrările nu stau pe loc, iar problemele se rezolvă la sursă în loc să devină ciudățenii cu care înveți să trăiești. Solicită o consultație gratuită.
Nouă versiuni, iar a zecea în lucru
Fiecare versiune anuală de Odoo înseamnă că modulele existente trebuie migrate, testate și repuse în funcțiune — iar unele versiuni aduc și module care nu existau înainte. Ambele coloane numără module de pe branch, nu pull request-uri.
Un modul e considerat nou în versiunea pe care a aterizat primul lui commit, nu acolo unde apare prima dată în arbore: patru module au fost scrise pe 15.0 și 16.0 și aduse ulterior înapoi pe 14.0.
| Versiune Odoo | De migrat | Migrate de NextERP | Module noi | Scrise de NextERP |
|---|---|---|---|---|
| 8.0 | – | – | 6 | 6 din 6 · 100% |
| 11.0 | 6 | 6 din 6 · 100% | 10 | 9 din 10 · 90% |
| 13.0 | 9 | 9 din 9 · 100% | 7 | 1 din 7 · 14% |
| 14.0 | 19 | 14 din 19 · 74% | 21 | 18 din 21 · 86% |
| 15.0 | 36 | 30 din 36 · 83% | 3 | 0 din 3 · 0% |
| 16.0 | 36 | 17 din 36 · 47% | 3 | 0 din 3 · 0% |
| 17.0 | 37 | 16 din 37 · 43% | 2 | 2 din 2 · 100% |
| 18.0 | 34 | 18 din 34 · 53% | – | – |
| 19.0 | 35 | 15 din 35 · 43% | 8 | 8 din 8 · 100% |
| 20.0 * | 43 | 28 din 43 · 65% | – | – |
| Total | 255 | 153 din 255 · 60% | 60 | 44 din 60 · 73% |
Rândul marcat cu asterisc e încă deschis: acele pull request-uri așteaptă revizuire, nu sunt integrate. Versiunile 9.0, 10.0 și 12.0 n-au avut niciodată module românești.