TIP: You can type at any time to perform a new search.
Romania - Mesaje SPV
l10n_ro_message_spv · OCA/l10n-romania
- Repository
- OCA/l10n-romania · module folder · Try on Runboat
- Module version
- Category
- Localization
- Folder size
- 0.23 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/l10n-romania
- Last tracking update
- 2026-08-13 17:32:49
- Authors
- Odoo Community Association (OCA), Terrabit
- Maintainers
- Odoo Community Association (OCA), Terrabit
- Committers
- GitHub, Mihai Fekete, Dorin Hongu, Weblate, OCA-git-bot, oca-ci, stananatanaela, Sima Elisabeta
- Odoo dependencies
- Python dependencies
- None
- System dependencies
- None
- Required by
- None
- Description
Acest modul facilitează gestionarea mesajelor din Spațiul Privat Virtual (SPV) ANAF, asigurând descărcarea și procesarea automată a facturilor electronice (e-Factura): - Funcționalități: - Descărcare automată mesaje SPV: sincronizare periodică (via cron) a listei de mesaje din SPV pentru facturi primite, trimise sau erori. - Procesare fișiere ZIP: descărcarea automată a arhivelor ZIP de la ANAF și extragerea fișierelor XML semnate. - Creare automată facturi de furnizor: generează schițe de factură (draft) direct din fișierele XML descărcate, mapând automat furnizorul pe baza codului fiscal (CIF). - Gestionare PDF-uri e-Factura: - Generare PDF ANAF: posibilitatea de a genera și descărca vizualizarea PDF oficială a XML-ului folosind serviciile ANAF. - Extragere PDF încorporat: extrage PDF-urile atașate direct în fișierul XML (dacă există). - Monitorizare stări: urmărirea stării fiecărui mesaj (Draft, Downloaded, Invoice, Error, Done) și a încercărilor de descărcare. - Integrare cu fluxul de facturare: legarea automată a mesajelor de facturile existente în sistem pe baza ID-ului de tranzacție sau a referinței. - Căutare produs după codul furnizorului: la importul UBL/CIUS-RO, produsul este identificat automat după codul furnizorului (`SellersItemIdentification` sau `StandardItemIdentification`) folosind `product.supplierinfo`, cu prioritate maximă față de celelalte criterii de căutare. - Salvare cod furnizor pe linia de factură: codul furnizorului (`l10n_ro_vendor_code`) este salvat pe linia de factură la import, chiar dacă produsul nu a fost găsit, pentru a permite asocierea ulterioară la validarea facturii. - Sincronizarea datelor produselor: permite salvarea automată a codurilor de furnizor pentru produse la validarea facturilor primite. - Configurare număr de zile pentru descărcarea e-facturilor (`l10n_ro_download_einvoices_days`): numărul maxim de zile pentru care se descarcă mesajele din SPV (implicit 60 de zile). - Configurare număr de zile pentru reîmprospătarea mesajelor (`l10n_ro_refresh_message_days`): numărul maxim de zile pentru care se reîmprospătează mesajele e-Factura (implicit 60 de zile). --- ## Diferențe față de modulul standard `l10n_ro_edi` Modulul `l10n_ro_message_spv` extinde modulul standard Odoo `l10n_ro_edi` (Romania - E-invoicing), adăugând funcționalități suplimentare pentru gestionarea avansată a mesajelor din SPV. ### Ce face modulul standard `l10n_ro_edi`? - **Trimitere facturi de ieșire** către SPV ANAF (e-Factura) cu urmărirea stării (Trimis / Validat / Refuzat). - **Sincronizare automată** (via cron) a stărilor facturilor trimise și descărcarea răspunsurilor de la SPV. - **Descărcare facturi primite** (received bills): creează automat o factură draft de furnizor din XML-ul primit, atașează XML-ul și PDF-ul generat de ANAF. - **Jurnal configurabil** pentru facturile importate (`l10n_ro_edi_anaf_imported_inv_journal_id`). - **Deduplicare** facturi primite pe baza sumei totale, CIF-ului furnizorului și datei. ### Ce adaugă `l10n_ro_message_spv` în plus? | Funcționalitate | `l10n_ro_edi` (standard) | `l10n_ro_message_spv` (acest modul) | |---|---|---| | Trimitere facturi ieșire | ✅ | ✅ (moștenit) | | Descărcare facturi primite | ✅ (simplu) | ✅ (extins) | | Interfață dedicată mesaje SPV | ❌ | ✅ cu stări: Draft, Downloaded, Invoice, Error, Done | | Monitorizare încercări descărcare | ❌ | ✅ | | Procesare fișiere ZIP ANAF | ❌ | ✅ | | Generare PDF oficial ANAF | ✅ | ✅ | | Extragere PDF încorporat în XML | ❌ | ✅ | | Căutare produs după cod furnizor | ❌ | ✅ via `product.supplierinfo` | | Salvare `l10n_ro_vendor_code` pe linie | ❌ | ✅ | | Sincronizare coduri furnizor la validare | ❌ | ✅ | | Configurare zile descărcare mesaje SPV | ❌ | ✅ (`l10n_ro_download_einvoices_days`) | | Configurare zile reîmprospătare mesaje | ❌ | ✅ (`l10n_ro_refresh_message_days`) | > **Notă:** `l10n_ro_message_spv` depinde de `l10n_ro_edi` și îl extinde — nu îl înlocuiește. Ambele module trebuie instalate pentru funcționalitate completă. --- ## De ce este importantă descărcarea periodică a mesajelor din SPV? Descărcarea mesajelor și a facturilor din SPV nu este doar o recomandare de „bună practică", ci o necesitate critică din motive legale, fiscale și tehnice. ### 1. Termenul de Arhivare în SPV (Limitarea Tehnică) Sistemul ANAF nu este un spațiu de stocare permanentă. - **Ștergerea automată:** Mesajele și documentele (inclusiv facturile din e-Factura) sunt păstrate în SPV pentru o perioadă limitată (de regulă **60 de zile**). - **Consecință:** Dacă nu le descarci în acest interval, ele dispar din interfață și recuperarea lor devine un proces birocratic anevoios sau chiar imposibil prin metodele standard. ### 2. Valabilitatea Juridică și Fiscală Conform legislației din România (Codul Fiscal), documentul original care stă la baza deducerii TVA și a cheltuielilor este **fișierul XML însoțit de sigiliul electronic al Ministerului Finanțelor**. - **Proba în caz de control:** În fața inspectorilor ANAF, simpla vizualizare a facturii în portal nu este suficientă. Trebuie să poți prezenta fișierul descărcat care conține semnătura electronică ce atestă autenticitatea. - **Arhivarea obligatorie:** Firmele sunt obligate prin lege să arhiveze documentele contabile pe termene lungi (de regulă 10 ani). Deoarece SPV le șterge după 60 de zile, sarcina arhivării îți revine exclusiv ție. ### 3. Integrarea în Contabilitate Majoritatea programelor de contabilitate au nevoie de fișierele XML descărcate pentru a automatiza procesele. - Fără descărcare, datele trebuie introduse manual, ceea ce crește riscul de erori umane. - Descărcarea permite corelarea rapidă între plățile efectuate și facturile primite. ### Ce trebuie descărcat? Nu este suficient să salvezi doar PDF-ul (care este doar o reprezentare vizuală). Trebuie să salvezi: 1. **Fișierul XML:** Acesta este documentul „rege" din punct de vedere legal. 2. **Recipisa (Semnătura electronică):** Fișierul care confirmă că XML-ul a fost validat de sistemul ANAF.
Code Analysis ⓘ
Views touched (5)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
res_config_settings_form_inherit_l10n_ro_edi |
res.config.settings.form.inherit.l10n.ro.edi | res.config.settings | form | Inherits l10n_ro_edi.res_config_settings_form_inherit_l10n_ro_edi |
view_l10n_ro_message_spv_form |
l10n.ro.message.spv.form | l10n.ro.message.spv | form | New |
view_l10n_ro_message_spv_search |
l10n.ro.message.spv.search | l10n.ro.message.spv | search | New |
view_l10n_ro_message_spv_tree |
l10n.ro.message.spv.list | l10n.ro.message.spv | list | New |
view_move_form |
account.move.form | account.move | form | Inherits account.view_move_form |
HTTP endpoints (3)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/l10n_ro/message_spv/<int:message_id>/anaf_pdf |
MessageSPVController.download_anaf_pdf |
user | http | ALL | |
/l10n_ro/message_spv/<int:message_id>/embedded_pdf |
MessageSPVController.download_embedded_pdf |
user | http | ALL | |
/l10n_ro/message_spv/<int:message_id>/xml |
MessageSPVController.download_xml |
user | http | ALL |
Models touched (8)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (3)
-
l10n_ro_edi_downloadCharcopy=Falsehelp='ID used to download the ZIP file from ANAF.' args: 'ID Download ANAF (RO)' -
l10n_ro_edi_transactionCharcopy=Falsehelp='Technical field used to track the status of a submission.' args: 'Transaction ID (RO)' -
l10n_ro_message_spv_idsOne2many → l10n.ro.message.spvhelp='E-invoice messages related to this invoice.'string='Romania - E-invoice messages' args: 'l10n.ro.message.spv', 'invoice_id'
-
action_post(self) -
unlink(self)
New fields (1)
-
l10n_ro_vendor_codeCharcopy=Falsestring='Vendor Code'
No public methods.
New fields (24)
-
amountMonetary -
attachment_anaf_pdf_idMany2one → ir.attachmentcompute='_compute_derived_attachments'string='ANAF PDF' args: 'ir.attachment' -
attachment_embedded_pdf_idMany2one → ir.attachmentcompute='_compute_derived_attachments'string='Embedded PDF' args: 'ir.attachment' -
attachment_idMany2one → ir.attachmentstring='Attachment' args: 'ir.attachment' -
attachment_xml_idMany2one → ir.attachmentcompute='_compute_derived_attachments'string='XML' args: 'ir.attachment' -
cifChar -
company_idMany2one → res.companydefault=<expr> args: 'res.company', 'Company' -
currency_idMany2one → res.currencydefault=<expr> args: 'res.currency' -
dateDatetime -
detailsChar -
download_attemptsIntegerdefault=0 -
errorText -
file_nameChar -
invoice_amountMonetary -
invoice_dateDate -
invoice_idMany2one → account.movestring='Invoice' args: 'account.move' -
last_download_dateDate -
messageText -
message_typeSelectionstring='Type' args: [('in_invoice', 'In Invoice'), ('out_invoice', 'Out Invoice'), ('out_receipt', 'Out Receipt'), ('in_receipt', 'In Receipt'), ('message', 'Message'), ('error', 'Error')] -
nameCharstring='Message ID' -
partner_idMany2one → res.partnerstring='Partner' args: 'res.partner' -
refCharstring='Reference' -
request_idCharstring='Request ID' -
stateSelectiondefault='draft' args: [('draft', 'Draft'), ('downloaded', 'Downloaded'), ('invoice', 'Invoice'), ('error', 'Error'), ('done', 'Done')]
-
action_download_anaf_pdf(self) -
action_download_attachment(self) -
action_download_embedded_pdf(self) -
action_download_xml(self) -
check_anaf_error_xml(self, zip_content) -
check_anaf_message_xml(self, zip_content) -
create_invoice(self) -
download_from_spv(self)Rutina de descarcare a fisierelor de la SPV -
get_data_from_invoice(self) -
get_invoice_from_move(self) -
get_partner(self) -
get_xml_fom_zip(self)Parse the invoice XML from the ZIP and update the message metadata. The XML is processed in memory — no attachment is created here. -
refresh(self) -
show_invoice(self)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (2)
-
l10n_ro_download_einvoices_daysIntegerdefault=60string='Maximum number of days to download e-invoices.' -
l10n_ro_refresh_message_daysIntegerdefault=60string='Maximum number of days to refresh e-invoice messages.'
-
l10n_ro_download_message_spv(self) -
l10n_ro_download_zip_message_spv(self, limit=5)
New fields (2)
-
l10n_ro_download_einvoices_daysIntegerreadonly=Falserelated='company_id.l10n_ro_download_einvoices_days' -
l10n_ro_refresh_message_daysIntegerreadonly=Falserelated='company_id.l10n_ro_refresh_message_days'
No public methods.
Loading…
Loading…
Loading…
Loading…
Loading…