Romania - DVI

l10n_ro_dvi
REPOSITORY
REPOSITORYOCA/l10n-romania
GIT
GIThttps://github.com/OCA/l10n-romania.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-romania/tree/19.0/l10n_ro_dvi
VERSION
VERSION 0.2.0
CATEGORY
CATEGORYLocalization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Terrabit, NextERP Romania
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Terrabit, NextERP Romania
COMMITTERS
COMMITTERSGitHub, Weblate, OCA-git-bot, Mihai Fekete, oca-ci, Adrian Vacaru, stananatanaela, Flavia0320
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-romania
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-romania:
    - l10n_ro_stock_account_landed_cost
    - l10n_ro_stock_account_tracking
    - l10n_ro_stock_account
    - l10n_ro_stock
    - l10n_ro_config
odoo/odoo:
    - stock_landed_costs
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - http_routing
    - auth_signup
    - resource
    - account
    - onboarding
    - analytic
    - purchase_stock
    - purchase
    - stock_dropshipping
    - sale_purchase_stock
    - sale_stock
    - sale
    - sales_team
    - account_payment
    - payment
    - utm
    - sale_purchase
    - l10n_ro
    - base_vat
    - account_edi_ubl_cii
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
DVI - declaraţie vamala de import

Se face legatura dintre factura de achizitie si DVI (landed cost)

Se genereaza automat un DVI cu doua linii si cu TVA.

Contul 447 trebuie sa fie un cont de reconciliere pentru a se putea
inchide prin banca

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_account_dvi_form DVI l10n.ro.account.dvi form New
view_account_dvi_tree l10n.ro.account.dvi.tree l10n.ro.account.dvi list New
view_move_form account.move.form account.move div Inherits account.view_move_form
view_stock_landed_cost_form stock.landed.cost.form stock.landed.cost group Inherits l10n_ro_stock_account_landed_cost.view_stock_landed_cost_form
Models touched (6)

New fields (1)
  • l10n_ro_dvi_ids Many2many → stock.landed.cost
    compute='_compute_l10n_ro_dvi_ids' help="DVI's linked to this invoice" string="Romania - DVI's" args: 'stock.landed.cost'
Public methods (1)
  • action_view_dvis(self)

New fields (22)
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True args: 'res.company'
  • currency_id Many2one
    help='Utility field to express amount currency' readonly=True related='company_id.currency_id' store=True
  • customs_commission_product_id Many2one → product.product
    help='Product type service with l10n_ro_custom_commission checed (in purchase tab). Journal entry for commission will be with this product' required=True args: 'product.product'
  • customs_commission_value Monetary
    help='taken from dvi if exists'
  • customs_duty_product_id Many2one → product.product
    help='A product type service with l10n_ro_custom_duty checked (purchase tab). Journal entry for duty will be with this product & default vat for custom duty and invoice - to find it in declaration based on tags' required=True args: 'product.product'
  • customs_duty_tax_value Monetary
    compute='_compute_total_tax_value' help='readonly computed tax from custom_duty_value' readonly=True
  • customs_duty_value Monetary
    help='This is a value from received dvi'
  • date Date
    required=True
  • invoice_base_value Monetary
    compute='_compute_amount' help='Invoices value without taxes'
  • invoice_ids Many2many → account.move
    domain=[('move_type', 'in', ['in_invoice', 'in_refund'])] required=True string='Invoices' args: 'account.move'
  • invoice_tax_value Monetary
    compute='_compute_amount' help='default is computed as tax_id from product; is not recomputed based on selected vat'
  • journal_id Many2one → account.journal
    domain="[('type', '=', 'general'), ('company_id', '=', company_id)]" required=True string='Journal' args: 'account.journal'
  • landed_cost_ids One2many → stock.landed.cost
    readonly=True args: 'stock.landed.cost', 'l10n_ro_account_dvi_id'
  • line_ids One2many → l10n.ro.account.dvi.line
    copy=False string='DVI Lines' args: 'l10n.ro.account.dvi.line', 'dvi_id'
  • name Char
    required=True
  • state Selection
    copy=False default='draft' index=True readonly=True selection=[('draft', 'Draft'), ('posted', 'Posted'), ('reversed', 'Reversed')] string='Status' tracking=True
  • tax_id Many2one → account.tax
    domain="[('type_tax_use', '=', 'purchase'), ('company_id', '=', company_id)]" help='Is the vat that is paid in custom for products. default is taken from custom duty tax. will put this vat tag in journal entry to find it in reports' required=True args: 'account.tax'
  • total_base_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi' readonly=True
  • total_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi' readonly=True
  • vat_price_difference Monetary
    help='VAT price difference'
  • vat_price_difference_move_id Many2one → account.move
    help='Move for vat price difference' readonly=True args: 'account.move'
  • vat_price_difference_product_id Many2one → product.product
    help='Product for vat price difference' args: 'product.product'
Public methods (10)
  • action_view_landed_costs(self)
  • button_post(self)
  • button_reverse(self)
  • create(self, vals_list)
    @api.model_create_multi
  • create_account_move_dvi(self)
  • default_get(self, fields_list)
    @api.model
  • prepare_dvi_landed_cost_lines(self, product, value, accounts_data)
  • prepare_dvi_landed_cost_vals(self)
  • prepare_dvi_landed_cost_values(self)
  • write(self, vals)

New fields (15)
  • base_amount Float
    compute='_compute_base_vat_amount'
  • company_id Many2one → res.company
    related='dvi_id.company_id' store=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    related='dvi_id.currency_id' args: 'res.currency'
  • dvi_id Many2one → l10n.ro.account.dvi
    index=True ondelete='cascade' required=True string='DVI Ref' args: 'l10n.ro.account.dvi'
  • invoice_id Many2one → account.move
    check_company=True copy=False index=True readonly=True string='DVI Invoice' args: 'account.move'
  • invoice_line_id Many2one → account.move.line
    check_company=True copy=False readonly=True args: 'account.move.line', 'Invoice Line'
  • line_qty Float
    default=1.0 digits='Product Unit of Measure' help='The quantity declared in the DVI.' string='DVI Quantity'
  • name Char
    readonly=True related='invoice_line_id.name'
  • price_subtotal Monetary
    readonly=True related='invoice_line_id.balance'
  • price_unit Float
    readonly=True related='invoice_line_id.price_unit'
  • product_id Many2one
    readonly=True related='invoice_line_id.product_id'
  • product_uom_id Many2one
    readonly=True related='invoice_line_id.product_uom_id'
  • qty Float
    readonly=True related='invoice_line_id.quantity'
  • tax_id Many2one → account.tax
    related='dvi_id.tax_id' args: 'account.tax'
  • vat_amount Float
    compute='_compute_base_vat_amount' string='VAT Amount'
Public methods (0)

No public methods.

New fields (1)
  • l10n_ro_property_vat_price_difference_product_id Many2one → product.product
    domain="[('type', '=', 'service')]" help='This product will be used in create an accounting note for the difference between customs duty and bill' string='Romania - Vat Price Difference Product' args: 'product.product'
Public methods (0)

No public methods.

New fields (6)
  • l10n_ro_account_dvi_id Many2one → l10n.ro.account.dvi
    string='Romania - DVI' args: 'l10n.ro.account.dvi'
  • l10n_ro_base_tax_value Float
    copy=False help='Base VAT amount, calculated from invoice base amount, customs and commission.' args: 'Romania - Base VAT amount'
  • l10n_ro_cost_type Selection
    ondelete={'dvi': 'set default'} selection_add=[('dvi', 'DVI')]
  • l10n_ro_dvi_bill_ids Many2many → account.move
    readonly=True relation='account_move_stock_landed_cost_rel' string='Romania - DVI Invoices' args: 'account.move'
  • l10n_ro_tax_id Many2one → account.tax
    copy=False help='VAT tax for products and customs cost' string='Romania - DVI Tax' args: 'account.tax'
  • l10n_ro_tax_value Float
    copy=False help='VAT amount, calculated from invoice base amount and customs.' args: 'Romania - VAT amount paid at customs'
Public methods (1)
  • button_validate(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-romania
GIT
GIThttps://github.com/OCA/l10n-romania.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-romania/tree/18.0/l10n_ro_dvi
VERSION
VERSION 1.3.0
CATEGORY
CATEGORYLocalization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Terrabit, NextERP Romania
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Terrabit, NextERP Romania
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Dorin Hongu, stananatanaela, Marius
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-romania
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-romania:
    - l10n_ro_stock_account_landed_cost
    - l10n_ro_stock_account_tracking
    - l10n_ro_stock_account
    - l10n_ro_config
    - l10n_ro_stock
odoo/odoo:
    - stock_landed_costs
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - onboarding
    - analytic
    - purchase_stock
    - purchase
    - sale_stock
    - sale
    - sales_team
    - account_payment
    - payment
    - utm
    - stock_dropshipping
    - sale_purchase_stock
    - sale_purchase
    - l10n_ro
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
DVI - Declarația Vamală de Import
----------------------------------

Acest modul permite gestionarea detaliată a Declarațiilor Vamale de Import (DVI) în Odoo, asigurând conformitatea cu legislația din România (OMFP 1802/2014 și Codul Fiscal).

Caracteristici principale:
-------------------------

*   **Model de date dedicat**: Introduce entitatea `l10n.ro.account.dvi` pentru evidența separată a documentelor vamale.
*   **Grupare facturi**: Permite asocierea mai multor facturi de furnizor (Vendor Bills) într-o singură declarație vamală.
*   **Calcul analitic**: Calculează automat taxele vamale, comisionul vamal și TVA-ul la nivel de linie de produs, bazat pe cantitățile declarate.
*   **Integrare cu Landed Costs**: Generează automat documente de tip `stock.landed.cost` pentru repartizarea taxelor în costul stocului.
*   **Trasabilitate fiscală**: Asigură popularea corectă a etichetelor fiscale (`tax_tag_ids`) pentru jurnalele de cumpărări și Declarația 300.
*   **Ajustări de curs**: Include posibilitatea de a gestiona diferențele de calcul pentru TVA (`vat_price_difference`) rezultate din discrepanța dintre cursul BNR al facturii și cursul vamal lunar.

Baza legală:
------------

Prezentul capitol sintetizează cadrul legal aplicabil operațiunilor de import (achiziție marfă externă + Declarație Vamală de Import – DVI), cu accent pe următoarele aspecte:

*   Factura comercială externă se înregistrează în contabilitate la cursul BNR din data emiterii facturii;
*   Cursul valutar din vamă (cursul vamal lunar) se utilizează exclusiv pentru calculul valorii în vamă, al taxelor vamale (A00) și al TVA-ului la import (B00) din DVI;
*   Toate înregistrările contabile (factură, taxe vamale, stocuri) se efectuează și se prezintă doar în moneda națională (RON).

1. Legea contabilității nr. 82/1991 (republicată)
------------------------------------------------------

*   **Art. 3 alin. (1):** „Contabilitatea se ține în limba română și în moneda națională.”
*   **Art. 3 alin. (2):** „Contabilitatea operațiunilor efectuate în valută se ține atât în moneda națională, cât și în valută, potrivit reglementărilor elaborate în acest sens.”

Toate operațiunile de import (inclusiv factura furnizor și DVI) se înregistrează și se prezintă în situațiile financiare exclusiv în RON.

2. OMFP nr. 1802/2014
-----------------------

*   **Pct. 319:** „O tranzacție în valută trebuie înregistrată inițial la cursul de schimb valutar, comunicat de Banca Națională a României, de la data efectuării operațiunii.” -> Factura comercială externă (Vendor Bill) se înregistrează la cursul BNR din data emiterii facturii.
*   **Pct. 6 (definiția costului de achiziție):** „Costul de achiziție al bunurilor cuprinde prețul de cumpărare, taxele de import și alte taxe (cu excepția acelora pe care persoana juridică le poate recupera de la autoritățile fiscale)…”
*   **Pct. 75 alin. (1) lit. a):** Bunurile se evaluează și se înregistrează la data intrării în entitate la cost de achiziție (care include taxele vamale plătite conform DVI).
*   **Pct. 94 lit. a):** Elementele monetare exprimate în valută se evaluează la cursul BNR la data bilanțului; diferențele de curs se înregistrează pe conturile 665 sau 765.

Taxele vamale (A00) se capitalizează în costul stocurilor, iar toate valorile finale rămân exclusiv în RON.

3. Legea nr. 227/2015 – Codul Fiscal
------------------------------------------

*   **Art. 289 (Baza de impozitare a importului de bunuri):** „Dacă elementele folosite la stabilirea bazei de impozitare a unui import de bunuri se exprimă în valută, cursul de schimb valutar se stabilește conform prevederilor europene care reglementează calculul valorii în vamă.”
*   **Art. 299 alin. (1) lit. c):** Dreptul de deducere a TVA aferente importului de bunuri se exercită pe baza Declarației vamale de import (DVI) sau a actului constatator emis de organele vamale (TVA B00 calculat la cursul vamal).

Cursul din DVI se folosește doar pentru determinarea valorii în vamă, calculul taxei vamale (A00) și al TVA-ului la import (B00). Nu afectează înregistrarea facturii comerciale în contabilitate.

4. Regulamentul de punere în aplicare (UE) 2015/2447 al Comisiei
----------------------------------------------------------------------

*   **Art. 146 (Conversia monetară în scopul determinării valorii în vamă):** „În situația în care valoarea în vamă a mărfurilor este exprimată într-o altă monedă decât cea națională, cursul de schimb folosit la determinarea acestei valori este cursul de schimb stabilit și comunicat de Banca Națională a României în penultima zi de miercuri a lunii anterioare lunii în care se utilizează.”

Cursul vamal este un curs lunar fix, aplicabil exclusiv în cadrul procedurii vamale pentru calculul valorii statistice, taxelor vamale și TVA la import. Nu se utilizează pentru înregistrarea facturii furnizor în contabilitate.

Concluzie
---------

Cadrul legal este clar și unitar:
*   **Factura furnizor** -> curs BNR (data facturii) + înregistrare în RON.
*   **DVI** -> curs vamal lunar (Reg. UE 2015/2447 art. 146 + Cod Fiscal art. 289) doar pentru taxe vamale și TVA la import.
*   **Toate înregistrările contabile** (inclusiv costul stocurilor) -> exclusiv în RON.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_account_dvi_form DVI l10n.ro.account.dvi form New
view_account_dvi_tree l10n.ro.account.dvi.tree l10n.ro.account.dvi list New
view_move_form account.move.form account.move div Inherits account.view_move_form
view_stock_landed_cost_form stock.landed.cost.form stock.landed.cost group Inherits l10n_ro_stock_account_landed_cost.view_stock_landed_cost_form
Models touched (6)

New fields (1)
  • l10n_ro_dvi_ids Many2many → stock.landed.cost
    compute='_compute_l10n_ro_dvi_ids' help="DVI's linked to this invoice" string="Romania - DVI's" args: 'stock.landed.cost'
Public methods (1)
  • action_view_dvis(self)

New fields (22)
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True args: 'res.company'
  • currency_id Many2one
    help='Utility field to express amount currency' readonly=True related='company_id.currency_id' store=True
  • customs_commission_product_id Many2one → product.product
    help='Product type service with l10n_ro_custom_commission checed (in purchase tab). Journal entry for commission will be with this product' required=True args: 'product.product'
  • customs_commission_value Monetary
    help='taken from dvi if exists'
  • customs_duty_product_id Many2one → product.product
    help='A product type service with l10n_ro_custom_duty checked (purchase tab). Journal entry for duty will be with this product & default vat for custom duty and invoice - to find it in declaration based on tags' required=True args: 'product.product'
  • customs_duty_tax_value Monetary
    compute='_compute_total_tax_value' help='readonly computed tax from custom_duty_value' readonly=True
  • customs_duty_value Monetary
    help='This is a value from received dvi'
  • date Date
    required=True
  • invoice_base_value Monetary
    compute='_compute_amount' help='Invoices value without taxes'
  • invoice_ids Many2many → account.move
    domain=[('move_type', 'in', ['in_invoice', 'in_refund'])] required=True string='Invoices' args: 'account.move'
  • invoice_tax_value Monetary
    compute='_compute_amount' help='default is computed as tax_id from product; is not recomputed based on selected vat'
  • journal_id Many2one → account.journal
    domain="[('type', '=', 'general')]" required=True string='Journal' args: 'account.journal'
  • landed_cost_ids One2many → stock.landed.cost
    readonly=True args: 'stock.landed.cost', 'l10n_ro_account_dvi_id'
  • line_ids One2many → l10n.ro.account.dvi.line
    copy=False string='DVI Lines' args: 'l10n.ro.account.dvi.line', 'dvi_id'
  • name Char
    required=True
  • state Selection
    copy=False default='draft' index=True readonly=True selection=[('draft', 'Draft'), ('posted', 'Posted'), ('reversed', 'Reversed')] string='Status' tracking=True
  • tax_id Many2one → account.tax
    domain="[('type_tax_use', '=', 'purchase')]" help='Is the vat that is paid in custom for products. default is taken from custom duty tax. will put this vat tag in journal entry to find it in reports' required=True args: 'account.tax'
  • total_base_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi' readonly=True
  • total_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi' readonly=True
  • vat_price_difference Monetary
    help='VAT price difference'
  • vat_price_difference_move_id Many2one → account.move
    help='Move for vat price difference' readonly=True args: 'account.move'
  • vat_price_difference_product_id Many2one → product.product
    help='Product for vat price difference' args: 'product.product'
Public methods (10)
  • action_view_landed_costs(self)
  • button_post(self)
  • button_reverse(self)
  • create(self, vals_list)
    @api.model_create_multi
  • create_account_move_dvi(self)
  • default_get(self, fields_list)
    @api.model
  • prepare_dvi_landed_cost_lines(self, product, value, accounts_data)
  • prepare_dvi_landed_cost_vals(self)
  • prepare_dvi_landed_cost_values(self)
  • write(self, vals)

New fields (15)
  • base_amount Float
    compute='_compute_base_vat_amount'
  • company_id Many2one → res.company
    related='dvi_id.company_id' store=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    related='dvi_id.currency_id' args: 'res.currency'
  • dvi_id Many2one → l10n.ro.account.dvi
    index=True ondelete='cascade' required=True string='DVI Ref' args: 'l10n.ro.account.dvi'
  • invoice_id Many2one → account.move
    check_company=True copy=False index=True readonly=True string='DVI Invoice' args: 'account.move'
  • invoice_line_id Many2one → account.move.line
    check_company=True copy=False readonly=True args: 'account.move.line', 'Invoice Line'
  • line_qty Float
    default=1.0 digits='Product Unit of Measure' help='The quantity declared in the DVI.' string='DVI Quantity'
  • name Char
    readonly=True related='invoice_line_id.name'
  • price_subtotal Monetary
    readonly=True related='invoice_line_id.balance'
  • price_unit Float
    readonly=True related='invoice_line_id.price_unit'
  • product_id Many2one
    readonly=True related='invoice_line_id.product_id'
  • product_uom_id Many2one
    readonly=True related='invoice_line_id.product_uom_id'
  • qty Float
    readonly=True related='invoice_line_id.quantity'
  • tax_id Many2one → account.tax
    related='dvi_id.tax_id' args: 'account.tax'
  • vat_amount Float
    compute='_compute_base_vat_amount' string='VAT Amount'
Public methods (0)

No public methods.

New fields (1)
  • l10n_ro_property_vat_price_difference_product_id Many2one → product.product
    domain="[('type', '=', 'service')]" help='This product will be used in create an accounting note for the difference between customs duty and bill' string='Romania - Vat Price Difference Product' args: 'product.product'
Public methods (0)

No public methods.

New fields (6)
  • l10n_ro_account_dvi_id Many2one → l10n.ro.account.dvi
    string='Romania - DVI' args: 'l10n.ro.account.dvi'
  • l10n_ro_base_tax_value Float
    copy=False help='Base VAT amount, calculated from invoice base amount, customs and commission.' args: 'Romania - Base VAT amount'
  • l10n_ro_cost_type Selection
    ondelete={'dvi': 'set default'} selection_add=[('dvi', 'DVI')]
  • l10n_ro_dvi_bill_ids Many2many → account.move
    readonly=True relation='account_move_stock_landed_cost_rel' string='Romania - DVI Invoices' args: 'account.move'
  • l10n_ro_tax_id Many2one → account.tax
    copy=False help='VAT tax for products and customs cost' string='Romania - DVI Tax' args: 'account.tax'
  • l10n_ro_tax_value Float
    copy=False help='VAT amount, calculated from invoice base amount and customs.' args: 'Romania - VAT amount paid at customs'
Public methods (1)
  • button_validate(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-romania
GIT
GIThttps://github.com/OCA/l10n-romania.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-romania/tree/17.0/l10n_ro_dvi
VERSION
VERSION 1.9.0
CATEGORY
CATEGORYLocalization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Terrabit, NextERP Romania
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Terrabit, NextERP Romania
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Mihai Fekete, oca-ci, Dorin Hongu, Stana Natanaela
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-romania
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-romania:
    - l10n_ro_stock_account_landed_cost
    - l10n_ro_stock_account_tracking
    - l10n_ro_stock_account
    - l10n_ro_config
    - l10n_ro_stock
odoo/odoo:
    - stock_landed_costs
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - onboarding
    - analytic
    - purchase_stock
    - purchase
    - sale_stock
    - sale
    - sales_team
    - account_payment
    - payment
    - utm
    - stock_dropshipping
    - sale_purchase_stock
    - sale_purchase
    - l10n_ro
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
DVI - declaraţie vamala de import

Se face legatura dintre factura de achizitie si DVI (landed cost)

Se genereaza automat un DVI cu doua linii si cu TVA.

Contul 447 trebuie sa fie un cont de reconciliere pentru a se putea
inchide prin banca

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_account_dvi_form DVI l10n.ro.account.dvi form New
view_account_dvi_tree l10n.ro.account.dvi.tree l10n.ro.account.dvi tree New
view_move_form account.move.form account.move div Inherits account.view_move_form
view_stock_landed_cost_form stock.landed.cost.form stock.landed.cost group Inherits l10n_ro_stock_account_landed_cost.view_stock_landed_cost_form
Models touched (6)

New fields (1)
  • l10n_ro_dvi_ids Many2many → stock.landed.cost
    compute='_compute_l10n_ro_dvi_ids' help="DVI's linked to this invoice" string="Romania - DVI's" args: 'stock.landed.cost'
Public methods (1)
  • action_view_dvis(self)

New fields (22)
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True args: 'res.company'
  • currency_id Many2one
    help='Utility field to express amount currency' readonly=True related='company_id.currency_id' store=True
  • customs_commission_product_id Many2one → product.product
    help='Product type service with l10n_ro_custom_commission checed (in purchase tab). Journal entry for commission will be with this product' required=True args: 'product.product'
  • customs_commission_value Monetary
    help='taken from dvi if exists'
  • customs_duty_product_id Many2one → product.product
    help='A product type service with l10n_ro_custom_duty checked (purchase tab). Journal entry for duty will be with this product & default vat for custom duty and invoice - to find it in declaration based on tags' required=True args: 'product.product'
  • customs_duty_tax_value Monetary
    compute='_compute_total_tax_value' help='readonly computed tax from custom_duty_value' readonly=True
  • customs_duty_value Monetary
    help='This is a value from received dvi'
  • date Date
    required=True
  • invoice_base_value Monetary
    compute='_compute_amount' help='Invoices value without taxes'
  • invoice_ids Many2many → account.move
    domain=[('move_type', 'in', ['in_invoice', 'in_refund'])] required=True string='Invoices' args: 'account.move'
  • invoice_tax_value Monetary
    compute='_compute_amount' help='default is computed as tax_id from product; is not recomputed based on selected vat'
  • journal_id Many2one → account.journal
    domain="[('type', '=', 'general')]" required=True string='Journal' args: 'account.journal'
  • landed_cost_ids One2many → stock.landed.cost
    readonly=True args: 'stock.landed.cost', 'l10n_ro_account_dvi_id'
  • line_ids One2many → l10n.ro.account.dvi.line
    copy=False string='DVI Lines' args: 'l10n.ro.account.dvi.line', 'dvi_id'
  • name Char
    required=True
  • state Selection
    copy=False default='draft' index=True readonly=True selection=[('draft', 'Draft'), ('posted', 'Posted'), ('reversed', 'Reversed')] string='Status' tracking=True
  • tax_id Many2one → account.tax
    domain="[('type_tax_use', '=', 'purchase')]" help='Is the vat that is paid in custom for products. default is taken from custom duty tax. will put this vat tag in journal entry to find it in reports' required=True args: 'account.tax'
  • total_base_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi' readonly=True
  • total_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi' readonly=True
  • vat_price_difference Monetary
    help='VAT price difference'
  • vat_price_difference_move_id Many2one → account.move
    help='Move for vat price difference' readonly=True args: 'account.move'
  • vat_price_difference_product_id Many2one → product.product
    help='Product for vat price difference' args: 'product.product'
Public methods (10)
  • action_view_landed_costs(self)
  • button_post(self)
  • button_reverse(self)
  • create(self, vals_list)
    @api.model_create_multi
  • create_account_move_dvi(self)
  • default_get(self, fields_list)
    @api.model
  • prepare_dvi_landed_cost_lines(self, product, value, accounts_data)
  • prepare_dvi_landed_cost_vals(self)
  • prepare_dvi_landed_cost_values(self)
  • write(self, vals)

New fields (15)
  • base_amount Float
    compute='_compute_base_vat_amount'
  • company_id Many2one → res.company
    related='dvi_id.company_id' store=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    related='dvi_id.currency_id' args: 'res.currency'
  • dvi_id Many2one → l10n.ro.account.dvi
    index=True ondelete='cascade' required=True string='DVI Ref' args: 'l10n.ro.account.dvi'
  • invoice_id Many2one → account.move
    check_company=True copy=False index=True readonly=True string='DVI Invoice' args: 'account.move'
  • invoice_line_id Many2one → account.move.line
    check_company=True copy=False readonly=True args: 'account.move.line', 'Invoice Line'
  • line_qty Float
    default=1.0 digits='Product Unit of Measure' help='The quantity declared in the DVI.' string='DVI Quantity'
  • name Char
    readonly=True related='invoice_line_id.name'
  • price_subtotal Monetary
    readonly=True related='invoice_line_id.balance'
  • price_unit Float
    readonly=True related='invoice_line_id.price_unit'
  • product_id Many2one
    readonly=True related='invoice_line_id.product_id'
  • product_uom_id Many2one
    readonly=True related='invoice_line_id.product_uom_id'
  • qty Float
    readonly=True related='invoice_line_id.quantity'
  • tax_id Many2one → account.tax
    related='dvi_id.tax_id' args: 'account.tax'
  • vat_amount Float
    compute='_compute_base_vat_amount' string='VAT Amount'
Public methods (0)

No public methods.

New fields (1)
  • l10n_ro_property_vat_price_difference_product_id Many2one → product.product
    domain="[('type', '=', 'service')]" help='This product will be used in create an accounting note for the difference between customs duty and bill' string='Romania - Vat Price Difference Product' args: 'product.product'
Public methods (0)

No public methods.

New fields (6)
  • l10n_ro_account_dvi_id Many2one → l10n.ro.account.dvi
    string='Romania - DVI' args: 'l10n.ro.account.dvi'
  • l10n_ro_base_tax_value Float
    copy=False help='Base VAT amount, calculated from invoice base amount, customs and commission.' args: 'Romania - Base VAT amount'
  • l10n_ro_cost_type Selection
    ondelete={'dvi': 'set default'} selection_add=[('dvi', 'DVI')]
  • l10n_ro_dvi_bill_ids Many2many → account.move
    readonly=True relation='account_move_stock_landed_cost_rel' string='Romania - DVI Invoices' args: 'account.move'
  • l10n_ro_tax_id Many2one → account.tax
    copy=False help='VAT tax for products and customs cost' string='Romania - DVI Tax' args: 'account.tax'
  • l10n_ro_tax_value Float
    copy=False help='VAT amount, calculated from invoice base amount and customs.' args: 'Romania - VAT amount paid at customs'
Public methods (1)
  • button_validate(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-romania
GIT
GIThttps://github.com/OCA/l10n-romania.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-romania/tree/16.0/l10n_ro_dvi
VERSION
VERSION 1.9.0
CATEGORY
CATEGORYLocalization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Terrabit, NextERP Romania
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Terrabit, NextERP Romania
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Mihai Fekete, oca-ci, Dorin Hongu, Stana Natanaela, Larisa-nexterp
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-romania
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-romania:
    - l10n_ro_stock_account_landed_cost
    - l10n_ro_stock_account_tracking
    - l10n_ro_stock_account
    - l10n_ro_config
    - l10n_ro_stock
odoo/odoo:
    - stock_landed_costs
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
    - purchase_stock
    - purchase
    - sale_stock
    - sale
    - sales_team
    - account_payment
    - payment
    - utm
    - stock_dropshipping
    - sale_purchase_stock
    - sale_purchase
    - l10n_ro
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_account_dvi_form DVI l10n.ro.account.dvi form New
view_account_dvi_tree l10n.ro.account.dvi.tree l10n.ro.account.dvi tree New
view_move_form account.move.form account.move div Inherits account.view_move_form
view_stock_landed_cost_form stock.landed.cost.form stock.landed.cost group Inherits l10n_ro_stock_account_landed_cost.view_stock_landed_cost_form
Models touched (6)

New fields (1)
  • l10n_ro_dvi_ids Many2many → stock.landed.cost
    compute='_compute_l10n_ro_dvi_ids' help="DVI's linked to this invoice" string="Romania - DVI's" args: 'stock.landed.cost'
Public methods (1)
  • action_view_dvis(self)

New fields (22)
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True args: 'res.company'
  • currency_id Many2one
    help='Utility field to express amount currency' readonly=True related='company_id.currency_id' store=True
  • customs_commission_product_id Many2one → product.product
    help='Product type service with l10n_ro_custom_commission checed (in purchase tab). Journal entry for commission will be with this product' required=True args: 'product.product'
  • customs_commission_value Monetary
    help='taken from dvi if exists'
  • customs_duty_product_id Many2one → product.product
    help='A product type service with l10n_ro_custom_duty checked (purchase tab). Journal entry for duty will be with this product & default vat for custom duty and invoice - to find it in declaration based on tags' required=True args: 'product.product'
  • customs_duty_tax_value Monetary
    compute='_compute_total_tax_value' help='readonly computed tax from custom_duty_value' readonly=1
  • customs_duty_value Monetary
    help='This is a value from received dvi'
  • date Date
    required=True
  • invoice_base_value Monetary
    compute='_compute_amount' help='Invoices value without taxes'
  • invoice_ids Many2many → account.move
    domain=[('move_type', 'in', ['in_invoice', 'in_refund'])] required=True string='Invoices' args: 'account.move'
  • invoice_tax_value Monetary
    compute='_compute_amount' help='default is computed as tax_id from product; is not recomputed based on selected vat'
  • journal_id Many2one → account.journal
    domain="[('type', '=', 'general')]" readonly=True required=True states={'draft': [('readonly', False)]} string='Journal' args: 'account.journal'
  • landed_cost_ids One2many → stock.landed.cost
    readonly=True args: 'stock.landed.cost', 'l10n_ro_account_dvi_id'
  • line_ids One2many → l10n.ro.account.dvi.line
    copy=False readonly=False states={'done': [('readonly', True)]} string='DVI Lines' args: 'l10n.ro.account.dvi.line', 'dvi_id'
  • name Char
    required=True
  • state Selection
    copy=False default='draft' index=True readonly=True selection=[('draft', 'Draft'), ('posted', 'Posted'), ('reversed', 'Reversed')] string='Status' tracking=True
  • tax_id Many2one → account.tax
    domain="[('type_tax_use', '=', 'purchase')]" help='Is the vat that is paid in custom for products. default is taken from custom duty tax. will put this vat tag in journal entry to find it in reports' required=True args: 'account.tax'
  • total_base_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi' readonly=1
  • total_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi' readonly=1
  • vat_price_difference Monetary
    help='VAT price difference'
  • vat_price_difference_move_id Many2one → account.move
    help='Move for vat price difference' readonly=1 args: 'account.move'
  • vat_price_difference_product_id Many2one → product.product
    help='Product for vat price difference' args: 'product.product'
Public methods (10)
  • action_view_landed_costs(self)
  • button_post(self)
  • button_reverse(self)
  • create(self, vals_list)
    @api.model_create_multi
  • create_account_move_dvi(self)
  • default_get(self, fields_list)
    @api.model
  • prepare_dvi_landed_cost_lines(self, product, value, accounts_data)
  • prepare_dvi_landed_cost_vals(self)
  • prepare_dvi_landed_cost_values(self)
  • write(self, vals)

New fields (15)
  • base_amount Float
    compute='_compute_base_vat_amount'
  • company_id Many2one → res.company
    related='dvi_id.company_id' store=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    related='dvi_id.currency_id' args: 'res.currency'
  • dvi_id Many2one → l10n.ro.account.dvi
    index=True ondelete='cascade' required=True string='DVI Ref' args: 'l10n.ro.account.dvi'
  • invoice_id Many2one → account.move
    check_company=True copy=False index=True readonly=True string='DVI Invoice' args: 'account.move'
  • invoice_line_id Many2one → account.move.line
    check_company=True copy=False readonly=True args: 'account.move.line', 'Invoice Line'
  • line_qty Float
    default=1.0 digits='Product Unit of Measure' help='The quantity declared in the DVI.' string='DVI Quantity'
  • name Char
    readonly=True related='invoice_line_id.name'
  • price_subtotal Monetary
    readonly=True related='invoice_line_id.balance'
  • price_unit Float
    readonly=True related='invoice_line_id.price_unit'
  • product_id Many2one
    readonly=True related='invoice_line_id.product_id'
  • product_uom_id Many2one
    readonly=True related='invoice_line_id.product_uom_id'
  • qty Float
    readonly=True related='invoice_line_id.quantity'
  • tax_id Many2one → account.tax
    related='dvi_id.tax_id' args: 'account.tax'
  • vat_amount Float
    compute='_compute_base_vat_amount' string='VAT Amount'
Public methods (0)

No public methods.

New fields (1)
  • l10n_ro_property_vat_price_difference_product_id Many2one → product.product
    domain="[('type', '=', 'service')]" help='This product will be used in create an accounting note for the difference between customs duty and bill' string='Romania - Vat Price Difference Product' args: 'product.product'
Public methods (0)

No public methods.

New fields (6)
  • l10n_ro_account_dvi_id Many2one → l10n.ro.account.dvi
    string='Romania - DVI' args: 'l10n.ro.account.dvi'
  • l10n_ro_base_tax_value Float
    copy=False help='Base VAT amount, calculated from invoice base amount, customs and commission.' states={'done': [('readonly', True)]} args: 'Romania - Base VAT amount'
  • l10n_ro_cost_type Selection
    ondelete={'dvi': 'set default'} selection_add=[('dvi', 'DVI')]
  • l10n_ro_dvi_bill_ids Many2many → account.move
    readonly=True relation='account_move_stock_landed_cost_rel' string='Romania - DVI Invoices' args: 'account.move'
  • l10n_ro_tax_id Many2one → account.tax
    copy=False help='VAT tax for products and customs cost' states={'done': [('readonly', True)]} string='Romania - DVI Tax' args: 'account.tax'
  • l10n_ro_tax_value Float
    copy=False help='VAT amount, calculated from invoice base amount and customs.' states={'done': [('readonly', True)]} args: 'Romania - VAT amount paid at customs'
Public methods (1)
  • button_validate(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-romania
GIT
GIThttps://github.com/OCA/l10n-romania.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-romania/tree/15.0/l10n_ro_dvi
VERSION
VERSION 1.9.0
CATEGORY
CATEGORYLocalization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Terrabit, NextERP Romania
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Terrabit, NextERP Romania
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Mihai Fekete, oca-ci, Dorin Hongu, Stana Natanaela
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-romania
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-romania:
    - l10n_ro_stock_account
    - l10n_ro_config
    - l10n_ro_stock
odoo/odoo:
    - stock_landed_costs
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
    - purchase_stock
    - purchase
    - sale_stock
    - sale
    - sales_team
    - payment
    - utm
    - l10n_ro
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_account_dvi_form DVI l10n.ro.account.dvi form New
view_account_dvi_tree l10n.ro.account.dvi.tree l10n.ro.account.dvi tree New
view_move_form account.move.form account.move div Inherits account.view_move_form
view_stock_landed_cost_form stock.landed.cost.form stock.landed.cost group Inherits l10n_ro_stock_account.view_stock_landed_cost_form
Models touched (6)

New fields (1)
  • l10n_ro_dvi_ids Many2many → stock.landed.cost
    compute='_compute_l10n_ro_dvi_ids' help="DVI's linked to this invoice" string="Romania - DVI's" args: 'stock.landed.cost'
Public methods (1)
  • action_view_dvis(self)

New fields (22)
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True args: 'res.company'
  • currency_id Many2one
    help='Utility field to express amount currency' readonly=True related='company_id.currency_id' store=True
  • customs_commission_product_id Many2one → product.product
    help='Product type service with l10n_ro_custom_commission checed (in purchase tab). Journal entry for commission will be with this product' required=True args: 'product.product'
  • customs_commission_value Monetary
    help='taken from dvi if exists'
  • customs_duty_product_id Many2one → product.product
    help='A product type service with l10n_ro_custom_duty checked (purchase tab). Journal entry for duty will be with this product & default vat for custom duty and invoice - to find it in declaration based on tags' required=True args: 'product.product'
  • customs_duty_tax_value Monetary
    compute='_compute_total_tax_value' help='readonly computed tax from custom_duty_value' readonly=1
  • customs_duty_value Monetary
    help='This is a value from received dvi'
  • date Date
    required=True
  • invoice_base_value Monetary
    compute='_compute_amount' help='Invoices value without taxes'
  • invoice_ids Many2many → account.move
    domain=[('move_type', 'in', ['in_invoice', 'in_refund'])] required=True string='Invoices' args: 'account.move'
  • invoice_tax_value Monetary
    compute='_compute_amount' help='default is computed as tax_id from product; is not recomputed based on selected vat'
  • journal_id Many2one → account.journal
    domain="[('type', '=', 'general')]" readonly=True required=True states={'draft': [('readonly', False)]} string='Journal' args: 'account.journal'
  • landed_cost_ids One2many → stock.landed.cost
    readonly=True args: 'stock.landed.cost', 'l10n_ro_account_dvi_id'
  • line_ids One2many → l10n.ro.account.dvi.line
    copy=False readonly=False states={'done': [('readonly', True)]} string='DVI Lines' args: 'l10n.ro.account.dvi.line', 'dvi_id'
  • name Char
    required=True
  • state Selection
    copy=False default='draft' index=True readonly=True selection=[('draft', 'Draft'), ('posted', 'Posted'), ('reversed', 'Reversed')] string='Status' tracking=True
  • tax_id Many2one → account.tax
    domain="[('type_tax_use', '=', 'purchase')]" help='Is the vat that is paid in custom for products. default is taken from custom duty tax. will put this vat tag in journal entry to find it in reports' required=True args: 'account.tax'
  • total_base_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi'
  • total_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi'
  • vat_price_difference Monetary
    help='VAT price difference'
  • vat_price_difference_move_id Many2one → account.move
    help='Move for vat price difference' readonly=1 args: 'account.move'
  • vat_price_difference_product_id Many2one → product.product
    help='Product for vat price difference' args: 'product.product'
Public methods (10)
  • action_view_landed_costs(self)
  • button_post(self)
  • button_reverse(self)
  • create(self, vals)
    @api.model
  • create_account_move_dvi(self)
  • default_get(self, fields_list)
    @api.model
  • prepare_dvi_landed_cost_lines(self, product, value, accounts_data)
  • prepare_dvi_landed_cost_vals(self)
  • prepare_dvi_landed_cost_values(self)
  • write(self, vals)

New fields (15)
  • base_amount Float
    compute='_compute_base_vat_amount'
  • company_id Many2one → res.company
    related='dvi_id.company_id' store=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    related='dvi_id.currency_id' args: 'res.currency'
  • dvi_id Many2one → l10n.ro.account.dvi
    index=True ondelete='cascade' required=True string='DVI Ref' args: 'l10n.ro.account.dvi'
  • invoice_id Many2one → account.move
    check_company=True copy=False index=True readonly=True string='DVI Invoice' args: 'account.move'
  • invoice_line_id Many2one → account.move.line
    check_company=True copy=False readonly=True args: 'account.move.line', 'Invoice Line'
  • line_qty Float
    default=1.0 digits='Product Unit of Measure' help='The quantity declared in the DVI.' string='DVI Quantity'
  • name Char
    readonly=True related='invoice_line_id.name'
  • price_subtotal Monetary
    readonly=True related='invoice_line_id.balance'
  • price_unit Float
    readonly=True related='invoice_line_id.price_unit'
  • product_id Many2one
    readonly=True related='invoice_line_id.product_id'
  • product_uom_id Many2one
    readonly=True related='invoice_line_id.product_uom_id'
  • qty Float
    readonly=True related='invoice_line_id.quantity'
  • tax_id Many2one → account.tax
    related='dvi_id.tax_id' args: 'account.tax'
  • vat_amount Float
    compute='_compute_base_vat_amount'
Public methods (0)

No public methods.

New fields (1)
  • l10n_ro_property_vat_price_difference_product_id Many2one → product.product
    domain="[('type', '=', 'service')]" help='This product will be used in create an accounting note for the difference between customs duty and bill' string='Romania - Vat Price Difference Product' args: 'product.product'
Public methods (0)

No public methods.

New fields (6)
  • l10n_ro_account_dvi_id Many2one → l10n.ro.account.dvi
    string='Romania - DVI' args: 'l10n.ro.account.dvi'
  • l10n_ro_base_tax_value Float
    copy=False help='Base VAT amount, calculated from invoice base amount, customs and commission.' states={'done': [('readonly', True)]} args: 'Romania - Base VAT amount'
  • l10n_ro_cost_type Selection
    ondelete={'dvi': 'set default'} selection_add=[('dvi', 'DVI')]
  • l10n_ro_dvi_bill_ids Many2many → account.move
    readonly=True relation='account_move_stock_landed_cost_rel' string='Romania - DVI Invoices' args: 'account.move'
  • l10n_ro_tax_id Many2one → account.tax
    copy=False help='VAT tax for products and customs cost' states={'done': [('readonly', True)]} string='Romania - DVI Tax' args: 'account.tax'
  • l10n_ro_tax_value Float
    copy=False help='VAT amount, calculated from invoice base amount and customs.' states={'done': [('readonly', True)]} args: 'Romania - VAT amount paid at customs'
Public methods (1)
  • button_validate(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-romania
GIT
GIThttps://github.com/OCA/l10n-romania.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-romania/tree/14.0/l10n_ro_dvi
VERSION
VERSION 1.16.0
CATEGORY
CATEGORYLocalization
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Terrabit, NextERP Romania
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Terrabit, NextERP Romania
COMMITTERS
COMMITTERSFekete Mihai, GitHub, Weblate, OCA-git-bot, Mihai Fekete, oca-ci, Cojocaru Marcel, Stana Natanaela
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-romania
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:51
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/l10n-romania:
    - l10n_ro_stock_account
    - l10n_ro_config
    - l10n_ro_stock
odoo/odoo:
    - stock_landed_costs
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
    - purchase_stock
    - purchase
    - sale_stock
    - sale
    - sales_team
    - payment
    - utm
    - l10n_ro
    - base_vat
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_account_dvi_form DVI l10n.ro.account.dvi form New
view_account_dvi_tree l10n.ro.account.dvi.tree l10n.ro.account.dvi tree New
view_move_form account.move.form account.move div Inherits account.view_move_form
view_stock_landed_cost_form stock.landed.cost.form stock.landed.cost group Inherits l10n_ro_stock_account.view_stock_landed_cost_form
Models touched (6)

New fields (1)
  • l10n_ro_dvi_ids Many2many → stock.landed.cost
    compute='_compute_l10n_ro_dvi_ids' help="DVI's linked to this invoice" string="Romania - DVI's" args: 'stock.landed.cost'
Public methods (1)
  • action_view_dvis(self)

New fields (22)
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True args: 'res.company'
  • currency_id Many2one
    help='Utility field to express amount currency' readonly=True related='company_id.currency_id' store=True
  • customs_commission_product_id Many2one → product.product
    help='Product type service with l10n_ro_custom_commission checed (in purchase tab). Journal entry for commission will be with this product' required=True args: 'product.product'
  • customs_commission_value Monetary
    help='taken from dvi if exists'
  • customs_duty_product_id Many2one → product.product
    help='A product type service with l10n_ro_custom_duty checked (purchase tab). Journal entry for duty will be with this product & default vat for custom duty and invoice - to find it in declaration based on tags' required=True args: 'product.product'
  • customs_duty_tax_value Monetary
    compute='_compute_total_tax_value' help='readonly computed tax from custom_duty_value' readonly=1
  • customs_duty_value Monetary
    help='This is a value from received dvi'
  • date Date
    required=True
  • invoice_base_value Monetary
    compute='_compute_amount' help='Invoices value without taxes'
  • invoice_ids Many2many → account.move
    domain=[('move_type', 'in', ['in_invoice', 'in_refund'])] required=True string='Invoices' args: 'account.move'
  • invoice_tax_value Monetary
    compute='_compute_amount' help='default is computed as tax_id from product; is not recomputed based on selected vat'
  • journal_id Many2one → account.journal
    domain="[('type', '=', 'general')]" readonly=True required=True states={'draft': [('readonly', False)]} string='Journal' args: 'account.journal'
  • landed_cost_ids One2many → stock.landed.cost
    readonly=True args: 'stock.landed.cost', 'l10n_ro_account_dvi_id'
  • line_ids One2many → l10n.ro.account.dvi.line
    copy=False readonly=False states={'done': [('readonly', True)]} string='DVI Lines' args: 'l10n.ro.account.dvi.line', 'dvi_id'
  • name Char
    required=True
  • state Selection
    copy=False default='draft' index=True readonly=True selection=[('draft', 'Draft'), ('posted', 'Posted'), ('reversed', 'Reversed')] string='Status' tracking=True
  • tax_id Many2one → account.tax
    domain="[('type_tax_use', '=', 'purchase')]" help='Is the vat that is paid in custom for products. default is taken from custom duty tax. will put this vat tag in journal entry to find it in reports' required=True args: 'account.tax'
  • total_base_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi'
  • total_tax_value Monetary
    compute='_compute_total_tax_value' help='Is readonly sum of product tax and custom tax.This must be the tax value that you have on dvi'
  • vat_price_difference Monetary
    help='VAT price difference'
  • vat_price_difference_move_id Many2one → account.move
    help='Move for vat price difference' readonly=1 args: 'account.move'
  • vat_price_difference_product_id Many2one → product.product
    help='Product for vat price difference' args: 'product.product'
Public methods (10)
  • action_view_landed_costs(self)
  • button_post(self)
  • button_reverse(self)
  • create(self, vals)
    @api.model
  • create_account_move_dvi(self)
  • default_get(self, fields_list)
    @api.model
  • prepare_dvi_landed_cost_lines(self, product, value, accounts_data)
  • prepare_dvi_landed_cost_vals(self)
  • prepare_dvi_landed_cost_values(self)
  • write(self, vals)

New fields (15)
  • base_amount Float
    compute='_compute_base_vat_amount'
  • company_id Many2one → res.company
    related='dvi_id.company_id' store=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    related='dvi_id.currency_id' args: 'res.currency'
  • dvi_id Many2one → l10n.ro.account.dvi
    index=True ondelete='cascade' required=True string='DVI Ref' args: 'l10n.ro.account.dvi'
  • invoice_id Many2one → account.move
    check_company=True copy=False index=True readonly=True string='DVI Invoice' args: 'account.move'
  • invoice_line_id Many2one → account.move.line
    check_company=True copy=False readonly=True args: 'account.move.line', 'Invoice Line'
  • line_qty Float
    default=1.0 digits='Product Unit of Measure' help='The quantity declared in the DVI.' string='DVI Quantity'
  • name Char
    readonly=True related='invoice_line_id.name'
  • price_subtotal Monetary
    readonly=True related='invoice_line_id.balance'
  • price_unit Float
    readonly=True related='invoice_line_id.price_unit'
  • product_id Many2one
    readonly=True related='invoice_line_id.product_id'
  • product_uom_id Many2one
    readonly=True related='invoice_line_id.product_uom_id'
  • qty Float
    readonly=True related='invoice_line_id.quantity'
  • tax_id Many2one → account.tax
    related='dvi_id.tax_id' args: 'account.tax'
  • vat_amount Float
    compute='_compute_base_vat_amount'
Public methods (0)

No public methods.

New fields (1)
  • l10n_ro_property_vat_price_difference_product_id Many2one → product.product
    domain="[('type', '=', 'service')]" help='This product will be used in create an accounting note for the difference between customs duty and bill' string='Romania - Vat Price Difference Product' args: 'product.product'
Public methods (0)

No public methods.

New fields (6)
  • l10n_ro_account_dvi_id Many2one → l10n.ro.account.dvi
    string='Romania - DVI' args: 'l10n.ro.account.dvi'
  • l10n_ro_base_tax_value Float
    copy=False help='Base VAT amount, calculated from invoice base amount, customs and commission.' states={'done': [('readonly', True)]} args: 'Romania - Base VAT amount'
  • l10n_ro_cost_type Selection
    ondelete={'dvi': 'set default'} selection_add=[('dvi', 'DVI')]
  • l10n_ro_dvi_bill_ids Many2many → account.move
    readonly=True relation='account_move_stock_landed_cost_rel' string='Romania - DVI Invoices' args: 'account.move'
  • l10n_ro_tax_id Many2one → account.tax
    copy=False help='VAT tax for products and customs cost' states={'done': [('readonly', True)]} string='Romania - DVI Tax' args: 'account.tax'
  • l10n_ro_tax_value Float
    copy=False help='VAT amount, calculated from invoice base amount and customs.' states={'done': [('readonly', True)]} args: 'Romania - VAT amount paid at customs'
Public methods (1)
  • button_validate(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/l10n-romania
GIT
GIThttps://github.com/OCA/l10n-romania.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-romania/tree/13.0/l10n_ro_dvi
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYWarehouse
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Terrabit
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Terrabit
COMMITTERS
COMMITTERSOCA-git-bot, Mihai Fekete, Dorin Hongu
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-romania
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - account
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - sale
    - sales_team
    - payment
    - utm
    - l10n_ro
    - base_vat
    - purchase_stock
    - purchase
    - stock_landed_costs
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
view_account_invoice_dvi_form DVI account.invoice.dvi form New
view_move_form account.move.form account.move button Inherits account.view_move_form
view_stock_landed_cost_form stock.landed.cost.form stock.landed.cost notebook Inherits stock_landed_costs.view_stock_landed_cost_form
Models touched (3)

New fields (6)
  • currency_id Many2one → res.currency
    default=<expr> args: 'res.currency'
  • custom_duty Monetary
    string='Custom Duty'
  • customs_commission Monetary
    string='Customs Commission'
  • date Date
    args: 'Date'
  • tax_id Many2one → account.tax
    args: 'account.tax'
  • tax_value Monetary
Public methods (4)
  • default_get(self, fields_list)
    @api.model
  • do_create_dvi(self)
  • get_custom_duty_product(self)
    @api.model
  • get_customs_commission_product(self)
    @api.model

New fields (1)
  • dvi_id Many2one → stock.landed.cost
    string='DVI' args: 'stock.landed.cost'
Public methods (1)
  • button_dvi(self)

New fields (3)
  • landed_type Selection
    default='standard' args: [('standard', 'Standard'), ('dvi', 'DVI')]
  • tax_id Many2one → account.tax
    args: 'account.tax'
  • tax_value Float
    args: 'VAT paid at customs'
Public methods (1)
  • button_validate(self)