Repository: OCA/intrastat-extrastat (language: python)

Issue:
[17.0][MIG] intrastat_product
Migration from v16 PR https://github.com/OCA/intrastat-extrastat/pull/260

There are still 6 ruff errors "B023 Function definition does not bind loop variable `rec`", but I'm not sure if they are relevant or not.
14.0 mig : invoice domain should be based on fiscal position in stead of country
Up till now the default domain to select intrastat transactions is based upon invoices to/from EU countries.
I propose that we change in 14.0 the logic to be based upon the "Intra EU" fiscal position.

On the Belgian market transactions subject to the 'intrastat' declaration are also subject to the 'intracommunity' tax declaration.
In the 13.0 version of the Belgium localisation module I already replaced the domain query, cf. 
https://github.com/Noviat/noviat-apps/blob/012c9a254b101c405126b1c0ce5276a0a9c16d9e/l10n_be_intrastat_product/models/l10n_be_intrastat_product_declaration.py#L219

But since these rules are decided on an european level, this should be applicable for all EU countries.
As a consequence I propose that for the 14.0 migration we add an 'intrastat' boolean to the fiscal position and base the domain on invoices with fiscal positions marked as 'intrastat'. In the localisation modules we can add the logic to set this flag automatically on the standard Intra EU fiscal position.

To give a concrete example why the country tabel is wrong:
If you ship goods to a customer without VAT number in an EU country that this shipment must not be included in the intrastat declaration.

[14.0][IMP] intrastat_*: Improve tests and code
- [x] No breaking changes
- [x] Rewrite tests to help test extensions
- [x] Move common code. Some code was called in intrastat_base making reference to inexistent fields in Abstract (company_id, company_country_code, state, year, month).


Discussion / hints:

Fix patch:
diff --git a/intrastat_product/README.rst b/intrastat_product/README.rst
new file mode 100644
index 000000000..c3b644880
--- /dev/null
+++ b/intrastat_product/README.rst
@@ -0,0 +1,181 @@
+=================
+Intrastat Product
+=================
+
+.. 
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !! This file is generated by oca-gen-addon-readme !!
+   !! changes will be overwritten.                   !!
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+   !! source digest: sha256:4fd233db64fe121941a45cbac26752c2d2e95687fc4f49c2f5d92f48f95c27c2
+   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
+    :target: https://odoo-community.org/page/development-status
+    :alt: Beta
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+    :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+    :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fintrastat--extrastat-lightgray.png?logo=github
+    :target: https://github.com/OCA/intrastat-extrastat/tree/17.0/intrastat_product
+    :alt: OCA/intrastat-extrastat
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+    :target: https://translation.odoo-community.org/projects/intrastat-extrastat-17-0/intrastat-extrastat-17-0-intrastat_product
+    :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
+    :target: https://runboat.odoo-community.org/builds?repo=OCA/intrastat-extrastat&target_branch=17.0
+    :alt: Try me on Runboat
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module contains common objects and fields for the Intrastat Product
+reporting.
+
+It should be used in combination with country-specific Intrastat Product
+reporting modules such as:
+
+-  *l10n_fr_intrastat_product*: the module for the *Déclaration
+   d'Echange de Biens* (DEB) for France
+-  *l10n_be_intrastat_product*: the module for the Intrastat Product
+   Declaration for Belgium
+
+These country-specific modules can be found in the OCA localization for
+those countries.
+
+**Table of contents**
+
+.. contents::
+   :local:
+
+Installation
+============
+
+This module is NOT compatible with the *account_intrastat* module from
+Odoo Enterprise.
+
+Configuration
+=============
+
+By default the intrastat declaration is generated based upon the product
+record master data. Hence unexpected results may occur in case this
+master data is not accurate, e.g. wrong or missing weight, country of
+origin, ...
+
+This can be corrected by changing the appropriate fields when analysing
+the intrastat declaration but this can be challenging in case of large
+transaction volumes and especially in the specific use case where the
+product weight cannot be encoded correctly on the product records (e.g.
+products with variable weight).
+
+It is possible to allow encoding the intrastat transaction details on
+the purchase/sale invoice via the
+"intrastat_product.group_invoice_intrastat_transaction_detail" usability
+group.
+
+Usage
+=====
+
+This module is used in combination with the country-specific
+localization module(s).
+
+**Coding guidelines for localization module:**
+
+We recommend to start by copying an existing module, e.g.
+l10n_be_intrastat_product and adapt the code for the specific needs of
+your country.
+
+-  Declaration Object
+
+   Create a new class as follows:
+
+   .. code:: python
+
+      class L10nCcIntrastatProductDeclaration(models.Model):
+          _name = 'l10n.cc.intrastat.product.declaration'
+          _description = "Intrastat Product Declaration for YourCountry"
+          _inherit = ['intrastat.product.declaration', 'mail.thread']
+
+   whereby cc = your country code
+
+-  Computation & Declaration Lines
+
+   Create also new objects inheriting from the Computation and
+   Declaration Line Objects so that you can add methods or customise the
+   methods from the base modules (make a PR when the customization or
+   new method is required for multiple countries).
+
+   Adapt also the parent_id fields of the newly created objects (cf.
+   l10n_be_intrastat_product as example).
+
+-  XML Files: Menu, Action, Views
+
+   Cf. l10n_be_istrastat_product as example, replace "be" by your
+   Country Code.
+
+**Other functionality added by this module:**
+
+-  Compute the Intrastat Lines in an invoice. For this, your user needs
+   to be in the "Technical / Invoice Intrastat Transaction Details"
+   group. Go to the "Intrastat transaction details" tab and press
+   **Compute**
+
+Known issues / Roadmap
+======================
+
+The declaration is based upon the invoices of the corresponding tax
+declaration period.
+
+An option to generate the intrastat declaration based upon the dates of
+the physical movements of goods is currently not available.
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues <https://github.com/OCA/intrastat-extrastat/issues>`_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+`feedback <https://github.com/OCA/intrastat-extrastat/issues/new?body=module:%20intrastat_product%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+-------
+
+* ACSONE SA/NV
+* brain-tec AG
+* Akretion
+* Noviat
+
+Contributors
+------------
+
+-  Alexis de Lattre, Akretion <alexis.delattre@akretion.com>
+
+-  Luc De Meyer, Noviat <info@noviat.com>
+
+-  Denis Roussel <denis.roussel@acsone.eu>
+
+-  Tecnativa <`www.tecnativa.com <http://www.tecnativa.com>`__>:
+
+      -  João Marques
+      -  Víctor Martínez
+
+Maintainers
+-----------
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+   :alt: Odoo Community Association
+   :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/intrastat-extrastat <https://github.com/OCA/intrastat-extrastat/tree/17.0/intrastat_product>`_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/intrastat_product/__init__.py b/intrastat_product/__init__.py
new file mode 100644
index 000000000..c12041911
--- /dev/null
+++ b/intrastat_product/__init__.py
@@ -0,0 +1,4 @@
+from . import models
+from . import report
+from . import wizards
+from .hooks import pre_init_hook
diff --git a/intrastat_product/__manifest__.py b/intrastat_product/__manifest__.py
new file mode 100644
index 000000000..891d3ee28
--- /dev/null
+++ b/intrastat_product/__manifest__.py
@@ -0,0 +1,50 @@
+# Copyright 2011-2020 Akretion (http://www.akretion.com)
+# Copyright 2009-2020 Noviat (http://www.noviat.com)
+# Copyright 2018-2020 brain-tec AG (http://www.braintec-group.com)
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# @author Luc de Meyer <info@noviat.com>
+# @author Kumar Aberer <kumar.aberer@braintec-group.com>
+
+{
+    "name": "Intrastat Product",
+    "version": "17.0.1.0.0",
+    "category": "Intrastat",
+    "license": "AGPL-3",
+    "summary": "Base module for Intrastat Product",
+    "author": "ACSONE SA/NV, brain-tec AG, Akretion, Noviat"
+    ", Odoo Community Association (OCA)",
+    "website": "https://github.com/OCA/intrastat-extrastat",
+    "depends": [
+        "intrastat_base",
+        "product_harmonized_system",
+        "sale_stock",
+        "purchase_stock",
+        "report_xlsx_helper",
+    ],
+    "excludes": ["account_intrastat"],
+    "external_dependencies": {"python": ["python-stdnum>=1.16"]},
+    "data": [
+        "security/intrastat_security.xml",
+        "security/ir.model.access.csv",
+        "report/report.xml",
+        "views/hs_code.xml",
+        "views/intrastat_region.xml",
+        "views/intrastat_unit.xml",
+        "views/intrastat_transaction.xml",
+        "views/intrastat_transport_mode.xml",
+        "views/intrastat_product_declaration.xml",
+        "views/res_config_settings.xml",
+        "views/res_partner_view.xml",
+        "views/account_move.xml",
+        "views/sale_order.xml",
+        "views/stock_warehouse.xml",
+        "views/report_invoice.xml",
+        "wizards/intrastat_result_view.xml",
+        "data/intrastat_transport_mode.xml",
+        "data/intrastat_unit.xml",
+        "data/intrastat_transaction.xml",
+    ],
+    "demo": ["demo/intrastat_demo.xml"],
+    "installable": True,
+    "pre_init_hook": "pre_init_hook",
+}
diff --git a/intrastat_product/data/intrastat_transaction.xml b/intrastat_product/data/intrastat_transaction.xml
new file mode 100644
index 000000000..98b454562
--- /dev/null
+++ b/intrastat_product/data/intrastat_transaction.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo noupdate="1">
+    <!-- Source: https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32020R1197&from=EN#d1e32-7-1
+         ANNEX I
+         Part C. Classifications
+         Table 1. Nature of transaction breakdown
+    -->
+    <record id="intrastat_transaction_11" model="intrastat.transaction">
+        <field name="code">11</field>
+        <field name="description">B2B sale/purchase</field>
+    </record>
+    <record id="intrastat_transaction_12" model="intrastat.transaction">
+        <field name="code">12</field>
+        <field name="description">B2C sale/purchase (incl. distance sale)</field>
+    </record>
+    <record id="intrastat_transaction_21" model="intrastat.transaction">
+        <field name="code">21</field>
+        <field name="description">Return of goods (free of charge)</field>
+    </record>
+    <record id="intrastat_transaction_22" model="intrastat.transaction">
+        <field name="code">22</field>
+        <field
+            name="description"
+        >Replacement for returned goods (free of charge)</field>
+    </record>
+    <record id="intrastat_transaction_23" model="intrastat.transaction">
+        <field name="code">23</field>
+        <field
+            name="description"
+        >Replacement (e.g. under warranty) for goods not being returned</field>
+    </record>
+    <record id="intrastat_transaction_31" model="intrastat.transaction">
+        <field name="code">31</field>
+        <field
+            name="description"
+        >Movements to/from a warehouse (excluding call-off and consignment stock)</field>
+    </record>
+    <record id="intrastat_transaction_32" model="intrastat.transaction">
+        <field name="code">32</field>
+        <field
+            name="description"
+        >Supply for sale on approval or after trial (including call-off and consignment stock)</field>
+    </record>
+    <record id="intrastat_transaction_33" model="intrastat.transaction">
+        <field name="code">33</field>
+        <field name="description">Financial leasing</field>
+    </record>
+    <record id="intrastat_transaction_34" model="intrastat.transaction">
+        <field name="code">34</field>
+        <field
+            name="description"
+        >Transactions involving transfer of ownership without financial compensation</field>
+    </record>
+    <record id="intrastat_transaction_41" model="intrastat.transaction">
+        <field name="code">41</field>
+        <field
+            name="description"
+        >Transactions with a view to processing under contract (no change of ownership). Goods expected to return to the initial Member State/country of export</field>
+    </record>
+    <record id="intrastat_transaction_42" model="intrastat.transaction">
+        <field name="code">42</field>
+        <field
+            name="description"
+        >Transactions with a view to processing under contract (no change of ownership). Goods not expected to return to the initial Member State/country of export</field>
+    </record>
+    <record id="intrastat_transaction_51" model="intrastat.transaction">
+        <field name="code">51</field>
+        <field
+            name="description"
+        >Transactions following processing under contract (not involving change of ownership). Goods returning to the initial Member State/country of export.</field>
+    </record>
+    <record id="intrastat_transaction_52" model="intrastat.transaction">
+        <field name="code">52</field>
+        <field
+            name="description"
+        >Transactions following processing under contract (not involving change of ownership). Goods not returning to the initial Member State/country of export.</field>
+    </record>
+    <!-- intrastat.transaction that start with "6" are
+         "Particular transactions recorded for national purposes"
+        so they should be supplied by coutry-specific modules -->
+    <record id="intrastat_transaction_71" model="intrastat.transaction">
+        <field name="code">71</field>
+        <field
+            name="description"
+        >Release of goods for free circulation in a Member State with a subsequent export to another Member State</field>
+    </record>
+    <record id="intrastat_transaction_72" model="intrastat.transaction">
+        <field name="code">72</field>
+        <field
+            name="description"
+        >Transportation of goods from one Member State to another Member State to place the goods under the export procedure</field>
+    </record>
+    <record id="intrastat_transaction_80" model="intrastat.transaction">
+        <field name="code">80</field>
+        <field
+            name="description"
+        >Transactions involving the supply of building materials and technical equipment under a general construction or civil engineering contract for which no separate invoicing of the goods is required and an invoice for the total contract is issued</field>
+    </record>
+    <record id="intrastat_transaction_91" model="intrastat.transaction">
+        <field name="code">91</field>
+        <field
+            name="description"
+        >Hire, loan, and operational leasing longer than 24 months</field>
+    </record>
+    <record id="intrastat_transaction_99" model="intrastat.transaction">
+        <field name="code">99</field>
+        <field name="description">Other</field>
+    </record>
+
+</odoo>
diff --git a/intrastat_product/data/intrastat_transport_mode.xml b/intrastat_product/data/intrastat_transport_mode.xml
new file mode 100644
index 000000000..002a1f1f4
--- /dev/null
+++ b/intrastat_product/data/intrastat_transport_mode.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo noupdate="1">
+    <record id="intrastat_transport_1" model="intrastat.transport_mode">
+        <field name="code">1</field>
+        <field name="name">Sea</field>
+        <field
+            name="description"
+        >Sea Transport (including wagons, motor vehicles, trailers, semi-trailers and lighters on board of a ship)</field>
+    </record>
+    <record id="intrastat_transport_2" model="intrastat.transport_mode">
+        <field name="code">2</field>
+        <field name="name">Rail</field>
+        <field
+            name="description"
+        >Railway transport (including lorries on railway wagons)</field>
+    </record>
+    <record id="intrastat_transport_3" model="intrastat.transport_mode">
+        <field name="code">3</field>
+        <field name="name">Road</field>
+        <field name="description">Road Transport</field>
+    </record>
+    <record id="intrastat_transport_4" model="intrastat.transport_mode">
+        <field name="code">4</field>
+        <field name="name">Air</field>
+        <field name="description">Air Transport</field>
+    </record>
+    <record id="intrastat_transport_5" model="intrastat.transport_mode">
+        <field name="code">5</field>
+        <field name="name">Post</field>
+        <field name="description">Postal consignments</field>
+    </record>
+    <record id="intrastat_transport_7" model="intrastat.transport_mode">
+        <field name="code">7</field>
+        <field name="name">Fixed installations</field>
+        <field
+            name="description"
+        >Fixed transport installations (e.g. pipelines, high-tension cables)</field>
+    </record>
+    <record id="intrastat_transport_8" model="intrastat.transport_mode">
+        <field name="code">8</field>
+        <field name="name">Inland waterway</field>
+        <field name="description">Inland waterway transport</field>
+    </record>
+    <record id="intrastat_transport_9" model="intrastat.transport_mode">
+        <field name="code">9</field>
+        <field name="name">Own propulsion</field>
+        <field
+            name="description"
+        >Own propulsion (imported or exported means of transport crossing the border under their own power, e.g. aircraft, lorries, boats, etc.)</field>
+    </record>
+    <!-- Set default value to Road trp on main company -->
+    <record id="base.main_company" model="res.company">
+        <field name="intrastat_transport_id" ref="intrastat_transport_3" />
+    </record>
+</odoo>
diff --git a/intrastat_product/data/intrastat_unit.xml b/intrastat_product/data/intrastat_unit.xml
new file mode 100644
index 000000000..bf67d397b
--- /dev/null
+++ b/intrastat_product/data/intrastat_unit.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo noupdate="1">
+    <!-- Extracted from the Official Journal of the European Union -->
+    <record id="intrastat_unit_c_k" model="intrastat.unit">
+        <field name="name">c/k</field>
+        <field name="description">Carats - 1 metric carat = 2 × 10exp(–4) kg</field>
+    </record>
+    <record id="intrastat_unit_ce_el" model="intrastat.unit">
+        <field name="name">ce/el</field>
+        <field name="description">Number of cells</field>
+    </record>
+    <record id="intrastat_unit_ct_l" model="intrastat.unit">
+        <field name="name">ct/l</field>
+        <field name="description">Carrying capacity in tonnes</field>
+    </record>
+    <record id="intrastat_unit_g" model="intrastat.unit">
+        <field name="name">g</field>
+        <field name="description">Gram</field>
+        <field name="uom_id" ref="uom.product_uom_gram" />
+    </record>
+    <record id="intrastat_unit_gi_FS" model="intrastat.unit">
+        <field name="name">gi F/S</field>
+        <field name="description">Gram of fissile isotopes</field>
+    </record>
+    <record id="intrastat_unit_kg_H2O2" model="intrastat.unit">
+        <field name="name">kg H2O2</field>
+        <field name="description">Kilogram of hydrogen peroxide</field>
+    </record>
+    <record id="intrastat_unit_kg_K2O" model="intrastat.unit">
+        <field name="name">kg K2O</field>
+        <field name="description">Kilogram of potassium oxide</field>
+    </record>
+    <record id="intrastat_unit_kg_KOH" model="intrastat.unit">
+        <field name="name">kg KOH</field>
+        <field
+            name="description"
+        >Kilogram of potassium hydroxide (caustic potash)</field>
+    </record>
+    <record id="intrastat_unit_kg_ma" model="intrastat.unit">
+        <field name="name">kg met.am.</field>
+        <field name="description">Kilogram of methylamines</field>
+    </record>
+    <record id="intrastat_unit_kg_N" model="intrastat.unit">
+        <field name="name">kg N</field>
+        <field name="description">Kilogram of nitrogen</field>
+    </record>
+    <record id="intrastat_unit_kg_NaOH" model="intrastat.unit">
+        <field name="name">kg NaOH</field>
+        <field name="description">Kilogram of sodium hydroxide (caustic soda)</field>
+    </record>
+    <record id="intrastat_unit_kg_net_eda" model="intrastat.unit">
+        <field name="name">kg/net eda</field>
+        <field name="description">Kilogram drained net weight</field>
+    </record>
+    <record id="intrastat_unit_kg_P2O5" model="intrastat.unit">
+        <field name="name">kg P2O5</field>
+        <field name="description">Kilogram of diphosphorus pentaoxide</field>
+    </record>
+    <record id="intrastat_unit_kg_90_pct_sdt" model="intrastat.unit">
+        <field name="name">kg 90 pct sdt</field>
+        <field name="description">Kilogram of substance 90 % dry</field>
+    </record>
+    <record id="intrastat_unit_kg_U" model="intrastat.unit">
+        <field name="name">kg U</field>
+        <field name="description">Kilogram of uranium</field>
+    </record>
+    <record id="intrastat_unit_1000_kWh" model="intrastat.unit">
+        <field name="name">1000 kWh</field>
+        <field name="description">Thousand kilowatt hours</field>
+    </record>
+    <record id="intrastat_unit_l" model="intrastat.unit">
+        <field name="name">l</field>
+        <field name="description">Litre</field>
+        <field name="uom_id" ref="uom.product_uom_litre" />
+    </record>
+    <record id="intrastat_unit_1000l" model="intrastat.unit">
+        <field name="name">1000 l</field>
+        <field name="description">Thousand litres</field>
+    </record>
+    <record id="intrastat_unit_l_alc_100_pct" model="intrastat.unit">
+        <field name="name">l alc. 100 pct</field>
+        <field name="description">Litre pure (100 %) alcohol</field>
+    </record>
+    <record id="intrastat_unit_m" model="intrastat.unit">
+        <field name="name">m</field>
+        <field name="description">Metre</field>
+        <field name="uom_id" ref="uom.product_uom_meter" />
+    </record>
+    <record id="intrastat_unit_m2" model="intrastat.unit">
+        <field name="name">m2</field>
+        <field name="description">Square metre</field>
+    </record>
+    <record id="intrastat_unit_m3" model="intrastat.unit">
+        <field name="name">m3</field>
+        <field name="description">Cubic metre</field>
+    </record>
+    <record id="intrastat_unit_1000m3" model="intrastat.unit">
+        <field name="name">1000 m3</field>
+        <field name="description">Thousand cubic metres</field>
+    </record>
+    <record id="intrastat_unit_pa" model="intrastat.unit">
+        <field name="name">pa</field>
+        <field name="description">Number of pairs</field>
+    </record>
+    <record id="intrastat_unit_pce" model="intrastat.unit">
+        <field name="name">items</field>
+        <field name="description">Number of items</field>
+        <field name="uom_id" ref="uom.product_uom_unit" />
+    </record>
+    <record id="intrastat_unit_100pce" model="intrastat.unit">
+        <field name="name">100 items</field>
+        <field name="description">Hundred items</field>
+    </record>
+    <record id="intrastat_unit_1000pce" model="intrastat.unit">
+        <field name="name">1000 items</field>
+        <field name="description">Thousand items</field>
+    </record>
+    <record id="intrastat_unit_TJ" model="intrastat.unit">
+        <field name="name">TJ</field>
+        <field name="description">Terajoule (gross calorific value)</field>
+    </record>
+</odoo>
diff --git a/intrastat_product/demo/intrastat_demo.xml b/intrastat_product/demo/intrastat_demo.xml
new file mode 100644
index 000000000..f37df192d
--- /dev/null
+++ b/intrastat_product/demo/intrastat_demo.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  © 2011-2017 Akretion (http://www.akretion.com/)
+  @author Alexis de Lattre <alexis.delattre@akretion.com>
+  License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+-->
+<odoo noupdate="1">
+    <record id="product_harmonized_system.84715000" model="hs.code">
+        <field name="intrastat_unit_id" ref="intrastat_unit_pce" />
+    </record>
+    <record id="product_harmonized_system.84717050" model="hs.code">
+        <field name="intrastat_unit_id" ref="intrastat_unit_pce" />
+    </record>
+    <record id="base.main_company" model="res.company">
+        <field name="intrastat_arrivals">extended</field>
+        <field name="intrastat_dispatches">extended</field>
+        <field name="incoterm_id" ref="account.incoterm_DAP" />
+        <field name="intrastat_transport_id" ref="intrastat_transport_3" />
+    </record>
+</odoo>
diff --git a/intrastat_product/hooks.py b/intrastat_product/hooks.py
new file mode 100644
index 000000000..c295c3c57
--- /dev/null
+++ b/intrastat_product/hooks.py
@@ -0,0 +1,35 @@
+# Copyright 2022 Stefan Rijnhart <stefan@opener.amsterdam>
+# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+import logging
+
+
+def pre_init_hook(env):
+    """Prepopulate stored computed fields for faster installation"""
+    logger = logging.getLogger(__name__)
+    logger.info("Prepopulating stored computed fields")
+    env.cr.execute(
+        """
+        alter table account_move
+        add column if not exists src_dest_country_id integer;
+        """
+    )
+    env.cr.execute(
+        """
+        with countries as (
+            select am.id as move_id,
+            coalesce(
+                rps.country_id,
+                rp.country_id,
+                rpc.country_id
+            ) as country_id
+            from account_move am
+            left join res_partner rps on rps.id = am.partner_shipping_id
+            join res_partner rp on rp.id = am.partner_id
+            join res_company rc on rc.id = am.company_id
+            join res_partner rpc on rpc.id = rc.partner_id
+        )
+        update account_move am
+        set src_dest_country_id = countries.country_id
+        from countries where am.id = countries.move_id;
+        """
+    )
diff --git a/intrastat_product/i18n/es.po b/intrastat_product/i18n/es.po
new file mode 100644
index 000000000..0786c741b
--- /dev/null
+++ b/intrastat_product/i18n/es.po
@@ -0,0 +1,2129 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# 	* intrastat_product
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 14.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-11-09 08:42+0000\n"
+"PO-Revision-Date: 2023-11-27 21:33+0000\n"
+"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
+"Language-Team: none\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "%(invoice)s line %(line_nbr)s"
+msgstr "%(invoice)s línea %(line_nbr)s"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid ""
+"(Re)compute the intrastat transaction details from the product master data."
+msgstr ""
+"(Re)calcular los detalles de la transacción intrastat a partir de los datos "
+"maestros del producto."
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__01
+msgid "01"
+msgstr "01"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__02
+msgid "02"
+msgstr "02"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__03
+msgid "03"
+msgstr "03"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__04
+msgid "04"
+msgstr "04"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__05
+msgid "05"
+msgstr "05"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__06
+msgid "06"
+msgstr "06"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__07
+msgid "07"
+msgstr "07"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__08
+msgid "08"
+msgstr "08"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__09
+msgid "09"
+msgstr "09"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__10
+msgid "10"
+msgstr "10"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__11
+msgid "11"
+msgstr "11"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__12
+msgid "12"
+msgstr "12"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__product_origin_country_code
+msgid ""
+"2 letters ISO code of the country of origin of the product except for the "
+"UK.\n"
+"Specify 'XI' for Northern Ireland and 'XU' for Great Britain.\n"
+"Specify 'QU' when the country is unknown.\n"
+msgstr ""
+"Código ISO de 2 letras del país de origen del producto, excepto para el "
+"Reino Unido.\n"
+"Especifique \"XI\" para Irlanda del Norte y \"XU\" para Gran Bretaña.\n"
+"Especifique \"QU\" cuando el país sea desconocido.\n"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__product_origin_country_code
+msgid ""
+"2 letters ISO code of the country of origin of the product.\n"
+"Specify 'QU' when the country of origin is unknown.\n"
+msgstr ""
+"Código ISO de 2 letras del país de origen del producto.\n"
+"Especifique 'QU' cuando se desconozca el país de origen.\n"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__src_dest_country_code
+msgid ""
+"2 letters ISO code of the country of origin/destination.\n"
+"Specify 'XI' for Northern Ireland and 'XU' for Great Britain."
+msgstr ""
+"Código ISO de 2 letras del país de origen/destino.\n"
+"Especifique \"XI\" para Irlanda del Norte y \"XU\" para Gran Bretaña."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__src_dest_country_code
+msgid ""
+"2 letters code of the country of origin/destination.\n"
+"Specify 'XI' for Northern Ireland."
+msgstr ""
+"Código de 2 letras del país de origen/destino.\n"
+"Especifique \"XI\" para Irlanda del Norte."
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "<span>Intrastat Product Declaration </span>"
+msgstr "<span>Declaración de producto IntrastaT </span>"
+
+#. module: intrastat_product
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_product_declaration_date_uniq
+msgid ""
+"A declaration of the same type already exists for this month !\n"
+"You should update the existing declaration or change the revision number of "
+"this one."
+msgstr ""
+"¡Ya existe una declaración del mismo tipo para este mes!.\n"
+"Debe actualizar la declaración existente o cambiar el número de revisión de "
+"ésta."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__amount_accessory_cost_company_currency
+#, python-format
+msgid "Accessory Costs"
+msgstr "Costes accesorios"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__action
+msgid "Action"
+msgstr "Acción"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_needaction
+msgid "Action Needed"
+msgstr "Acción necesaria"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__active
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__active
+msgid "Active"
+msgstr "Activo"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_ids
+msgid "Activities"
+msgstr "Actividades"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_exception_decoration
+msgid "Activity Exception Decoration"
+msgstr "Actividad Excepción Decoración"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_state
+msgid "Activity State"
+msgstr "Estado de actividad"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_type_icon
+msgid "Activity Type Icon"
+msgstr "Icono de tipo de actividad"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_4
+msgid "Air"
+msgstr "Aire"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_4
+msgid "Air Transport"
+msgstr "Transporte Aéreo"
+
+#. module: intrastat_product
+#: model:res.groups,comment:intrastat_product.group_invoice_intrastat_transaction_details
+msgid "Allow to encode Intrastat Transaction Details on Invoices"
+msgstr ""
+"Permitir codificar los detalles de las transacciones de Intrastat en las "
+"facturas"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__amount_accessory_cost_company_currency
+msgid ""
+"Amount in company currency of the accessory costs related to this invoice "
+"line. By default, these accessory costs are computed at the pro-rata of the "
+"amount of each invoice line."
+msgstr ""
+"Importe en moneda de la empresa de los costes accesorios relacionados con "
+"esta línea de factura. Por defecto, estos costes accesorios se calculan a "
+"prorrata del importe de cada línea de factura."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__amount_company_currency
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__amount_company_currency
+msgid ""
+"Amount in company currency to write in the declaration. Amount in company "
+"currency = amount in invoice currency converted to company currency with the "
+"rate of the invoice date."
+msgstr ""
+"Importe en la moneda la compañía a escribir en la declaración. Si la moneda "
+"no es la misma, se calcula con la tasa de cambio de la fecha de factura."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"An XML Export already exists for %s. To re-generate it, you must first "
+"delete it."
+msgstr ""
+"Ya existe una exportación XML para %s. Para volver a generarla, primero debe "
+"eliminarla."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Append"
+msgstr "Añadir"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_form
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Archived"
+msgstr "Archivado"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Are you sure you want to go back to draft?"
+msgstr "¿Seguro que quieres volver al estado de borrador?"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_arrivals
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_arrivals
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#, python-format
+msgid "Arrivals"
+msgstr "Llegadas"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_attachment_count
+msgid "Attachment Count"
+msgstr "Total de adjuntos"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_11
+msgid "B2B sale/purchase"
+msgstr "Venta/compra B2B"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_12
+msgid "B2C sale/purchase (incl. distance sale)"
+msgstr "Compra/venta B2C (incl. venta a distancia)"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Back to Draft"
+msgstr "Volver a Borrador"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Cannot delete the declaration %s because it is in Done state."
+msgstr "No se puede eliminar la declaración %s porque está en estado Hecho."
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__code
+msgid "Code"
+msgstr "Código"
+
+#. module: intrastat_product
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_region_intrastat_region_code_unique
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_transaction_intrastat_transaction_code_unique
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_transport_mode_intrastat_transport_code_unique
+msgid "Code must be unique."
+msgstr "El código debe ser único."
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+msgid "Code or Description"
+msgstr "Código o Descripción"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_company
+msgid "Companies"
+msgstr "Compañías"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__company_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+msgid "Company"
+msgstr "Compañía"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__company_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_country_code
+msgid "Company Country Code"
+msgstr "Código de país de la compañía"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_currency_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_currency_id
+msgid "Company currency"
+msgstr "Moneda de la compañía"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__computation_line_ids
+#, python-format
+msgid "Computation Lines"
+msgstr "Líneas de cálculo"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Compute"
+msgstr "Calcular"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_config_settings
+msgid "Config Settings"
+msgstr "Ajustes de configuración"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Confirm"
+msgstr "Confirmar"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_partner
+msgid "Contact"
+msgstr "Contacto"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"Conversion from unit of measure <em>%(source_uom)s</em> to <em>"
+"%(target_uom)s</em>, which is configured on the intrastat supplementary unit "
+"<i>%(intrastat_unit)s</i> of H.S. code <i>%(hs_code)s</i>, is not "
+"implemented yet"
+msgstr ""
+"Conversión de la unidad de medida <em>%(source_uom)s</em> a <em>"
+"%(target_uom)s</em>, que se configura en la unidad suplementaria Intrastat "
+"<i>%(intrastat_unit)s</i > de H.S. código <i>%(hs_code)s</i>, aún no está "
+"implementado"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"Conversion from unit of measure <em>%(source_uom)s</em> to <em>Kg</em> "
+"cannot be done automatically. It is needed for product <i>%(product)s</i> "
+"whose unit of measure is <i>%(product_uom)s</i>"
+msgstr ""
+"La conversión de la unidad de medida <em>%(source_uom)s</em> a <em>Kg</em> "
+"no se puede realizar automáticamente. Es necesario para el producto <i>"
+"%(product)s</i> cuya unidad de medida es <i>%(product_uom)s</i>"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__country_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_search
+msgid "Country"
+msgstr "País"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__src_dest_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__src_dest_country_code
+msgid "Country Code"
+msgstr "Código de país"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_origin_country_code
+msgid "Country Code of Origin of the Product"
+msgstr "Código de país de origen del producto"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Country Code of Origin/Destination"
+msgstr "Código de país de origen/destino"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__product_origin_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_origin_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__product_origin_country_code
+msgid "Country of Origin of the Product"
+msgstr "País de origen del producto"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__src_dest_country_id
+#, python-format
+msgid "Country of Origin/Destination"
+msgstr "País de origen/destino"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__product_origin_country_id
+msgid "Country of origin of the product i.e. product 'made in ____'"
+msgstr "País de origen del producto, como por ejemplo 'Hecho en ____'"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__product_origin_country_id
+msgid "Country of origin of the product i.e. product 'made in ____'."
+msgstr "País de origen del producto, como por ejemplo 'Hecho en ____'."
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__create_uid
+msgid "Created by"
+msgstr "Creado por"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__create_date
+msgid "Created on"
+msgstr "Creado el"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__currency_id
+msgid "Currency"
+msgstr "Moneda"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Date"
+msgstr "Fecha"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+msgid "Declaration"
+msgstr "Declaración"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__declaration_line_id
+msgid "Declaration Line"
+msgstr "Línea de declaración"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+#, python-format
+msgid "Declaration Lines"
+msgstr "Líneas de declaración"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_region_id
+msgid "Default Intrastat Region"
+msgstr "Región Intrastat por defecto"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_transport_id
+msgid "Default Transport Mode"
+msgstr "Modo Transporte por defecto"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__description
+msgid "Description"
+msgstr "Descripción"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Destination Country"
+msgstr "País de Destino"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__src_dest_country_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__src_dest_country_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__src_dest_country_id
+msgid "Destination country for dispatches. Origin country for arrivals."
+msgstr "País de destino para despachos. País de orígen para llegadas."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_dispatches
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_dispatches
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#, python-format
+msgid "Dispatches"
+msgstr "Despachos"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__display_name
+msgid "Display Name"
+msgstr "Nombre a mostrar"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__state__done
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Done"
+msgstr "Hecho"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__state__draft
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Draft"
+msgstr "Borrador"
+
+#. module: intrastat_product
+#: model:ir.actions.report,name:intrastat_product.intrastat_product_xlsx_report
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Excel Export"
+msgstr "Exportar a excel"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Extended"
+msgstr "Extendido"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_33
+msgid "Financial leasing"
+msgstr "Arrendamiento financiero"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__amount_company_currency
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__amount_company_currency
+#, python-format
+msgid "Fiscal Value"
+msgstr "Valor fiscal"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_7
+msgid "Fixed installations"
+msgstr "Instalaciones fijas"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_7
+msgid "Fixed transport installations (e.g. pipelines, high-tension cables)"
+msgstr ""
+"Instalaciones de transporte fijas (p.e. tuberías, cables de alta tensión)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_follower_ids
+msgid "Followers"
+msgstr "Seguidores"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_partner_ids
+msgid "Followers (Partners)"
+msgstr "Seguidores (Socios)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_type_icon
+msgid "Font awesome icon e.g. fa-tasks"
+msgstr "Icono de Font Awesome ej. fa-tasks"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+#, python-format
+msgid "Generate Lines from Invoices"
+msgstr "Generar Líneas desde Facturas"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Generate XML Declaration File"
+msgstr "Generar Archivo XML de Declaración"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid ""
+"Generate declaration lines, generate XML export and set declaration to 'Done'"
+msgstr ""
+"Generar líneas de declaración, generar la exportación XML y establecer la "
+"declaración en \"Hecho\""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Generate lines from invoices: results"
+msgstr "Generar líneas desde facturas: resultados"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Go to Accounting Configuration Settings screen"
+msgstr "Ir a pantalla de Configuración de Contabilidad"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Group By"
+msgstr "Agrupar por"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_hs_code
+msgid "H.S. Code"
+msgstr "Código HS"
+
+#. module: intrastat_product
+#: model:ir.ui.menu,name:intrastat_product.intrastat_code_menu
+msgid "H.S. Codes"
+msgstr "Códigos HS"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "HS Code"
+msgstr "Código HS"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__has_message
+msgid "Has Message"
+msgstr "Tiene mensaje"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_91
+msgid "Hire, loan, and operational leasing longer than 24 months"
+msgstr "Alquiler, préstamo y arrendamiento operativo a más de 24 meses"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__id
+msgid "ID"
+msgstr "ID"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_exception_icon
+msgid "Icon"
+msgstr "Icono"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_exception_icon
+msgid "Icon to indicate an exception activity."
+msgstr "Icono para indicar una actividad de excepción."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_needaction
+msgid "If checked, new messages require your attention."
+msgstr "Si está marcado, hay nuevos mensajes que requieren de su atención."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_has_error
+msgid "If checked, some messages have a delivery error."
+msgstr "Si está marcado, hay mensajes que tienen error de entrega."
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_accessory_costs
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_accessory_costs
+msgid "Include Accessory Costs in Fiscal Value of Product"
+msgstr "Incluir Costes Accesorio en Valor Fiscal del Producto"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__incoterm_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__incoterm_id
+#, python-format
+msgid "Incoterm"
+msgstr "Incotérmino"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_8
+msgid "Inland waterway"
+msgstr "Vía navegable"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_8
+msgid "Inland waterway transport"
+msgstr "Transporte fluvial"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__hs_code_id
+#, python-format
+msgid "Intrastat Code"
+msgstr "Código Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_sale_order__intrastat
+msgid "Intrastat Declaration"
+msgstr "Declaración de producto Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_line_ids
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_line_ids
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_line_ids
+msgid "Intrastat Declaration Details"
+msgstr "Detalles de la declaración Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__intrastat_transaction_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__intrastat_transaction_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__intrastat_transaction_id
+msgid "Intrastat Nature of Transaction"
+msgstr "Naturaleza intrastat de la transacción"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_computation_line
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__computation_line_ids
+msgid "Intrastat Product Computation Lines"
+msgstr "Líneas de cálculo de Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__parent_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__parent_id
+msgid "Intrastat Product Declaration"
+msgstr "Declaración de producto Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration_line
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__declaration_line_ids
+msgid "Intrastat Product Declaration Lines"
+msgstr "Líneas de declaración Intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_region
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_stock_warehouse__region_id
+#, python-format
+msgid "Intrastat Region"
+msgstr "Región Intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Intrastat Region Code"
+msgstr "Código de región Intrastat"
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_region_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_region_menu
+msgid "Intrastat Regions"
+msgstr "Regiones Intrastat"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_result_view_form
+msgid "Intrastat Result View"
+msgstr "Vista de los resultados de Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_hs_code__intrastat_unit_id
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__intrastat_unit_id
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__intrastat_unit_id
+msgid "Intrastat Supplementary Unit"
+msgstr "Unidad Suplementaria Intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_unit
+#, python-format
+msgid "Intrastat Supplementary Units"
+msgstr "Unidades suplementarias de Intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_transaction
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transaction_id
+#, python-format
+msgid "Intrastat Transaction"
+msgstr "Transacción Intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Intrastat Transaction Code"
+msgstr "Código de transacción Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_transaction_id
+msgid "Intrastat Transaction Type"
+msgstr "Tipo de transacción Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_transport_mode
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_transport_id
+msgid "Intrastat Transport Mode"
+msgstr "Modo de transporte Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_report_intrastat_product_product_declaration_xls
+msgid "Intrastat declaration"
+msgstr "Declaración de producto Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move_intrastat_line
+msgid "Intrastat declaration details"
+msgstr "Detalles declaración Intrastat"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Intrastat information"
+msgstr "Información Intrastat"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Intrastat transaction details"
+msgstr "Detalles de transacción Intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Invalid Year!"
+msgstr "¡Año inválido!"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_stock_location
+msgid "Inventory Locations"
+msgstr "Ubicaciones de inventario"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__move_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_id
+#, python-format
+msgid "Invoice"
+msgstr "Factura"
+
+#. module: intrastat_product
+#: model:res.groups,name:intrastat_product.group_invoice_intrastat_transaction_details
+msgid "Invoice Intrastat Transaction Details"
+msgstr "Detalles de la transacción de Intrastat de la factura"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__invoice_line_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_line_id
+msgid "Invoice Line"
+msgstr "Línea de factura"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Invoices/Refunds"
+msgstr "Facturas/Reembolsos"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_is_follower
+msgid "Is Follower"
+msgstr "Es seguidor"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move
+msgid "Journal Entry"
+msgstr "Asiento contable"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move_line
+msgid "Journal Item"
+msgstr "Apunte contable"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form
+msgid "Kg"
+msgstr "Kg"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit____last_update
+msgid "Last Modified on"
+msgstr "Última modificación el"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__write_uid
+msgid "Last Updated by"
+msgstr "Últ. actualización por"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__write_date
+msgid "Last Updated on"
+msgstr "Última Actualización en"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_main_attachment_id
+msgid "Main Attachment"
+msgstr "Adjunto principal"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_has_error
+msgid "Message Delivery error"
+msgstr "Mensaje de error de entrega"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_ids
+msgid "Messages"
+msgstr "Mensajes"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>Country of Origin</em>"
+msgstr "Falta <em>País de origen</em>"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>Country</em>"
+msgstr "Falta <em>País</em>"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>H.S. Code</em>"
+msgstr "Falta <em>Código de H.S.</em>"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>VAT Number</em>"
+msgstr "Falta <em>Número de IVA</em>"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing link to a <em>regular unit of measure</em>"
+msgstr "Falta el enlace a una <em>unidad de medida regular</em>"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing unit of measure"
+msgstr "Falta la unidad de medida"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__month
+msgid "Month"
+msgstr "Mes"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_31
+msgid ""
+"Movements to/from a warehouse (excluding call-off and consignment stock)"
+msgstr ""
+"Movimientos hacia/desde un almacén (excluidas las existencias a la demanda y "
+"en consignación)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__my_activity_date_deadline
+msgid "My Activity Deadline"
+msgstr "Mi fecha de límite de actividad"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__name
+msgid "Name"
+msgstr "Nombre"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_search
+msgid "Name, Code or Description"
+msgstr "Nombre, Código o Descripción"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__weight
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__weight
+msgid "Net weight in Kg"
+msgstr "Peso neto en Kg"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_date_deadline
+msgid "Next Activity Deadline"
+msgstr "Fecha límite de la siguiente actividad"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_summary
+msgid "Next Activity Summary"
+msgstr "Resumen de la siguiente actividad"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_type_id
+msgid "Next Activity Type"
+msgstr "Tipo de la siguiente actividad"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Nihil"
+msgstr "Nada"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "No"
+msgstr "No"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "No records found for the selected period !"
+msgstr "¡No se encontraron registros en el periodo seleccionado!"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__note
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__note
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Notes"
+msgstr "Notas"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_needaction_counter
+msgid "Number of Actions"
+msgstr "Número de acciones"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__num_decl_lines
+msgid "Number of Declaration Lines"
+msgstr "Nº de líneas de declaración"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_has_error_counter
+msgid "Number of errors"
+msgstr "Número de errores"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_needaction_counter
+msgid "Number of messages requiring action"
+msgstr "Número de mensajes que requieren una acción"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_has_error_counter
+msgid "Number of messages with delivery error"
+msgstr "Nº de mensajes con error de entrega"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_result_view_form
+msgid "Ok"
+msgstr "OK"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Origin Region"
+msgstr "Region de origen"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Origin country"
+msgstr "País de origen"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__src_dest_region_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__src_dest_region_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__src_dest_region_id
+msgid ""
+"Origin region for dispatches, destination region for arrivals. This field is "
+"used for the Intrastat Declaration."
+msgstr ""
+"Región de orígen para despachos, región de destino para llegadas. Este campo "
+"se usa en la Declaración Intrastat."
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__src_dest_country_id
+msgid "Origin/Destination Country"
+msgstr "País Orígen/Despacho"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__src_dest_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__src_dest_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__src_dest_region_id
+msgid "Origin/Destination Region"
+msgstr "Región Orígen/Destino"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_99
+msgid "Other"
+msgstr "Otra/o"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_9
+msgid "Own propulsion"
+msgstr "Propulsión propia"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_9
+msgid ""
+"Own propulsion (imported or exported means of transport crossing the border "
+"under their own power, e.g. aircraft, lorries, boats, etc.)"
+msgstr ""
+"Propulsión propia (medios de transporte importados o exportados que cruzan "
+"la frontera bajo su propia propulsión, por ejemplo, aviones, camiones, "
+"barcos, etc.)"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__partner_id
+#, python-format
+msgid "Partner"
+msgstr "Empresa"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Partners"
+msgstr "Socios"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__year_month
+msgid "Period"
+msgstr "Periodo"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_result_view
+msgid "Pop-up to show errors on intrastat report generation"
+msgstr "Pop-up para mostrar errores en la generación del reporte intrastat"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_5
+msgid "Post"
+msgstr "Publicar"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_5
+msgid "Postal consignments"
+msgstr "Envíos postales"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__product_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+#, python-format
+msgid "Product"
+msgstr "Producto"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_tree
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_tree
+#, python-format
+msgid "Product C/O"
+msgstr "Producto C/O"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Product C/O Code"
+msgstr "Código C/O del producto"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Products"
+msgstr "Productos"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__quantity
+msgid "Quantity"
+msgstr "Cantidad"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_2
+msgid "Rail"
+msgstr "Ferroviario"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_2
+msgid "Railway transport (including lorries on railway wagons)"
+msgstr "Transporte ferroviario (incluidos camiones en vagones ferroviarios)"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Reference"
+msgstr "Referencia"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__region_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__region_code
+msgid "Region Code"
+msgstr "Código de la Región"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__uom_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Regular UoM"
+msgstr "UdM regular"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form
+msgid "Related Transactions"
+msgstr "Transacciones Relacionadas"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_71
+msgid ""
+"Release of goods for free circulation in a Member State with a subsequent "
+"export to another Member State"
+msgstr ""
+"Despacho a libre práctica de mercancías en un Estado miembro con exportación "
+"posterior a otro Estado miembro"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Replace"
+msgstr "Reemplazar"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_23
+msgid "Replacement (e.g. under warranty) for goods not being returned"
+msgstr ""
+"Sustitución (por ejemplo, en garantía) de mercancías que no se devuelven"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_22
+msgid "Replacement for returned goods (free of charge)"
+msgstr "Sustitución de los productos devueltos (gratuita)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__reporting_level
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__reporting_level
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__reporting_level
+msgid "Reporting Level"
+msgstr "Nivel de informe"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_user_id
+msgid "Responsible User"
+msgstr "Usuario responsable"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_21
+msgid "Return of goods (free of charge)"
+msgstr "Devolución de mercancías (gratuita)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__revision
+msgid "Revision"
+msgstr "Revisión"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_3
+msgid "Road"
+msgstr "Carretera"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_3
+msgid "Road Transport"
+msgstr "Transporte por carretera"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_sale_order
+msgid "Sales Order"
+msgstr "Pedido de venta"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_1
+msgid "Sea"
+msgstr "Mar"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_1
+msgid ""
+"Sea Transport (including wagons, motor vehicles, trailers, semi-trailers and "
+"lighters on board of a ship)"
+msgstr ""
+"Transporte marítimo (incluidos vagones, vehículos de motor, remolques, "
+"semirremolques y encendedores a bordo de un barco)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_unit__uom_id
+msgid ""
+"Select the regular Unit of Measure of Odoo that corresponds to this "
+"Intrastat Supplementary Unit."
+msgstr ""
+"Seleccione la Unidad de medida regular de Odoo que corresponda a esta Unidad "
+"suplementaria Intrastat."
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__sequence
+msgid "Sequence"
+msgstr "Secuencia"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_partner__invoice_intrastat_detail
+#: model:ir.model.fields,field_description:intrastat_product.field_res_users__invoice_intrastat_detail
+msgid "Show intrastat details in invoice report"
+msgstr "Mostrar detalles de intrastat en el informe de factura"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Standard"
+msgstr "Estándar"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__state
+msgid "State"
+msgstr "Estado"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__state
+msgid ""
+"State of the declaration. When the state is set to 'Done', the parameters "
+"become read-only."
+msgstr ""
+"Estado de la declaración. Cuando el estado está como 'Realizado', los "
+"parámetros se convierten a solo lectura."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_state
+msgid ""
+"Status based on activities\n"
+"Overdue: Due date is already passed\n"
+"Today: Activity date is today\n"
+"Planned: Future activities."
+msgstr ""
+"Estado basado en las actividades\n"
+"Atrasado: La fecha de vencimiento ya está vencida\n"
+"Hoy: La fecha de la actividad es hoy\n"
+"Planificado: Actividades futuras."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__intrastat_unit_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__intrastat_unit_id
+#, python-format
+msgid "Suppl. Unit"
+msgstr "Unid. supl"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__suppl_unit_qty
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__suppl_unit_qty
+#, python-format
+msgid "Suppl. Unit Qty"
+msgstr "Ctd. unid. supl"
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_unit_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_unit_menu
+msgid "Supplementary Units"
+msgstr "Cantidad de unidades suplementarias"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__suppl_unit_qty
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__suppl_unit_qty
+msgid "Supplementary Units Quantity"
+msgstr "Cantidad de unidades suplementarias"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_32
+msgid ""
+"Supply for sale on approval or after trial (including call-off and "
+"consignment stock)"
+msgstr ""
+"Suministro para la venta tras la aprobación o después de la prueba ("
+"incluidas las existencias a la demanda y en consignación)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__company_country_code
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__company_country_code
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__company_country_code
+msgid ""
+"The ISO country code in two chars. \n"
+"You can use this field for quick search."
+msgstr ""
+"Código ISO del país en dos caracteres.\n"
+"Puedes utilizar este campo para la búsqueda rápida."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The VAT number '%s' is invalid."
+msgstr "El NIF '%s' no es válido."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The VAT number is not set for the partner '%s'."
+msgstr "El NIF no está establecido para '%s'."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The declaration Action has been set to <em>nihil</em>."
+msgstr "La declaración Acción se ha establecido en <em>nihil</em>."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The default Incoterm of the Company is not set, please configure it first."
+msgstr ""
+"El Incoterm predeterminado de la Compañía no está configurado, configúrelo "
+"primero."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The default Intrastat Transport Mode of the Company is not set, please "
+"configure it first."
+msgstr ""
+"El Modo de Transporte Intrastat predeterminado de la empresa no está "
+"configurado, configúrelo primero."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__quantity
+msgid ""
+"The optional quantity expressed by this line, eg: number of product sold. "
+"The quantity is not a legal requirement but is very useful for some reports."
+msgstr ""
+"La cantidad opcional expresada en el apunte, por ejemplo: número de "
+"productos vendidos. Esta cantidad no supone un requisito legal pero es útil "
+"para algunos informes."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The source/destination country is <em>%s</em> which is not part of the "
+"European Union"
+msgstr ""
+"El país de origen/destino es <em>%s</em> que no forma parte de la Unión "
+"Europea"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_sale_order__intrastat_transport_id
+msgid "This information is used in Intrastat reports"
+msgstr "Esta información se utiliza en los reportes Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__total_amount
+msgid "Total Fiscal Amount"
+msgstr "Importe fiscal total"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__total_amount
+msgid "Total fiscal amount in company currency of the declaration."
+msgstr "Importe fiscal total de la declaración en la moneda de la compañía."
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+msgid "Transaction"
+msgstr "Transacción"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transaction_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transaction_code
+msgid "Transaction Code"
+msgstr "Código de transacción"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__transaction_suppl_unit_qty
+msgid "Transaction Suppl Unit Qty"
+msgstr "Cantidad de unidades suplementarias de la transacción"
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_transaction_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_transaction_menu
+msgid "Transaction Types"
+msgstr "Tipos de transacción"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__transaction_weight
+msgid "Transaction Weight"
+msgstr "Peso de transacción"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__transaction_suppl_unit_qty
+msgid "Transaction quantity in Intrastat Supplementary Unit"
+msgstr "Cantidad de transacciones en la unidad suplementaria Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__transaction_weight
+msgid "Transaction weight in Kg: Quantity x Product Weight"
+msgstr "Peso de la transacción en Kg: Cantidad x Peso del producto"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Transactions"
+msgstr "Transacciones"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_52
+msgid ""
+"Transactions following processing under contract (not involving change of "
+"ownership). Goods not returning to the initial Member State/country of "
+"export."
+msgstr ""
+"Operaciones posteriores al perfeccionamiento bajo contrato (no se traspasa "
+"la propiedad al contratista): Mercancías que no regresan al Estado miembro "
+"de expedición."
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_51
+msgid ""
+"Transactions following processing under contract (not involving change of "
+"ownership). Goods returning to the initial Member State/country of export."
+msgstr ""
+"Operaciones posteriores al perfeccionamiento bajo contrato (no se traspasa "
+"la propiedad al contratista): Mercancías que regresan al Estado miembro de "
+"expedición."
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_80
+msgid ""
+"Transactions involving the supply of building materials and technical "
+"equipment under a general construction or civil engineering contract for "
+"which no separate invoicing of the goods is required and an invoice for the "
+"total contract is issued"
+msgstr ""
+"Operaciones de suministro de materiales de construcción y equipos técnicos "
+"en el marco de un contrato general de construcción o ingeniería civil para "
+"las que no se exige una facturación separada de los bienes y se emite una "
+"factura por el total del contrato"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_34
+msgid ""
+"Transactions involving transfer of ownership without financial compensation"
+msgstr "Transacciones de transferencia de propiedad sin compensación económica"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_41
+msgid ""
+"Transactions with a view to processing under contract (no change of "
+"ownership). Goods expected to return to the initial Member State/country of "
+"export"
+msgstr ""
+"Transacciones con vistas a la transformación bajo contrato (sin cambio de "
+"propiedad). Mercancías destinadas a regresar al Estado miembro/país de "
+"exportación inicial"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_42
+msgid ""
+"Transactions with a view to processing under contract (no change of "
+"ownership). Goods not expected to return to the initial Member State/country "
+"of export"
+msgstr ""
+"Transacciones con vistas a la transformación bajo contrato (sin cambio de "
+"propiedad). Mercancías que no está previsto que regresen al Estado miembro/"
+"país de exportación inicial"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_sale_order__intrastat_transport_id
+#, python-format
+msgid "Transport Mode"
+msgstr "Modo de transporte"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Transport Mode Code"
+msgstr "Código de modo de transporte"
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_transport_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_transport_menu
+msgid "Transport Modes"
+msgstr "Modos de transporte"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_72
+msgid ""
+"Transportation of goods from one Member State to another Member State to "
+"place the goods under the export procedure"
+msgstr ""
+"Transporte de mercancías de un Estado miembro a otro para incluirlas en el "
+"régimen de exportación"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__declaration_type
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__declaration_type
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__declaration_type
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Type"
+msgstr "Tipo"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_exception_decoration
+msgid "Type of the exception activity on record."
+msgstr "Tipo (o clase) de actividad excepcional registrada."
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Unit Weight"
+msgstr "Peso unitario"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__revision
+msgid "Used to keep track of changes"
+msgstr "Usado para rastrear los cambios"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "VAT"
+msgstr "NIF"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__vat
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__vat
+msgid "VAT Number"
+msgstr "Número NIF"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"VAT number is <em>%(vat)s</em>. If this partner is from Northern Ireland, "
+"his VAT number should be updated to his new VAT number starting with <em>XI</"
+"em> following Brexit. If this partner is from Great Britain, maybe the "
+"fiscal position was wrong on the invoice (the fiscal position was <i>"
+"%(fiscal_position)s</i>)."
+msgstr ""
+"El número de IVA es <em>%(vat)s</em>. Si este socio es de Irlanda del Norte, "
+"su número de IVA debe actualizarse a su nuevo número de IVA que comienza con "
+"<em>XI</em> después del Brexit. Si este socio es de Gran Bretaña, es posible "
+"que la posición fiscal esté incorrecta en la factura (la posición fiscal era "
+"<i>%(fiscal_position)s</i>)."
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_stock_warehouse
+msgid "Warehouse"
+msgstr "Almacén"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__website_message_ids
+msgid "Website Messages"
+msgstr "Mensajes del sitio web"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__website_message_ids
+msgid "Website communication history"
+msgstr "Historial de comunicación del sitio web"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__weight
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__weight
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+#, python-format
+msgid "Weight"
+msgstr "Peso"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_id
+msgid "XML Attachment"
+msgstr "Adjunto XML"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_datas
+msgid "XML Export"
+msgstr "Exportar a XML"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_name
+msgid "XML Filename"
+msgstr "Nombre de archivo XML"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__year
+msgid "Year"
+msgstr "Año"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__year_month
+msgid "Year and month of the declaration."
+msgstr "Año y mes de la declaración."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__note
+msgid "You can add some comments here if you want."
+msgstr "Puede añadir algunos comentarios aquí si lo prefiere."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "You must set the country on company '%s'."
+msgstr "Debe establecer el país en la compañía '%s'."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "comput."
+msgstr "informática."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "decl."
+msgstr "declinar."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "for period %s"
+msgstr "para periodo %s"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "intrastat-%(year_month)s-%(declaration_type)s%(draft)s"
+msgstr "Intraestado-%(year_month)s-%(declaration_type)s%(draft)s"
+
+#. module: intrastat_product
+#: model:ir.actions.report,print_report_name:intrastat_product.intrastat_product_xlsx_report
+msgid "object._get_xlsx_report_filename()"
+msgstr "object._get_xlsx_report_filename()"
+
+#~ msgid ""
+#~ "'intrastat-%s-%s%s' % (object.year_month, object.declaration_type, object."
+#~ "state == 'draft' and '-draft' or '')"
+#~ msgstr ""
+#~ "'intrastat-%s-%s%s' % (object.year_month, object.declaration_type, object."
+#~ "state == 'draft' and '-draft' or '')"
+
+#~ msgid "SMS Delivery error"
+#~ msgstr "Error de entrega de SMS"
+
+#~ msgid "Number of messages which requires an action"
+#~ msgstr "Nº de mensajes que requieren acción"
+
+#~ msgid ""
+#~ "2 digit code of country of origin of the product except for the UK.\n"
+#~ "Specify 'XI' for UK Northern Ireland and 'XU' for rest of the UK.\n"
+#~ "Specify 'QU' when the country is unknown.\n"
+#~ msgstr ""
+#~ "Código de 2 dígitos del país de origen del producto, excepto para el "
+#~ "Reino Unido.\n"
+#~ "Especifique \"XI\" para el Reino Unido e Irlanda del Norte y \"XU\" para "
+#~ "el resto del Reino Unido.\n"
+#~ "Especifique \"QU\" cuando el país sea desconocido.\n"
+
+#~ msgid ""
+#~ "2 digit code of country of origin/destination.\n"
+#~ "Specify 'XI' for UK Northern Ireland and 'XU' for rest of the UK."
+#~ msgstr ""
+#~ "Código de 2 dígitos del país de origen/destino.\n"
+#~ "Especifique \"XI\" para Irlanda del Norte y \"XU\" para el resto del "
+#~ "Reino Unido."
+
+#~ msgid ""
+#~ "2 digit code of country of origin/destination.\n"
+#~ "Specify 'XI' for UK Northern Ireland."
+#~ msgstr ""
+#~ "Código de 2 dígitos del país de origen/destino.\n"
+#~ "Especifique \"XI\" para el Reino Unido e Irlanda del Norte."
+
+#~ msgid ""
+#~ "Amount in company currency of the accessory costs related to this invoice "
+#~ "line (by default, these accessory costs are computed at the pro-rata of "
+#~ "the amount of each invoice line."
+#~ msgstr ""
+#~ "Importe en la moneda de la compañía de los costes accesorios relacionados "
+#~ "con esta línea de factura (por defecto, estos costes accesorios se "
+#~ "calculan prorrateados del importe de cada línea de factura)."
+
+#~ msgid "Intrastat Product Computataion Lines"
+#~ msgstr "Líneas de cálculo de productos Intrastat"
+
+#~ msgid "Intrastat Product Report Base Object"
+#~ msgstr "Objeto base del informe de productos Intrastat"
+
+#, python-format
+#~ msgid "Before going back to draft, you must delete the XML export."
+#~ msgstr "Antes de volver a borrador, debe eliminar la exportación XML."
+
+#, python-format
+#~ msgid ""
+#~ "Conversion from Intrastat Supplementary Unit '%s' to Unit of Measure is "
+#~ "not implemented yet."
+#~ msgstr ""
+#~ "La conversión de la Unidad Suplementaria Intrastat '%s' a la Unidad de "
+#~ "Medida aún no está implementada."
+
+#, python-format
+#~ msgid "Conversion from unit of measure '%s' to '%s' is not implemented yet."
+#~ msgstr ""
+#~ "La conversión de la unidad de medida '%s' a '%s' aún no está implementada."
+
+#, python-format
+#~ msgid ""
+#~ "Conversion from unit of measure '%s' to 'Kg' is not implemented yet. It "
+#~ "is needed for product '%s'."
+#~ msgstr ""
+#~ "La conversión de la unidad de medida '%s' a 'Kg' aún no está "
+#~ "implementada. Se necesita para el producto '%s'."
+
+#~ msgid "Country of Origin"
+#~ msgstr "País de Origen"
+
+#, python-format
+#~ msgid "Declaration for Arrivals"
+#~ msgstr "Declaración de Llegadas"
+
+#, python-format
+#~ msgid "Declaration for Dispatches"
+#~ msgstr "Declaración de Despachos"
+
+#~ msgid "Default Intrastat Transaction For Customer Invoice"
+#~ msgstr "Transacción Intrastat por defecto para la factura del cliente"
+
+#~ msgid "Default Intrastat Transaction For Supplier Invoices"
+#~ msgstr "Transacción Intrastat por defecto para Facturas de Proveedores"
+
+#~ msgid "Default Intrastat Transaction For Supplier Refunds"
+#~ msgstr "Transacción Intrastat por defecto para Abonos de Proveedor"
+
+#~ msgid "Default Intrastat Transaction for Customer Refunds"
+#~ msgstr "Transacción Intrastat por defecto para Abonos a Clientes"
+
+#~ msgid "Delete XML Export"
+#~ msgstr "Borrar la exportación XML"
+
+#~ msgid "Followers (Channels)"
+#~ msgstr "Seguidores (Canales)"
+
+#, python-format
+#~ msgid "Generate Declaration Lines"
+#~ msgstr "Generar Líneas de Declaración"
+
+#, python-format
+#~ msgid "Intrastat Code %s:"
+#~ msgstr "Código Intrastat %s:"
+
+#~ msgid "Intrastat Declaration Line"
+#~ msgstr "Línea de declaración Intrastat"
+
+#~ msgid "Intrastat Declaration Lines"
+#~ msgstr "Líneas de declaración Intrastat"
+
+#~ msgid "Intrastat Product"
+#~ msgstr "Buscar declaraciones de producto Intrastat españolas"
+
+#~ msgid "Intrastat Product Declarations"
+#~ msgstr "Declaraciones de producto Intrastat"
+
+#~ msgid "Intrastat Transaction Types"
+#~ msgstr "Tipos de transacciones de Intrastat"
+
+#~ msgid "Intrastat Transportat Modes"
+#~ msgstr "Modos de transporte Intrastat"
+
+#~ msgid "Intrastat nature of transaction"
+#~ msgstr "Naturaleza intrastat de la transacción"
+
+#, python-format
+#~ msgid "Invoice %s, line %s"
+#~ msgstr "Factura %s, línea %s"
+
+#, python-format
+#~ msgid "Missing Intrastat Code on product %s. "
+#~ msgstr "Falta el código Intrastat en el producto %s. "
+
+#, python-format
+#~ msgid "Missing VAT Number on partner '%s'"
+#~ msgstr "Falta el NIF del contacto '%s'"
+
+#, python-format
+#~ msgid ""
+#~ "Missing country on invoice partner '%s' or on the delivery address "
+#~ "(partner '%s'). "
+#~ msgstr ""
+#~ "Falta el país en el contacto de la factura '%s' o en la dirección de "
+#~ "entrega (socio '%s'). "
+
+#, python-format
+#~ msgid "Missing unit of measure."
+#~ msgstr "Falta la unidad de medida."
+
+#, python-format
+#~ msgid "Missing weight on product %s."
+#~ msgstr "Falta el peso del producto %s."
+
+#, python-format
+#~ msgid "No XML File has been generated."
+#~ msgstr "No se ha generado un fichero XML."
+
+#~ msgid "Number of unread messages"
+#~ msgstr "Número de mensajes no leídos"
+
+#, python-format
+#~ msgid ""
+#~ "On invoice '%s', the source/destination country is '%s' which is not part "
+#~ "of the European Union."
+#~ msgstr ""
+#~ "En la factura \"%s\", el país de origen/destino es \"%s\", que no forma "
+#~ "parte de la Unión Europea."
+
+#, python-format
+#~ msgid ""
+#~ "On invoice '%s', the source/destination country is United-Kingdom and the "
+#~ "fiscal position is '%s'. Make sure that the fiscal position is right. If "
+#~ "the origin/destination is Northern Ireland, please set the VAT number of "
+#~ "the partner '%s' in Odoo with its new VAT number starting with 'XI' "
+#~ "following Brexit."
+#~ msgstr ""
+#~ "En la factura \"%s\", el país de origen/destino es Reino Unido y la "
+#~ "posición fiscal es \"%s\". Asegúrese de que la posición fiscal es "
+#~ "correcta. Si el origen/destino es Irlanda del Norte, establezca el NIF "
+#~ "del contacto '%s' en Odoo con su nuevo NIF que empieza por 'XI' tras el "
+#~ "Brexit."
+
+#, python-format
+#~ msgid ""
+#~ "On invoice '%s', the source/destination country is United-Kingdom, the "
+#~ "fiscal position is '%s' and the partner's VAT number is '%s'. Make sure "
+#~ "that the fiscal position is right. If the origin/destination is Northern "
+#~ "Ireland, please update the VAT number of the partner '%s' in Odoo with "
+#~ "its new VAT number starting with 'XI' following Brexit."
+#~ msgstr ""
+#~ "En la factura \"%s\", el país de origen/destino es Reino Unido, la "
+#~ "posición fiscal es \"%s\" y el NIF del contacto es \"%s\". Asegúrese de "
+#~ "que la posición fiscal es correcta. Si el origen/destino es Irlanda del "
+#~ "Norte, actualice el NIF del contacto '%s' en Odoo con su nuevo NIF que "
+#~ "empieza por 'XI' tras el Brexit."
+
+#~ msgid "Search Intrastat Product Declarations"
+#~ msgstr "Buscar declaraciones de productos Intrastat"
+
+#~ msgid "Search Intrastat Supplementary Units"
+#~ msgstr "Buscar unidades suplementarias en Intrastat"
+
+#~ msgid "Search Intrastat Transaction Types"
+#~ msgstr "Buscar tipos de transacciones de Intrastat"
+
+#~ msgid "Search Intrastat Transport Modes"
+#~ msgstr "Search Intrastat Transport Modes"
+
+#, python-format
+#~ msgid "The Declaration Action has been set to 'nihil'."
+#~ msgstr "La acción de declaración se ha establecido en 'nada'."
+
+#~ msgid "The move of this entry line."
+#~ msgstr "El movimiento de esta línea de entrada."
+
+#~ msgid "Total amount"
+#~ msgstr "Importe Total"
+
+#~ msgid "Unread Messages"
+#~ msgstr "Mensajes no leídos"
+
+#~ msgid "Unread Messages Counter"
+#~ msgstr "Contador de mensajes sin leer"
+
+#, python-format
+#~ msgid ""
+#~ "VAT number of partner '%s' is '%s'. If this partner is from Northern "
+#~ "Ireland, his VAT number should be updated to his new VAT number starting "
+#~ "with 'XI' following Brexit. If this partner is from Great Britain, maybe "
+#~ "the fiscal position was wrong on invoice '%s' (the fiscal position was "
+#~ "'%s')."
+#~ msgstr ""
+#~ "El NIF del contacto \"%s\" es \"%s\". Si este contacto es de Irlanda del "
+#~ "Norte, su NIF debe actualizarse a su nuevo NIF que empieza por \"XI\" "
+#~ "tras el Brexit. Si este contacto es de Gran Bretaña, tal vez la posición "
+#~ "fiscal era errónea en la factura '%s' (la posición fiscal era '%s')."
+
+#~ msgid "Valid"
+#~ msgstr "Válido"
+
+#, python-format
+#~ msgid "You must set company's country !"
+#~ msgstr "¡Debe establecer el país de la compañía!"
diff --git a/intrastat_product/i18n/fr.po b/intrastat_product/i18n/fr.po
new file mode 100644
index 000000000..ded62eca0
--- /dev/null
+++ b/intrastat_product/i18n/fr.po
@@ -0,0 +1,2114 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# 	* intrastat_product
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 11.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-12-29 10:27+0000\n"
+"PO-Revision-Date: 2023-09-06 14:36+0000\n"
+"Last-Translator: David Halgand <dhalgand@teclib.com>\n"
+"Language-Team: \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.17\n"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "%(invoice)s line %(line_nbr)s"
+msgstr "%(invoice)s ligne %(line_nbr)s"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid ""
+"(Re)compute the intrastat transaction details from the product master data."
+msgstr "(Re)-générer les transactions intrastat depuis les données source."
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__01
+msgid "01"
+msgstr "01"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__02
+msgid "02"
+msgstr "02"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__03
+msgid "03"
+msgstr "03"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__04
+msgid "04"
+msgstr "04"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__05
+msgid "05"
+msgstr "05"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__06
+msgid "06"
+msgstr "06"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__07
+msgid "07"
+msgstr "07"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__08
+msgid "08"
+msgstr "08"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__09
+msgid "09"
+msgstr "09"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__10
+msgid "10"
+msgstr "10"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__11
+msgid "11"
+msgstr "11"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__12
+msgid "12"
+msgstr "12"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__product_origin_country_code
+msgid ""
+"2 letters ISO code of the country of origin of the product except for the "
+"UK.\n"
+"Specify 'XI' for Northern Ireland and 'XU' for Great Britain.\n"
+"Specify 'QU' when the country is unknown.\n"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__product_origin_country_code
+msgid ""
+"2 letters ISO code of the country of origin of the product.\n"
+"Specify 'QU' when the country of origin is unknown.\n"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__src_dest_country_code
+msgid ""
+"2 letters ISO code of the country of origin/destination.\n"
+"Specify 'XI' for Northern Ireland and 'XU' for Great Britain."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__src_dest_country_code
+msgid ""
+"2 letters code of the country of origin/destination.\n"
+"Specify 'XI' for Northern Ireland."
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "<span>Intrastat Product Declaration </span>"
+msgstr "<span>EMEBI</span>"
+
+#. module: intrastat_product
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_product_declaration_date_uniq
+msgid ""
+"A declaration of the same type already exists for this month !\n"
+"You should update the existing declaration or change the revision number of "
+"this one."
+msgstr ""
+"Une déclaration du même type existe déjà pour ce mois !\n"
+"Vous devez mettre à jour cette déclaration ou modifier son numéro de "
+"révision."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__amount_accessory_cost_company_currency
+#, python-format
+msgid "Accessory Costs"
+msgstr "Frais accessoires"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__action
+msgid "Action"
+msgstr "Action"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_needaction
+msgid "Action Needed"
+msgstr "Action requise"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__active
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__active
+msgid "Active"
+msgstr "Actif"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_ids
+msgid "Activities"
+msgstr "Activités"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_exception_decoration
+msgid "Activity Exception Decoration"
+msgstr "Style d'affichage de l'activité-alerte"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_state
+msgid "Activity State"
+msgstr "État de l'activité"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_type_icon
+msgid "Activity Type Icon"
+msgstr "Îcone du type d'activité"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_4
+msgid "Air"
+msgstr "Air"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_4
+msgid "Air Transport"
+msgstr "Transport par air"
+
+#. module: intrastat_product
+#: model:res.groups,comment:intrastat_product.group_invoice_intrastat_transaction_details
+msgid "Allow to encode Intrastat Transaction Details on Invoices"
+msgstr "Rend possible la saisie des paramètres intrastat sur les factures"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__amount_accessory_cost_company_currency
+msgid ""
+"Amount in company currency of the accessory costs related to this invoice "
+"line. By default, these accessory costs are computed at the pro-rata of the "
+"amount of each invoice line."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__amount_company_currency
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__amount_company_currency
+msgid ""
+"Amount in company currency to write in the declaration. Amount in company "
+"currency = amount in invoice currency converted to company currency with the "
+"rate of the invoice date."
+msgstr ""
+"Montant dans la devise de la société qui sera utilisé dans la déclaration. "
+"Montant dans la devise de la société = montant dans la devise de la facture "
+"converti à la date de la facture."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"An XML Export already exists for %s. To re-generate it, you must first "
+"delete it."
+msgstr ""
+"Un export XML existe déjà pour %s. Pour le re-générer, vous devez d'abord le "
+"supprimer."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Append"
+msgstr "Ajout"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_form
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Archived"
+msgstr "Archivé"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Are you sure you want to go back to draft?"
+msgstr "Êtes-vous sûr de vouloir retourner au brouillon ?"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_arrivals
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_arrivals
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#, python-format
+msgid "Arrivals"
+msgstr "Introductions"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_attachment_count
+msgid "Attachment Count"
+msgstr "Nombre de pièces jointes"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_11
+msgid "B2B sale/purchase"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_12
+msgid "B2C sale/purchase (incl. distance sale)"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Back to Draft"
+msgstr "Remettre en brouillon"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Cannot delete the declaration %s because it is in Done state."
+msgstr ""
+"Impossible de supprimer la déclaration %s car elle est à l'état 'Terminé'."
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__code
+msgid "Code"
+msgstr "Code"
+
+#. module: intrastat_product
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_region_intrastat_region_code_unique
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_transaction_intrastat_transaction_code_unique
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_transport_mode_intrastat_transport_code_unique
+msgid "Code must be unique."
+msgstr "Le code doit être unique."
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+msgid "Code or Description"
+msgstr "Code ou description"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_company
+msgid "Companies"
+msgstr "Sociétés"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__company_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+msgid "Company"
+msgstr "Société"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__company_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_country_code
+msgid "Company Country Code"
+msgstr "Code pays de la société"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_currency_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_currency_id
+msgid "Company currency"
+msgstr "Devise de la société"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__computation_line_ids
+#, python-format
+msgid "Computation Lines"
+msgstr "Lignes de transaction"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Compute"
+msgstr "Calculer"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_config_settings
+msgid "Config Settings"
+msgstr "Configuration"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Confirm"
+msgstr "Confirmer"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_partner
+msgid "Contact"
+msgstr "Contact"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"Conversion from unit of measure <em>%(source_uom)s</em> to <em>"
+"%(target_uom)s</em>, which is configured on the intrastat supplementary unit "
+"<i>%(intrastat_unit)s</i> of H.S. code <i>%(hs_code)s</i>, is not "
+"implemented yet"
+msgstr ""
+"La conversion de l'unité de mesure <em>%(source_uom)s</em> vers <em>"
+"%(target_uom)s</em>, qui est configurée sur l'unité supplémentaire intrastat "
+"<i>%(intrastat_unit)s</i> du code S.H. <i>%(hs_code)s</i> n'est pas encore "
+"implémentée"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"Conversion from unit of measure <em>%(source_uom)s</em> to <em>Kg</em> "
+"cannot be done automatically. It is needed for product <i>%(product)s</i> "
+"whose unit of measure is <i>%(product_uom)s</i>"
+msgstr ""
+"La conversion de l'unité de mesure <em>%(source_uom)s</em> vers <em>kg</em> "
+"ne peut pas se faire automatiquement. Elle est nécessaire pour les articles "
+"<i>%(product)s</i> dont l'unité de mesure est <i>%(product_uom)s</i>"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__country_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_search
+msgid "Country"
+msgstr "Pays"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__src_dest_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__src_dest_country_code
+msgid "Country Code"
+msgstr "Code pays"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_origin_country_code
+msgid "Country Code of Origin of the Product"
+msgstr "Code du pays d'origine de l'article"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Country Code of Origin/Destination"
+msgstr "Code du pays d'origine/destination"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__product_origin_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_origin_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__product_origin_country_code
+msgid "Country of Origin of the Product"
+msgstr "Pays d'origine de l'article"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__src_dest_country_id
+#, python-format
+msgid "Country of Origin/Destination"
+msgstr "Pays d'origine/destination"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__product_origin_country_id
+msgid "Country of origin of the product i.e. product 'made in ____'"
+msgstr "Pays d'origine de l'article i.e. article 'made in ____'"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__product_origin_country_id
+msgid "Country of origin of the product i.e. product 'made in ____'."
+msgstr "Pays d'origine de l'article i.e. article 'made in ____'."
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__create_uid
+msgid "Created by"
+msgstr "Créé par"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__create_date
+msgid "Created on"
+msgstr "Créé le"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__currency_id
+msgid "Currency"
+msgstr "Devise"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Date"
+msgstr "Date"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+msgid "Declaration"
+msgstr "Déclaration"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__declaration_line_id
+msgid "Declaration Line"
+msgstr "Ligne de déclaration"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+#, python-format
+msgid "Declaration Lines"
+msgstr "Lignes de déclaration"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_region_id
+msgid "Default Intrastat Region"
+msgstr "Région intrastat par défaut"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_transport_id
+msgid "Default Transport Mode"
+msgstr "Mode de transport par défaut"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__description
+msgid "Description"
+msgstr "Description"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Destination Country"
+msgstr "Pays destination"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__src_dest_country_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__src_dest_country_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__src_dest_country_id
+msgid "Destination country for dispatches. Origin country for arrivals."
+msgstr ""
+"Pays destination pour les expéditions. Pays de provenance pour les "
+"introductions."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_dispatches
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_dispatches
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#, python-format
+msgid "Dispatches"
+msgstr "Expéditions"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__display_name
+msgid "Display Name"
+msgstr "Nom affiché"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__state__done
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Done"
+msgstr "Terminé"
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__state__draft
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Draft"
+msgstr "Brouillon"
+
+#. module: intrastat_product
+#: model:ir.actions.report,name:intrastat_product.intrastat_product_xlsx_report
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Excel Export"
+msgstr "Export Excel"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Extended"
+msgstr "Détaillée"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_33
+msgid "Financial leasing"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__amount_company_currency
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__amount_company_currency
+#, python-format
+msgid "Fiscal Value"
+msgstr "Valeur fiscale"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_7
+msgid "Fixed installations"
+msgstr "Installations de transport fixe"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_7
+msgid "Fixed transport installations (e.g. pipelines, high-tension cables)"
+msgstr "Installations de transport fixe (pipelines, câbles haute-tension)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_follower_ids
+msgid "Followers"
+msgstr "Abonnés"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_partner_ids
+msgid "Followers (Partners)"
+msgstr "Abonnés (partenaires)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_type_icon
+msgid "Font awesome icon e.g. fa-tasks"
+msgstr "Îcone font-awesome, par exemple fa-task"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+#, python-format
+msgid "Generate Lines from Invoices"
+msgstr "Générer les lignes à partir des factures"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Generate XML Declaration File"
+msgstr "Générer le fichier XML de la déclaration"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid ""
+"Generate declaration lines, generate XML export and set declaration to 'Done'"
+msgstr ""
+"Générer les lignes de déclaration, générer l'export XML et passer la "
+"déclaration à l'état \"Terminé\""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Generate lines from invoices: results"
+msgstr "Génération des lignes à partir des factures: résultats"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Go to Accounting Configuration Settings screen"
+msgstr "Aller à la page de configuration de la comptabilité"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Group By"
+msgstr "Grouper par"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_hs_code
+msgid "H.S. Code"
+msgstr "Code S.H."
+
+#. module: intrastat_product
+#: model:ir.ui.menu,name:intrastat_product.intrastat_code_menu
+msgid "H.S. Codes"
+msgstr "Codes S.H."
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "HS Code"
+msgstr "Code SH"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__has_message
+msgid "Has Message"
+msgstr "A un message"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_91
+msgid "Hire, loan, and operational leasing longer than 24 months"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__id
+msgid "ID"
+msgstr "ID"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_exception_icon
+msgid "Icon"
+msgstr "Îcone"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_exception_icon
+msgid "Icon to indicate an exception activity."
+msgstr "Îcone pour indiquer une activité-alerte"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_needaction
+msgid "If checked, new messages require your attention."
+msgstr "Si activé, de nouveaux messages nécessitent votre attention."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_has_error
+msgid "If checked, some messages have a delivery error."
+msgstr "Si activé, des messages ont une erreur d'envoi."
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_accessory_costs
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_accessory_costs
+msgid "Include Accessory Costs in Fiscal Value of Product"
+msgstr "Inclure les frais accessoires dans la valeur fiscale des produits"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__incoterm_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__incoterm_id
+#, python-format
+msgid "Incoterm"
+msgstr "Incoterm"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_8
+msgid "Inland waterway"
+msgstr "Navigation intérieure"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_8
+msgid "Inland waterway transport"
+msgstr "Transport par navigation intérieure"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__hs_code_id
+#, python-format
+msgid "Intrastat Code"
+msgstr "Code Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_sale_order__intrastat
+msgid "Intrastat Declaration"
+msgstr "EMEBI"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_line_ids
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_line_ids
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_line_ids
+msgid "Intrastat Declaration Details"
+msgstr "Détails de la déclaration intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__intrastat_transaction_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__intrastat_transaction_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__intrastat_transaction_id
+msgid "Intrastat Nature of Transaction"
+msgstr "Nature de la transaction intrastat"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_computation_line
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__computation_line_ids
+msgid "Intrastat Product Computation Lines"
+msgstr "Lignes de calcul de la déclaration"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__parent_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__parent_id
+msgid "Intrastat Product Declaration"
+msgstr "EMEBI"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration_line
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__declaration_line_ids
+msgid "Intrastat Product Declaration Lines"
+msgstr "Lignes de l'EMEBI"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_region
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_stock_warehouse__region_id
+#, python-format
+msgid "Intrastat Region"
+msgstr "Région intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Intrastat Region Code"
+msgstr "Code région intrastat"
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_region_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_region_menu
+msgid "Intrastat Regions"
+msgstr "Régions intrastat"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_result_view_form
+msgid "Intrastat Result View"
+msgstr "Visualisation des résultats Intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_hs_code__intrastat_unit_id
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__intrastat_unit_id
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__intrastat_unit_id
+msgid "Intrastat Supplementary Unit"
+msgstr "Unité de mesure supplémentaire intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_unit
+#, python-format
+msgid "Intrastat Supplementary Units"
+msgstr "Unités de mesure supplémentaire intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_transaction
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transaction_id
+#, python-format
+msgid "Intrastat Transaction"
+msgstr "Transaction intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Intrastat Transaction Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_transaction_id
+msgid "Intrastat Transaction Type"
+msgstr "Type de transaction intrastat"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_transport_mode
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_transport_id
+msgid "Intrastat Transport Mode"
+msgstr "Mode de transport intrastat"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_report_intrastat_product_product_declaration_xls
+msgid "Intrastat declaration"
+msgstr "Déclaration intrastat"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move_intrastat_line
+msgid "Intrastat declaration details"
+msgstr "Détails de la déclaration intrastat"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Intrastat information"
+msgstr "Informations intrastat"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Intrastat transaction details"
+msgstr "Détails de la transactions intrastat"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Invalid Year!"
+msgstr "Année invalide !"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_stock_location
+msgid "Inventory Locations"
+msgstr "Emplacements de stock"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__move_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_id
+#, python-format
+msgid "Invoice"
+msgstr "Facture"
+
+#. module: intrastat_product
+#: model:res.groups,name:intrastat_product.group_invoice_intrastat_transaction_details
+msgid "Invoice Intrastat Transaction Details"
+msgstr "Détails des transactions intrastat de la facture"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__invoice_line_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_line_id
+msgid "Invoice Line"
+msgstr "Ligne de facture"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Invoices/Refunds"
+msgstr "Factures/avoirs"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_is_follower
+msgid "Is Follower"
+msgstr "Est abonné"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move
+msgid "Journal Entry"
+msgstr "Pièce comptable"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move_line
+msgid "Journal Item"
+msgstr "Écriture comptable"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form
+msgid "Kg"
+msgstr "Kg"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit____last_update
+msgid "Last Modified on"
+msgstr "Dernière modification le"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__write_uid
+msgid "Last Updated by"
+msgstr "Dernière mise à jour par"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__write_date
+msgid "Last Updated on"
+msgstr "Dernière mise à jour le"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_main_attachment_id
+msgid "Main Attachment"
+msgstr "Pièce jointe principale"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_has_error
+msgid "Message Delivery error"
+msgstr "Erreur d'envoi du message"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_ids
+msgid "Messages"
+msgstr "Messages"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>Country of Origin</em>"
+msgstr "<em>Pays d'origine</em> manquant"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>Country</em>"
+msgstr "<em>Pays</em> manquant"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>H.S. Code</em>"
+msgstr "<em>Code S.H.</em> manquant"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>VAT Number</em>"
+msgstr "<em>Numéro de TVA</em> manquant"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing link to a <em>regular unit of measure</em>"
+msgstr "Lien manquant vers une <em>unité de mesure normale</em>"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing unit of measure"
+msgstr "Unité de mesure manquante"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__month
+msgid "Month"
+msgstr "Mois"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_31
+msgid ""
+"Movements to/from a warehouse (excluding call-off and consignment stock)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__my_activity_date_deadline
+msgid "My Activity Deadline"
+msgstr "Date butoir de l'activité"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__name
+msgid "Name"
+msgstr "Nom"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_search
+msgid "Name, Code or Description"
+msgstr "Nom, code ou description"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__weight
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__weight
+msgid "Net weight in Kg"
+msgstr "Poids net en Kg"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_date_deadline
+msgid "Next Activity Deadline"
+msgstr "Date butoir de l'activité suivante"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_summary
+msgid "Next Activity Summary"
+msgstr "Résumé de l'activité suivante"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_type_id
+msgid "Next Activity Type"
+msgstr "Type de l'activité suivante"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Nihil"
+msgstr "Néant"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "No"
+msgstr "Non"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "No records found for the selected period !"
+msgstr "Aucun enregistrement trouvé pour la période sélectionnée !"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__note
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__note
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Notes"
+msgstr "Notes"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_needaction_counter
+msgid "Number of Actions"
+msgstr "Nombre d'actions"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__num_decl_lines
+msgid "Number of Declaration Lines"
+msgstr "Nombre de lignes de déclaration"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_has_error_counter
+msgid "Number of errors"
+msgstr "Nombre d'erreurs"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_needaction_counter
+msgid "Number of messages requiring action"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_has_error_counter
+msgid "Number of messages with delivery error"
+msgstr "Nombre de messages en échec d'envoi"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_result_view_form
+msgid "Ok"
+msgstr "Ok"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Origin Region"
+msgstr "Région d'origine"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Origin country"
+msgstr "Pays d'origine"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__src_dest_region_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__src_dest_region_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__src_dest_region_id
+msgid ""
+"Origin region for dispatches, destination region for arrivals. This field is "
+"used for the Intrastat Declaration."
+msgstr ""
+"Région d'origine pour les expéditions, région de destination pour les "
+"introductions. Ce champ est utilisé pour les déclarations intrastat."
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__src_dest_country_id
+msgid "Origin/Destination Country"
+msgstr "Pays d'origine/destination"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__src_dest_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__src_dest_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__src_dest_region_id
+msgid "Origin/Destination Region"
+msgstr "Région d'origine/destination"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_99
+msgid "Other"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_9
+msgid "Own propulsion"
+msgstr "Propulsion propre"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_9
+msgid ""
+"Own propulsion (imported or exported means of transport crossing the border "
+"under their own power, e.g. aircraft, lorries, boats, etc.)"
+msgstr ""
+"Propulsion propre (sert à désigner le mode de transport d'un bien acheminé "
+"par ses propres moyens : vente d'un avion ou d'un camion, l'avion et le "
+"camion se déplaçant de manière autonome)"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__partner_id
+#, python-format
+msgid "Partner"
+msgstr "Partenaire"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Partners"
+msgstr "Partenaires"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__year_month
+msgid "Period"
+msgstr "Période"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_result_view
+msgid "Pop-up to show errors on intrastat report generation"
+msgstr ""
+"Pop-up pour afficher les erreurs lors de la génération du rapport intrastat"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_5
+msgid "Post"
+msgstr "La Poste"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_5
+msgid "Postal consignments"
+msgstr "Envois postaux"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__product_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+#, python-format
+msgid "Product"
+msgstr "Article"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_tree
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_tree
+#, python-format
+msgid "Product C/O"
+msgstr "Pays ori. article"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Product C/O Code"
+msgstr "Code pays ori. article"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Products"
+msgstr "Articles"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__quantity
+msgid "Quantity"
+msgstr "Quantité"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_2
+msgid "Rail"
+msgstr "Rail"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_2
+msgid "Railway transport (including lorries on railway wagons)"
+msgstr "Transport par chemin de fer (y compris camions sur wagon)"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Reference"
+msgstr "Référence"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__region_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__region_code
+msgid "Region Code"
+msgstr "Code de la région"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__uom_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Regular UoM"
+msgstr "UdM normale"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form
+msgid "Related Transactions"
+msgstr "Transactions associées"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_71
+msgid ""
+"Release of goods for free circulation in a Member State with a subsequent "
+"export to another Member State"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Replace"
+msgstr "Remplace"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_23
+msgid "Replacement (e.g. under warranty) for goods not being returned"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_22
+msgid "Replacement for returned goods (free of charge)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__reporting_level
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__reporting_level
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__reporting_level
+msgid "Reporting Level"
+msgstr "Niveau d'obligation"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_user_id
+msgid "Responsible User"
+msgstr "Utilisateur responsable"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_21
+msgid "Return of goods (free of charge)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__revision
+msgid "Revision"
+msgstr "Révision"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_3
+msgid "Road"
+msgstr "Route"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_3
+msgid "Road Transport"
+msgstr "Transport routier"
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_sale_order
+msgid "Sales Order"
+msgstr "Commandes client"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_1
+msgid "Sea"
+msgstr "Mer"
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_1
+msgid ""
+"Sea Transport (including wagons, motor vehicles, trailers, semi-trailers and "
+"lighters on board of a ship)"
+msgstr "Transport maritime (y compris camions ou wagons sur bateau)"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_unit__uom_id
+msgid ""
+"Select the regular Unit of Measure of Odoo that corresponds to this "
+"Intrastat Supplementary Unit."
+msgstr ""
+"Sélectionnez l'unité de mesure normale d'Odoo qui correspond à cette unité "
+"de mesure supplémentaire intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__sequence
+msgid "Sequence"
+msgstr "Séquence"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_partner__invoice_intrastat_detail
+#: model:ir.model.fields,field_description:intrastat_product.field_res_users__invoice_intrastat_detail
+msgid "Show intrastat details in invoice report"
+msgstr "Afficher les transactions intrastat dans la facture"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Standard"
+msgstr "Simplifié"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__state
+msgid "State"
+msgstr "État"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__state
+msgid ""
+"State of the declaration. When the state is set to 'Done', the parameters "
+"become read-only."
+msgstr ""
+"État de la déclaration. Quand l'état est à 'Terminé', les champs passent en "
+"lecture seule."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_state
+msgid ""
+"Status based on activities\n"
+"Overdue: Due date is already passed\n"
+"Today: Activity date is today\n"
+"Planned: Future activities."
+msgstr ""
+"Statut basé sur les activités\n"
+"En retard : La date d'échéance est déjà dépassée\n"
+"Aujourd'hui : La date de l'activité est aujourd'hui\n"
+"Planifié : Activités futures."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__intrastat_unit_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__intrastat_unit_id
+#, python-format
+msgid "Suppl. Unit"
+msgstr "Unité suppl."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__suppl_unit_qty
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__suppl_unit_qty
+#, python-format
+msgid "Suppl. Unit Qty"
+msgstr "Qté unité suppl."
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_unit_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_unit_menu
+msgid "Supplementary Units"
+msgstr "Unités supplémentaires"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__suppl_unit_qty
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__suppl_unit_qty
+msgid "Supplementary Units Quantity"
+msgstr "Quantité exprimée en unité supplémentaire"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_32
+msgid ""
+"Supply for sale on approval or after trial (including call-off and "
+"consignment stock)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__company_country_code
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__company_country_code
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__company_country_code
+msgid ""
+"The ISO country code in two chars. \n"
+"You can use this field for quick search."
+msgstr ""
+"Le code ISO du pays en deux caractères. \n"
+"Vous pouvez utiliser ce champ pour une recherche rapide."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The VAT number '%s' is invalid."
+msgstr "Le numéro de TVA '%s' n'est pas valide."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The VAT number is not set for the partner '%s'."
+msgstr "Le numéro de TVA n'est pas renseigné sur le partenaire \"%s\"."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The declaration Action has been set to <em>nihil</em>."
+msgstr "L'action de la déclaration a été mis à <em>néant</em>."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The default Incoterm of the Company is not set, please configure it first."
+msgstr ""
+"L'incoterm par défaut de la société n'est pas configuré ; configurez-le au "
+"préalable."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The default Intrastat Transport Mode of the Company is not set, please "
+"configure it first."
+msgstr ""
+"Le mode de transport par défault de la société n'est pas configuré ; "
+"configurez-le au préalable."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__quantity
+msgid ""
+"The optional quantity expressed by this line, eg: number of product sold. "
+"The quantity is not a legal requirement but is very useful for some reports."
+msgstr ""
+"La quantité facultative exprimée par cette ligne, par exemple : nombre "
+"d'articles vendus. La quantité n'est pas une obligation légale, mais elle "
+"est très utile pour certains rapports."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The source/destination country is <em>%s</em> which is not part of the "
+"European Union"
+msgstr ""
+"Le pays d'origine/de destination est <em>%s</em> qui ne fait pas partie de "
+"l'Union Européenne"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_sale_order__intrastat_transport_id
+msgid "This information is used in Intrastat reports"
+msgstr "Cette donnée est utilisée pour les rapports intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__total_amount
+msgid "Total Fiscal Amount"
+msgstr "Montant fiscal total"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__total_amount
+msgid "Total fiscal amount in company currency of the declaration."
+msgstr "Montant fiscal total de la déclaration dans la devise de la société."
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+msgid "Transaction"
+msgstr "Transaction"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transaction_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transaction_code
+msgid "Transaction Code"
+msgstr "Code de transaction"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__transaction_suppl_unit_qty
+msgid "Transaction Suppl Unit Qty"
+msgstr "Qté de la transaction en unité suppl."
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_transaction_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_transaction_menu
+msgid "Transaction Types"
+msgstr "Types de transaction"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__transaction_weight
+msgid "Transaction Weight"
+msgstr "Poids de la transaction"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__transaction_suppl_unit_qty
+msgid "Transaction quantity in Intrastat Supplementary Unit"
+msgstr "Quantité de la transaction dans l'unité supplémentaire intrastat"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__transaction_weight
+msgid "Transaction weight in Kg: Quantity x Product Weight"
+msgstr "Poids de la transaction en Kg : Quantité x Poids de l'article"
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Transactions"
+msgstr "Transactions"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_52
+msgid ""
+"Transactions following processing under contract (not involving change of "
+"ownership). Goods not returning to the initial Member State/country of "
+"export."
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_51
+msgid ""
+"Transactions following processing under contract (not involving change of "
+"ownership). Goods returning to the initial Member State/country of export."
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_80
+msgid ""
+"Transactions involving the supply of building materials and technical "
+"equipment under a general construction or civil engineering contract for "
+"which no separate invoicing of the goods is required and an invoice for the "
+"total contract is issued"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_34
+msgid ""
+"Transactions involving transfer of ownership without financial compensation"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_41
+msgid ""
+"Transactions with a view to processing under contract (no change of "
+"ownership). Goods expected to return to the initial Member State/country of "
+"export"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_42
+msgid ""
+"Transactions with a view to processing under contract (no change of "
+"ownership). Goods not expected to return to the initial Member State/country "
+"of export"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_sale_order__intrastat_transport_id
+#, python-format
+msgid "Transport Mode"
+msgstr "Mode de transport"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Transport Mode Code"
+msgstr "Code du mode de transport"
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_transport_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_transport_menu
+msgid "Transport Modes"
+msgstr "Modes de transport"
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_72
+msgid ""
+"Transportation of goods from one Member State to another Member State to "
+"place the goods under the export procedure"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__declaration_type
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__declaration_type
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__declaration_type
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Type"
+msgstr "Type"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_exception_decoration
+msgid "Type of the exception activity on record."
+msgstr "Type de l'activité-alerte sur l'enregistrement."
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Unit Weight"
+msgstr "Poids unitaire"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__revision
+msgid "Used to keep track of changes"
+msgstr "Utilisé pour assurer le suivi des changements"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "VAT"
+msgstr "TVA"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__vat
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__vat
+msgid "VAT Number"
+msgstr "Numéro de TVA"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"VAT number is <em>%(vat)s</em>. If this partner is from Northern Ireland, "
+"his VAT number should be updated to his new VAT number starting with <em>XI</"
+"em> following Brexit. If this partner is from Great Britain, maybe the "
+"fiscal position was wrong on the invoice (the fiscal position was <i>"
+"%(fiscal_position)s</i>)."
+msgstr ""
+"Le numéro de TVA est <em>%(vat)s</em>. Si ce partenaire est originaire "
+"d'Irlande du Nord, son numéro de TVA doit être mis à jour avec son nouveau "
+"numéro de TVA qui commence par <em>XI</em> suite au Brexit. Si ce partenaire "
+"est de Grande-Bretagne, la position fiscale était peut-être erronée sur la "
+"facture (la position fiscale était <i>%(fiscal_position)s</i>)."
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_stock_warehouse
+msgid "Warehouse"
+msgstr "Entrepôt"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__website_message_ids
+msgid "Website Messages"
+msgstr "Messages du site Web"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__website_message_ids
+msgid "Website communication history"
+msgstr "Historique des échanges sur le site Web"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__weight
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__weight
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+#, python-format
+msgid "Weight"
+msgstr "Poids"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_id
+msgid "XML Attachment"
+msgstr "Pièce jointe XML"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_datas
+msgid "XML Export"
+msgstr "Export XML"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_name
+msgid "XML Filename"
+msgstr "Nom de fichier XML"
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__year
+msgid "Year"
+msgstr "Année"
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__year_month
+msgid "Year and month of the declaration."
+msgstr "Année et mois de la déclaration."
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__note
+msgid "You can add some comments here if you want."
+msgstr "Vous pouvez ajouter des commentaires ici si vous voulez."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "You must set the country on company '%s'."
+msgstr "Vous devez définir le pays sur la société '%s'."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "comput."
+msgstr "comput."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "decl."
+msgstr "décl."
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "for period %s"
+msgstr "pour la période %s"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "intrastat-%(year_month)s-%(declaration_type)s%(draft)s"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.report,print_report_name:intrastat_product.intrastat_product_xlsx_report
+msgid "object._get_xlsx_report_filename()"
+msgstr ""
+
+#~ msgid ""
+#~ "'intrastat-%s-%s%s' % (object.year_month, object.declaration_type, object."
+#~ "state == 'draft' and '-draft' or '')"
+#~ msgstr ""
+#~ "'intrastat-%s-%s%s ' % (object.year_month, object.declaration_type, "
+#~ "object.state == 'draft' and '-brouillon' or '')"
+
+#~ msgid "SMS Delivery error"
+#~ msgstr "Erreur d'envoi du SMS"
+
+#~ msgid "Number of messages which requires an action"
+#~ msgstr "Nombre de messages nécessitant une action"
+
+#~ msgid ""
+#~ "2 digit ISO code of the country of origin of the product.\n"
+#~ "Specify 'QU' when the country of origin is unknown.\n"
+#~ msgstr ""
+#~ "Code ISO à 2 letters du pays d'origine de l'article.\n"
+#~ "Indiquer \"QU\" lorsque le pays d'origine est inconnu.\n"
+
+#~ msgid ""
+#~ "2 digit code of country of origin of the product except for the UK.\n"
+#~ "Specify 'XI' for UK Northern Ireland and 'XU' for rest of the UK.\n"
+#~ "Specify 'QU' when the country is unknown.\n"
+#~ msgstr ""
+#~ "Code à 2 chiffres du pays d'origine de l'article, sauf pour le Royaume-"
+#~ "Uni.\n"
+#~ "Indiquez \"XI\" pour l'Irlande du Nord et \"XU\" pour le reste du Royaume-"
+#~ "Uni.\n"
+#~ "Indiquez \"QU\" lorsque le pays est inconnu.\n"
+
+#~ msgid ""
+#~ "2 digit code of country of origin/destination.\n"
+#~ "Specify 'XI' for UK Northern Ireland and 'XU' for rest of the UK."
+#~ msgstr ""
+#~ "Code à 2 lettres du pays d'origine/destination.\n"
+#~ "Indiquez \"XI\" pour l'Irlande du Nord et \"XU\" pour le reste du Royaume-"
+#~ "Uni."
+
+#~ msgid ""
+#~ "2 digit code of country of origin/destination.\n"
+#~ "Specify 'XI' for UK Northern Ireland."
+#~ msgstr ""
+#~ "Code à 2 lettres du pays d'origine/destination.\n"
+#~ "Précisez \"XI\" pour l'Irlande du Nord."
+
+#~ msgid ""
+#~ "Amount in company currency of the accessory costs related to this invoice "
+#~ "line (by default, these accessory costs are computed at the pro-rata of "
+#~ "the amount of each invoice line."
+#~ msgstr ""
+#~ "Montant dans la devise de la société des frais accessoires associés à "
+#~ "cette ligne de facture. Par défaut, les frais accessoires sont calculés "
+#~ "au pro-rata du montant de chaque ligne de facture."
+
+#~ msgid "Intrastat Product Computataion Lines"
+#~ msgstr "Lignes de transaction Intrastat"
+
+#~ msgid "Intrastat Product Report Base Object"
+#~ msgstr "Intrastat Product Report Base Object"
+
+#, python-format
+#~ msgid "Intrastat Transaction code"
+#~ msgstr "Code de transaction intrastat"
+
+#, python-format
+#~ msgid ""
+#~ "Conversion from Intrastat Supplementary Unit '%s' to Unit of Measure is "
+#~ "not implemented yet."
+#~ msgstr ""
+#~ "La conversion de l'unité supplémentaire de la DEB '%s' vers une unité de "
+#~ "mesure Odoo n'est pas encore implémenté."
+
+#, python-format
+#~ msgid "Conversion from unit of measure '%s' to '%s' is not implemented yet."
+#~ msgstr ""
+#~ "La conversion de l'unité de mesure '%s' vers '%s' n'est pas implémenté."
+
+#, python-format
+#~ msgid ""
+#~ "Conversion from unit of measure '%s' to 'Kg' is not implemented yet. It "
+#~ "is needed for product '%s'."
+#~ msgstr ""
+#~ "La conversion de l'unité de mesure '%s' vers 'Kg' n'est pas encore "
+#~ "implémenté. Elle est requise pour l'article '%s'."
+
+#~ msgid "Country of Origin"
+#~ msgstr "Pays d'origine"
+
+#, python-format
+#~ msgid "Declaration for Arrivals"
+#~ msgstr "DEB introduction"
+
+#, python-format
+#~ msgid "Declaration for Dispatches"
+#~ msgstr "DEB expédition"
+
+#~ msgid "Default Intrastat Transaction For Customer Invoice"
+#~ msgstr "Transaction DEB par défaut pour les factures client"
+
+#~ msgid "Default Intrastat Transaction For Supplier Invoices"
+#~ msgstr "Transaction DEB par défaut pour les factures fournisseur"
+
+#~ msgid "Default Intrastat Transaction For Supplier Refunds"
+#~ msgstr "Transaction DEB par défaut pour les avoirs client"
+
+#~ msgid "Default Intrastat Transaction for Customer Refunds"
+#~ msgstr "Transaction DEB par défaut pour les avoirs fournisseur"
+
+#, python-format
+#~ msgid "Generate Declaration Lines"
+#~ msgstr "Générer les lignes de DEB"
+
+#, python-format
+#~ msgid "Intrastat Code %s:"
+#~ msgstr "Code intrastat %s :"
+
+#~ msgid "Intrastat Declaration Line"
+#~ msgstr "Ligne de DEB"
+
+#~ msgid "Intrastat Declaration Lines"
+#~ msgstr "Lignes de DEB"
+
+#~ msgid "Intrastat Product"
+#~ msgstr "DEB"
+
+#~ msgid "Intrastat Product Declarations"
+#~ msgstr "DEBs"
+
+#~ msgid "Intrastat Transaction Types"
+#~ msgstr "Types de transaction DEB"
+
+#~ msgid "Intrastat Transportat Modes"
+#~ msgstr "Modes de transport pour la DEB"
+
+#~ msgid "Intrastat nature of transaction"
+#~ msgstr "Nature de la transaction pour la DEB"
+
+#, python-format
+#~ msgid "Invoice %s, line %s"
+#~ msgstr "Facture %s, ligne %s"
+
+#, python-format
+#~ msgid "Missing Intrastat Code on product %s. "
+#~ msgstr "Code intrastat manquant sur l'article %s. "
+
+#, python-format
+#~ msgid "Missing unit of measure."
+#~ msgstr "Unité de mesure manquante."
+
+#, python-format
+#~ msgid "Missing weight on product %s."
+#~ msgstr "Poids manquant sur l'article %s."
+
+#, python-format
+#~ msgid "No XML File has been generated."
+#~ msgstr "Fichier XML non généré."
+
+#~ msgid "Number of unread messages"
+#~ msgstr "Nombre de messages non plus"
+
+#~ msgid "Search Intrastat Product Declarations"
+#~ msgstr "Search Intrastat Product Declarations"
+
+#~ msgid "Search Intrastat Supplementary Units"
+#~ msgstr "Search Intrastat Supplementary Units"
+
+#~ msgid "Search Intrastat Transaction Types"
+#~ msgstr "Search Intrastat Transaction Types"
+
+#~ msgid "Search Intrastat Transport Modes"
+#~ msgstr "Search Intrastat Transport Modes"
+
+#, python-format
+#~ msgid "The Declaration Action has been set to 'nihil'."
+#~ msgstr "L'action de la déclaration a été mise à 'néant'."
+
+#~ msgid "Total amount"
+#~ msgstr "Montant total"
+
+#, fuzzy
+#~ msgid "Unread Messages Counter"
+#~ msgstr "Pays pour la DEB"
+
+#~ msgid "Valid"
+#~ msgstr "Valide"
+
+#, fuzzy, python-format
+#~ msgid "You must set company's country !"
+#~ msgstr "Vous devez configurer le pays de la société !"
+
+#~ msgid "Invalid Year !"
+#~ msgstr "Année invalide !"
+
+#~ msgid "Used in views and methods of localization modules."
+#~ msgstr "Used in views and methods of localization modules."
+
+#, fuzzy
+#~ msgid "Company Country code"
+#~ msgstr "Code pays de la société"
+
+#~ msgid ""
+#~ "Intrastat Codes should contain 8 digits. This is not the case for "
+#~ "Intrastat Code '%s' which has %d digits."
+#~ msgstr ""
+#~ "Les codes pour la DEB doivent être composés de 8 chiffres. Ce n'est pas "
+#~ "le cas du code pour la DEB '%s' qui compte %d chiffres."
+
+#~ msgid ""
+#~ "Intrastat Codes should only contain digits. This is not the case for code "
+#~ "'%s'."
+#~ msgstr ""
+#~ "Les codes pour la DEB ne doivent contenir que des chiffres. Ce n'est pas "
+#~ "le cas du code '%s'."
+
+#~ msgid "Intrastat Country"
+#~ msgstr "Pays pour la DEB"
+
+#~ msgid "Journal Entries"
+#~ msgstr "Écritures comptables"
+
+#~ msgid "Select the declaration type."
+#~ msgstr "Sélectionnez le type de déclaration."
+
+#~ msgid ""
+#~ "Missing H.S. code on product %s. This product is present in invoice %s."
+#~ msgstr ""
+#~ "Code S.H. manquant sur l'article %s. Cet article est présent sur la "
+#~ "facture %s."
+
+#~ msgid ""
+#~ "Missing unit of measure on the line with %d product(s) '%s' on invoice "
+#~ "'%s'."
+#~ msgstr ""
+#~ "Unité de mesure manquante sur la ligne où figurent %d article(s) '%s' sur "
+#~ "la facture '%s'."
+
+#~ msgid "Please adjust this line manually."
+#~ msgstr "Ligne à finaliser manuellement."
+
+#~ msgid ""
+#~ "Please correct the Intrastat Supplementary Unit settings and regenerate "
+#~ "the lines or adjust the lines with Intrastat Code '%s' manually"
+#~ msgstr ""
+#~ "Corrigez le paramétrage de l'unité de mesure supplémentaire pour la DEB "
+#~ "et regénérez les lignes ou ajustez manuellement les lignes avec le code "
+#~ "pour la DEB '%s'"
+
+#~ msgid ""
+#~ "Please correct the product record and regenerate the lines or adjust the "
+#~ "impacted lines manually"
+#~ msgstr ""
+#~ "Corrigez le paramétrage de l'article et regénérez les lignes ou ajustez "
+#~ "manuellement les lignes concernées."
+
+#~ msgid ""
+#~ "Please correct the unit of measure settings and regenerate the lines or "
+#~ "adjust the impacted lines manually"
+#~ msgstr ""
+#~ "Corrigez le paramétrage de l'unité de mesure et regénérez les lignes ou "
+#~ "ajustez manuellement les lignes concernées"
+
+#~ msgid "Default Incoterm for Intrastat"
+#~ msgstr "Incoterm par défaut pour la DEB"
+
+#~ msgid "Destination Region"
+#~ msgstr "Région destination"
+
+#~ msgid ""
+#~ "International Commercial Terms are a series of predefined commercial "
+#~ "terms used in international transactions."
+#~ msgstr ""
+#~ "Les Incoterms sont une série de termes commerciaux prédéfinie utilisés "
+#~ "dans les transactions internationales."
+
+#~ msgid "Origin Country"
+#~ msgstr "Pays d'origine"
+
+#~ msgid "Quotation"
+#~ msgstr "Devis"
diff --git a/intrastat_product/i18n/fr_BE.po b/intrastat_product/i18n/fr_BE.po
new file mode 100644
index 000000000..86f81a3c8
--- /dev/null
+++ b/intrastat_product/i18n/fr_BE.po
@@ -0,0 +1,1780 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# 	* intrastat_product
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: fr_BE\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "%(invoice)s line %(line_nbr)s"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid ""
+"(Re)compute the intrastat transaction details from the product master data."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__01
+msgid "01"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__02
+msgid "02"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__03
+msgid "03"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__04
+msgid "04"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__05
+msgid "05"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__06
+msgid "06"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__07
+msgid "07"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__08
+msgid "08"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__09
+msgid "09"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__10
+msgid "10"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__11
+msgid "11"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__12
+msgid "12"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__product_origin_country_code
+msgid ""
+"2 letters ISO code of the country of origin of the product except for the "
+"UK.\n"
+"Specify 'XI' for Northern Ireland and 'XU' for Great Britain.\n"
+"Specify 'QU' when the country is unknown.\n"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__product_origin_country_code
+msgid ""
+"2 letters ISO code of the country of origin of the product.\n"
+"Specify 'QU' when the country of origin is unknown.\n"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__src_dest_country_code
+msgid ""
+"2 letters ISO code of the country of origin/destination.\n"
+"Specify 'XI' for Northern Ireland and 'XU' for Great Britain."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__src_dest_country_code
+msgid ""
+"2 letters code of the country of origin/destination.\n"
+"Specify 'XI' for Northern Ireland."
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "<span>Intrastat Product Declaration </span>"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_product_declaration_date_uniq
+msgid ""
+"A declaration of the same type already exists for this month !\n"
+"You should update the existing declaration or change the revision number of "
+"this one."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__amount_accessory_cost_company_currency
+#, python-format
+msgid "Accessory Costs"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__action
+msgid "Action"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_needaction
+msgid "Action Needed"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__active
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__active
+msgid "Active"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_ids
+msgid "Activities"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_exception_decoration
+msgid "Activity Exception Decoration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_state
+msgid "Activity State"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_type_icon
+msgid "Activity Type Icon"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_4
+msgid "Air"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_4
+msgid "Air Transport"
+msgstr ""
+
+#. module: intrastat_product
+#: model:res.groups,comment:intrastat_product.group_invoice_intrastat_transaction_details
+msgid "Allow to encode Intrastat Transaction Details on Invoices"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__amount_accessory_cost_company_currency
+msgid ""
+"Amount in company currency of the accessory costs related to this invoice "
+"line. By default, these accessory costs are computed at the pro-rata of the "
+"amount of each invoice line."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__amount_company_currency
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__amount_company_currency
+msgid ""
+"Amount in company currency to write in the declaration. Amount in company "
+"currency = amount in invoice currency converted to company currency with the "
+"rate of the invoice date."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"An XML Export already exists for %s. To re-generate it, you must first "
+"delete it."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Append"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_form
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Archived"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Are you sure you want to go back to draft?"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_arrivals
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_arrivals
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#, python-format
+msgid "Arrivals"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_attachment_count
+msgid "Attachment Count"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_11
+msgid "B2B sale/purchase"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_12
+msgid "B2C sale/purchase (incl. distance sale)"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Back to Draft"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Cannot delete the declaration %s because it is in Done state."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__code
+msgid "Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_region_intrastat_region_code_unique
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_transaction_intrastat_transaction_code_unique
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_transport_mode_intrastat_transport_code_unique
+msgid "Code must be unique."
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+msgid "Code or Description"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_company
+msgid "Companies"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__company_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+msgid "Company"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__company_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_country_code
+msgid "Company Country Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_currency_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_currency_id
+msgid "Company currency"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__computation_line_ids
+#, python-format
+msgid "Computation Lines"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Compute"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_config_settings
+msgid "Config Settings"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Confirm"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_partner
+msgid "Contact"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"Conversion from unit of measure <em>%(source_uom)s</em> to <em>"
+"%(target_uom)s</em>, which is configured on the intrastat supplementary unit "
+"<i>%(intrastat_unit)s</i> of H.S. code <i>%(hs_code)s</i>, is not "
+"implemented yet"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"Conversion from unit of measure <em>%(source_uom)s</em> to <em>Kg</em> "
+"cannot be done automatically. It is needed for product <i>%(product)s</i> "
+"whose unit of measure is <i>%(product_uom)s</i>"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__country_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_search
+msgid "Country"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__src_dest_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__src_dest_country_code
+msgid "Country Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_origin_country_code
+msgid "Country Code of Origin of the Product"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Country Code of Origin/Destination"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__product_origin_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_origin_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__product_origin_country_code
+msgid "Country of Origin of the Product"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__src_dest_country_id
+#, python-format
+msgid "Country of Origin/Destination"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__product_origin_country_id
+msgid "Country of origin of the product i.e. product 'made in ____'"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__product_origin_country_id
+msgid "Country of origin of the product i.e. product 'made in ____'."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__create_date
+msgid "Created on"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__currency_id
+msgid "Currency"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Date"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+msgid "Declaration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__declaration_line_id
+msgid "Declaration Line"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+#, python-format
+msgid "Declaration Lines"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_region_id
+msgid "Default Intrastat Region"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_transport_id
+msgid "Default Transport Mode"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__description
+msgid "Description"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Destination Country"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__src_dest_country_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__src_dest_country_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__src_dest_country_id
+msgid "Destination country for dispatches. Origin country for arrivals."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_dispatches
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_dispatches
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#, python-format
+msgid "Dispatches"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__state__done
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Done"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__state__draft
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Draft"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.report,name:intrastat_product.intrastat_product_xlsx_report
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Excel Export"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Extended"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_33
+msgid "Financial leasing"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__amount_company_currency
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__amount_company_currency
+#, python-format
+msgid "Fiscal Value"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_7
+msgid "Fixed installations"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_7
+msgid "Fixed transport installations (e.g. pipelines, high-tension cables)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_follower_ids
+msgid "Followers"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_partner_ids
+msgid "Followers (Partners)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_type_icon
+msgid "Font awesome icon e.g. fa-tasks"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+#, python-format
+msgid "Generate Lines from Invoices"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Generate XML Declaration File"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid ""
+"Generate declaration lines, generate XML export and set declaration to 'Done'"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Generate lines from invoices: results"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Go to Accounting Configuration Settings screen"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Group By"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_hs_code
+msgid "H.S. Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.ui.menu,name:intrastat_product.intrastat_code_menu
+msgid "H.S. Codes"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "HS Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__has_message
+msgid "Has Message"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_91
+msgid "Hire, loan, and operational leasing longer than 24 months"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__id
+msgid "ID"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_exception_icon
+msgid "Icon"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_exception_icon
+msgid "Icon to indicate an exception activity."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_needaction
+msgid "If checked, new messages require your attention."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_has_error
+msgid "If checked, some messages have a delivery error."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_accessory_costs
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_accessory_costs
+msgid "Include Accessory Costs in Fiscal Value of Product"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__incoterm_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__incoterm_id
+#, python-format
+msgid "Incoterm"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_8
+msgid "Inland waterway"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_8
+msgid "Inland waterway transport"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__hs_code_id
+#, python-format
+msgid "Intrastat Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_sale_order__intrastat
+msgid "Intrastat Declaration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_line_ids
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_line_ids
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_line_ids
+msgid "Intrastat Declaration Details"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__intrastat_transaction_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__intrastat_transaction_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__intrastat_transaction_id
+msgid "Intrastat Nature of Transaction"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_computation_line
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__computation_line_ids
+msgid "Intrastat Product Computation Lines"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__parent_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__parent_id
+msgid "Intrastat Product Declaration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration_line
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__declaration_line_ids
+msgid "Intrastat Product Declaration Lines"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_region
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_stock_warehouse__region_id
+#, python-format
+msgid "Intrastat Region"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Intrastat Region Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_region_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_region_menu
+msgid "Intrastat Regions"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_result_view_form
+msgid "Intrastat Result View"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_hs_code__intrastat_unit_id
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__intrastat_unit_id
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__intrastat_unit_id
+msgid "Intrastat Supplementary Unit"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_unit
+#, python-format
+msgid "Intrastat Supplementary Units"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_transaction
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transaction_id
+#, python-format
+msgid "Intrastat Transaction"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Intrastat Transaction Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_transaction_id
+msgid "Intrastat Transaction Type"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_transport_mode
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_transport_id
+msgid "Intrastat Transport Mode"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_report_intrastat_product_product_declaration_xls
+msgid "Intrastat declaration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move_intrastat_line
+msgid "Intrastat declaration details"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Intrastat information"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Intrastat transaction details"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Invalid Year!"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_stock_location
+msgid "Inventory Locations"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__move_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_id
+#, python-format
+msgid "Invoice"
+msgstr ""
+
+#. module: intrastat_product
+#: model:res.groups,name:intrastat_product.group_invoice_intrastat_transaction_details
+msgid "Invoice Intrastat Transaction Details"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__invoice_line_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_line_id
+msgid "Invoice Line"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Invoices/Refunds"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_is_follower
+msgid "Is Follower"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move
+msgid "Journal Entry"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form
+msgid "Kg"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_main_attachment_id
+msgid "Main Attachment"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_has_error
+msgid "Message Delivery error"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_ids
+msgid "Messages"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>Country of Origin</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>Country</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>H.S. Code</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>VAT Number</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing link to a <em>regular unit of measure</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing unit of measure"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__month
+msgid "Month"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_31
+msgid ""
+"Movements to/from a warehouse (excluding call-off and consignment stock)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__my_activity_date_deadline
+msgid "My Activity Deadline"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__name
+msgid "Name"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_search
+msgid "Name, Code or Description"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__weight
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__weight
+msgid "Net weight in Kg"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_date_deadline
+msgid "Next Activity Deadline"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_summary
+msgid "Next Activity Summary"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_type_id
+msgid "Next Activity Type"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Nihil"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "No"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "No records found for the selected period !"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__note
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__note
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Notes"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_needaction_counter
+msgid "Number of Actions"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__num_decl_lines
+msgid "Number of Declaration Lines"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_has_error_counter
+msgid "Number of errors"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_needaction_counter
+msgid "Number of messages requiring action"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_has_error_counter
+msgid "Number of messages with delivery error"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_result_view_form
+msgid "Ok"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Origin Region"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Origin country"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__src_dest_region_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__src_dest_region_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__src_dest_region_id
+msgid ""
+"Origin region for dispatches, destination region for arrivals. This field is "
+"used for the Intrastat Declaration."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__src_dest_country_id
+msgid "Origin/Destination Country"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__src_dest_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__src_dest_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__src_dest_region_id
+msgid "Origin/Destination Region"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_99
+msgid "Other"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_9
+msgid "Own propulsion"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_9
+msgid ""
+"Own propulsion (imported or exported means of transport crossing the border "
+"under their own power, e.g. aircraft, lorries, boats, etc.)"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__partner_id
+#, python-format
+msgid "Partner"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Partners"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__year_month
+msgid "Period"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_result_view
+msgid "Pop-up to show errors on intrastat report generation"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_5
+msgid "Post"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_5
+msgid "Postal consignments"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__product_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+#, python-format
+msgid "Product"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_tree
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_tree
+#, python-format
+msgid "Product C/O"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Product C/O Code"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Products"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__quantity
+msgid "Quantity"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_2
+msgid "Rail"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_2
+msgid "Railway transport (including lorries on railway wagons)"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Reference"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__region_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__region_code
+msgid "Region Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__uom_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Regular UoM"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form
+msgid "Related Transactions"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_71
+msgid ""
+"Release of goods for free circulation in a Member State with a subsequent "
+"export to another Member State"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Replace"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_23
+msgid "Replacement (e.g. under warranty) for goods not being returned"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_22
+msgid "Replacement for returned goods (free of charge)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__reporting_level
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__reporting_level
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__reporting_level
+msgid "Reporting Level"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_user_id
+msgid "Responsible User"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_21
+msgid "Return of goods (free of charge)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__revision
+msgid "Revision"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_3
+msgid "Road"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_3
+msgid "Road Transport"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_sale_order
+msgid "Sales Order"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_1
+msgid "Sea"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_1
+msgid ""
+"Sea Transport (including wagons, motor vehicles, trailers, semi-trailers and "
+"lighters on board of a ship)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_unit__uom_id
+msgid ""
+"Select the regular Unit of Measure of Odoo that corresponds to this "
+"Intrastat Supplementary Unit."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_partner__invoice_intrastat_detail
+#: model:ir.model.fields,field_description:intrastat_product.field_res_users__invoice_intrastat_detail
+msgid "Show intrastat details in invoice report"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Standard"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__state
+msgid "State"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__state
+msgid ""
+"State of the declaration. When the state is set to 'Done', the parameters "
+"become read-only."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_state
+msgid ""
+"Status based on activities\n"
+"Overdue: Due date is already passed\n"
+"Today: Activity date is today\n"
+"Planned: Future activities."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__intrastat_unit_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__intrastat_unit_id
+#, python-format
+msgid "Suppl. Unit"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__suppl_unit_qty
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__suppl_unit_qty
+#, python-format
+msgid "Suppl. Unit Qty"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_unit_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_unit_menu
+msgid "Supplementary Units"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__suppl_unit_qty
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__suppl_unit_qty
+msgid "Supplementary Units Quantity"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_32
+msgid ""
+"Supply for sale on approval or after trial (including call-off and "
+"consignment stock)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__company_country_code
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__company_country_code
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__company_country_code
+msgid ""
+"The ISO country code in two chars. \n"
+"You can use this field for quick search."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The VAT number '%s' is invalid."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The VAT number is not set for the partner '%s'."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The declaration Action has been set to <em>nihil</em>."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The default Incoterm of the Company is not set, please configure it first."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The default Intrastat Transport Mode of the Company is not set, please "
+"configure it first."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__quantity
+msgid ""
+"The optional quantity expressed by this line, eg: number of product sold. "
+"The quantity is not a legal requirement but is very useful for some reports."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The source/destination country is <em>%s</em> which is not part of the "
+"European Union"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_sale_order__intrastat_transport_id
+msgid "This information is used in Intrastat reports"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__total_amount
+msgid "Total Fiscal Amount"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__total_amount
+msgid "Total fiscal amount in company currency of the declaration."
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+msgid "Transaction"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transaction_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transaction_code
+msgid "Transaction Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__transaction_suppl_unit_qty
+msgid "Transaction Suppl Unit Qty"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_transaction_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_transaction_menu
+msgid "Transaction Types"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__transaction_weight
+msgid "Transaction Weight"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__transaction_suppl_unit_qty
+msgid "Transaction quantity in Intrastat Supplementary Unit"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__transaction_weight
+msgid "Transaction weight in Kg: Quantity x Product Weight"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Transactions"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_52
+msgid ""
+"Transactions following processing under contract (not involving change of "
+"ownership). Goods not returning to the initial Member State/country of "
+"export."
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_51
+msgid ""
+"Transactions following processing under contract (not involving change of "
+"ownership). Goods returning to the initial Member State/country of export."
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_80
+msgid ""
+"Transactions involving the supply of building materials and technical "
+"equipment under a general construction or civil engineering contract for "
+"which no separate invoicing of the goods is required and an invoice for the "
+"total contract is issued"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_34
+msgid ""
+"Transactions involving transfer of ownership without financial compensation"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_41
+msgid ""
+"Transactions with a view to processing under contract (no change of "
+"ownership). Goods expected to return to the initial Member State/country of "
+"export"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_42
+msgid ""
+"Transactions with a view to processing under contract (no change of "
+"ownership). Goods not expected to return to the initial Member State/country "
+"of export"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_sale_order__intrastat_transport_id
+#, python-format
+msgid "Transport Mode"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Transport Mode Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_transport_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_transport_menu
+msgid "Transport Modes"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_72
+msgid ""
+"Transportation of goods from one Member State to another Member State to "
+"place the goods under the export procedure"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__declaration_type
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__declaration_type
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__declaration_type
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Type"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_exception_decoration
+msgid "Type of the exception activity on record."
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Unit Weight"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__revision
+msgid "Used to keep track of changes"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "VAT"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__vat
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__vat
+msgid "VAT Number"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"VAT number is <em>%(vat)s</em>. If this partner is from Northern Ireland, "
+"his VAT number should be updated to his new VAT number starting with <em>XI</"
+"em> following Brexit. If this partner is from Great Britain, maybe the "
+"fiscal position was wrong on the invoice (the fiscal position was <i>"
+"%(fiscal_position)s</i>)."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_stock_warehouse
+msgid "Warehouse"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__website_message_ids
+msgid "Website Messages"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__website_message_ids
+msgid "Website communication history"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__weight
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__weight
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+#, python-format
+msgid "Weight"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_id
+msgid "XML Attachment"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_datas
+msgid "XML Export"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_name
+msgid "XML Filename"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__year
+msgid "Year"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__year_month
+msgid "Year and month of the declaration."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__note
+msgid "You can add some comments here if you want."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "You must set the country on company '%s'."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "comput."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "decl."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "for period %s"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "intrastat-%(year_month)s-%(declaration_type)s%(draft)s"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.report,print_report_name:intrastat_product.intrastat_product_xlsx_report
+msgid "object._get_xlsx_report_filename()"
+msgstr ""
diff --git a/intrastat_product/i18n/intrastat_product.pot b/intrastat_product/i18n/intrastat_product.pot
new file mode 100644
index 000000000..c68b45587
--- /dev/null
+++ b/intrastat_product/i18n/intrastat_product.pot
@@ -0,0 +1,1780 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# 	* intrastat_product
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 16.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "%(invoice)s line %(line_nbr)s"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid ""
+"(Re)compute the intrastat transaction details from the product master data."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__01
+msgid "01"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__02
+msgid "02"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__03
+msgid "03"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__04
+msgid "04"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__05
+msgid "05"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__06
+msgid "06"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__07
+msgid "07"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__08
+msgid "08"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__09
+msgid "09"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__10
+msgid "10"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__11
+msgid "11"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__month__12
+msgid "12"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__product_origin_country_code
+msgid ""
+"2 letters ISO code of the country of origin of the product except for the UK.\n"
+"Specify 'XI' for Northern Ireland and 'XU' for Great Britain.\n"
+"Specify 'QU' when the country is unknown.\n"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__product_origin_country_code
+msgid ""
+"2 letters ISO code of the country of origin of the product.\n"
+"Specify 'QU' when the country of origin is unknown.\n"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__src_dest_country_code
+msgid ""
+"2 letters ISO code of the country of origin/destination.\n"
+"Specify 'XI' for Northern Ireland and 'XU' for Great Britain."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__src_dest_country_code
+msgid ""
+"2 letters code of the country of origin/destination.\n"
+"Specify 'XI' for Northern Ireland."
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "<span>Intrastat Product Declaration </span>"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_product_declaration_date_uniq
+msgid ""
+"A declaration of the same type already exists for this month !\n"
+"You should update the existing declaration or change the revision number of this one."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__amount_accessory_cost_company_currency
+#, python-format
+msgid "Accessory Costs"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__action
+msgid "Action"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_needaction
+msgid "Action Needed"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__active
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__active
+msgid "Active"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_ids
+msgid "Activities"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_exception_decoration
+msgid "Activity Exception Decoration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_state
+msgid "Activity State"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_type_icon
+msgid "Activity Type Icon"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_4
+msgid "Air"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_4
+msgid "Air Transport"
+msgstr ""
+
+#. module: intrastat_product
+#: model:res.groups,comment:intrastat_product.group_invoice_intrastat_transaction_details
+msgid "Allow to encode Intrastat Transaction Details on Invoices"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__amount_accessory_cost_company_currency
+msgid ""
+"Amount in company currency of the accessory costs related to this invoice "
+"line. By default, these accessory costs are computed at the pro-rata of the "
+"amount of each invoice line."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__amount_company_currency
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__amount_company_currency
+msgid ""
+"Amount in company currency to write in the declaration. Amount in company "
+"currency = amount in invoice currency converted to company currency with the"
+" rate of the invoice date."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"An XML Export already exists for %s. To re-generate it, you must first "
+"delete it."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Append"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_form
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Archived"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Are you sure you want to go back to draft?"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_arrivals
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_arrivals
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#, python-format
+msgid "Arrivals"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_attachment_count
+msgid "Attachment Count"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_11
+msgid "B2B sale/purchase"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_12
+msgid "B2C sale/purchase (incl. distance sale)"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Back to Draft"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Cannot delete the declaration %s because it is in Done state."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__code
+msgid "Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_region_intrastat_region_code_unique
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_transaction_intrastat_transaction_code_unique
+#: model:ir.model.constraint,message:intrastat_product.constraint_intrastat_transport_mode_intrastat_transport_code_unique
+msgid "Code must be unique."
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+msgid "Code or Description"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_company
+msgid "Companies"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__company_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__company_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+msgid "Company"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__company_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_country_code
+msgid "Company Country Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__company_currency_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__company_currency_id
+msgid "Company currency"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__computation_line_ids
+#, python-format
+msgid "Computation Lines"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Compute"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_config_settings
+msgid "Config Settings"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Confirm"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_res_partner
+msgid "Contact"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"Conversion from unit of measure <em>%(source_uom)s</em> to "
+"<em>%(target_uom)s</em>, which is configured on the intrastat supplementary "
+"unit <i>%(intrastat_unit)s</i> of H.S. code <i>%(hs_code)s</i>, is not "
+"implemented yet"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"Conversion from unit of measure <em>%(source_uom)s</em> to <em>Kg</em> "
+"cannot be done automatically. It is needed for product <i>%(product)s</i> "
+"whose unit of measure is <i>%(product_uom)s</i>"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__country_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_search
+msgid "Country"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__src_dest_country_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__src_dest_country_code
+msgid "Country Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_origin_country_code
+msgid "Country Code of Origin of the Product"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Country Code of Origin/Destination"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__product_origin_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_origin_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__product_origin_country_code
+msgid "Country of Origin of the Product"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__src_dest_country_id
+#, python-format
+msgid "Country of Origin/Destination"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__product_origin_country_id
+msgid "Country of origin of the product i.e. product 'made in ____'"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__product_origin_country_id
+msgid "Country of origin of the product i.e. product 'made in ____'."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__create_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__create_uid
+msgid "Created by"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__create_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__create_date
+msgid "Created on"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__currency_id
+msgid "Currency"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Date"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+msgid "Declaration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__declaration_line_id
+msgid "Declaration Line"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+#, python-format
+msgid "Declaration Lines"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_region_id
+msgid "Default Intrastat Region"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_transport_id
+msgid "Default Transport Mode"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__description
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__description
+msgid "Description"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Destination Country"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__src_dest_country_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__src_dest_country_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__src_dest_country_id
+msgid "Destination country for dispatches. Origin country for arrivals."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_dispatches
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_dispatches
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#, python-format
+msgid "Dispatches"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__display_name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__state__done
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Done"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields.selection,name:intrastat_product.selection__intrastat_product_declaration__state__draft
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Draft"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.report,name:intrastat_product.intrastat_product_xlsx_report
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Excel Export"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Extended"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_33
+msgid "Financial leasing"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__amount_company_currency
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__amount_company_currency
+#, python-format
+msgid "Fiscal Value"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_7
+msgid "Fixed installations"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_7
+msgid "Fixed transport installations (e.g. pipelines, high-tension cables)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_follower_ids
+msgid "Followers"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_partner_ids
+msgid "Followers (Partners)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_type_icon
+msgid "Font awesome icon e.g. fa-tasks"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+#, python-format
+msgid "Generate Lines from Invoices"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Generate XML Declaration File"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid ""
+"Generate declaration lines, generate XML export and set declaration to "
+"'Done'"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Generate lines from invoices: results"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Go to Accounting Configuration Settings screen"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Group By"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_hs_code
+msgid "H.S. Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.ui.menu,name:intrastat_product.intrastat_code_menu
+msgid "H.S. Codes"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "HS Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__has_message
+msgid "Has Message"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_91
+msgid "Hire, loan, and operational leasing longer than 24 months"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__id
+msgid "ID"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_exception_icon
+msgid "Icon"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_exception_icon
+msgid "Icon to indicate an exception activity."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_needaction
+msgid "If checked, new messages require your attention."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_has_error
+msgid "If checked, some messages have a delivery error."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_accessory_costs
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_accessory_costs
+msgid "Include Accessory Costs in Fiscal Value of Product"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__incoterm_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__incoterm_id
+#, python-format
+msgid "Incoterm"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_8
+msgid "Inland waterway"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_8
+msgid "Inland waterway transport"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__hs_code_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__hs_code_id
+#, python-format
+msgid "Intrastat Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat
+#: model:ir.model.fields,field_description:intrastat_product.field_sale_order__intrastat
+msgid "Intrastat Declaration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_line_ids
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_line_ids
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_line_ids
+msgid "Intrastat Declaration Details"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__intrastat_transaction_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__intrastat_transaction_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__intrastat_transaction_id
+msgid "Intrastat Nature of Transaction"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_computation_line
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__computation_line_ids
+msgid "Intrastat Product Computation Lines"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__parent_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__parent_id
+msgid "Intrastat Product Declaration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration_line
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__declaration_line_ids
+msgid "Intrastat Product Declaration Lines"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_region
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_stock_warehouse__region_id
+#, python-format
+msgid "Intrastat Region"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Intrastat Region Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_region_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_region_menu
+msgid "Intrastat Regions"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_result_view_form
+msgid "Intrastat Result View"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_hs_code__intrastat_unit_id
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__intrastat_unit_id
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__intrastat_unit_id
+msgid "Intrastat Supplementary Unit"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_unit
+#, python-format
+msgid "Intrastat Supplementary Units"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model,name:intrastat_product.model_intrastat_transaction
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transaction_id
+#, python-format
+msgid "Intrastat Transaction"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Intrastat Transaction Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_transaction_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_transaction_id
+msgid "Intrastat Transaction Type"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_transport_mode
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__intrastat_transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__intrastat_transport_id
+msgid "Intrastat Transport Mode"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_report_intrastat_product_product_declaration_xls
+msgid "Intrastat declaration"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move_intrastat_line
+msgid "Intrastat declaration details"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Intrastat information"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Intrastat transaction details"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Invalid Year!"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_stock_location
+msgid "Inventory Locations"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__move_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_id
+#, python-format
+msgid "Invoice"
+msgstr ""
+
+#. module: intrastat_product
+#: model:res.groups,name:intrastat_product.group_invoice_intrastat_transaction_details
+msgid "Invoice Intrastat Transaction Details"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__invoice_line_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_line_id
+msgid "Invoice Line"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Invoices/Refunds"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_is_follower
+msgid "Is Follower"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move
+msgid "Journal Entry"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_account_move_line
+msgid "Journal Item"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form
+msgid "Kg"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode____last_update
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit____last_update
+msgid "Last Modified on"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__write_uid
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__write_uid
+msgid "Last Updated by"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transaction__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__write_date
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__write_date
+msgid "Last Updated on"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_main_attachment_id
+msgid "Main Attachment"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_has_error
+msgid "Message Delivery error"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_ids
+msgid "Messages"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>Country of Origin</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>Country</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>H.S. Code</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing <em>VAT Number</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing link to a <em>regular unit of measure</em>"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Missing unit of measure"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__month
+msgid "Month"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_31
+msgid ""
+"Movements to/from a warehouse (excluding call-off and consignment stock)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__my_activity_date_deadline
+msgid "My Activity Deadline"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_region__name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_transport_mode__name
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__name
+msgid "Name"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_search
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_search
+msgid "Name, Code or Description"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__weight
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__weight
+msgid "Net weight in Kg"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_date_deadline
+msgid "Next Activity Deadline"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_summary
+msgid "Next Activity Summary"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_type_id
+msgid "Next Activity Type"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Nihil"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "No"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "No records found for the selected period !"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__note
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_result_view__note
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Notes"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_needaction_counter
+msgid "Number of Actions"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__num_decl_lines
+msgid "Number of Declaration Lines"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_has_error_counter
+msgid "Number of errors"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_needaction_counter
+msgid "Number of messages requiring action"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_has_error_counter
+msgid "Number of messages with delivery error"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_result_view_form
+msgid "Ok"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.view_move_form
+msgid "Origin Region"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Origin country"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_bank_statement_line__src_dest_region_id
+#: model:ir.model.fields,help:intrastat_product.field_account_move__src_dest_region_id
+#: model:ir.model.fields,help:intrastat_product.field_account_payment__src_dest_region_id
+msgid ""
+"Origin region for dispatches, destination region for arrivals. This field is"
+" used for the Intrastat Declaration."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__src_dest_country_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__src_dest_country_id
+msgid "Origin/Destination Country"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_bank_statement_line__src_dest_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move__src_dest_region_id
+#: model:ir.model.fields,field_description:intrastat_product.field_account_payment__src_dest_region_id
+msgid "Origin/Destination Region"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_99
+msgid "Other"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_9
+msgid "Own propulsion"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_9
+msgid ""
+"Own propulsion (imported or exported means of transport crossing the border "
+"under their own power, e.g. aircraft, lorries, boats, etc.)"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__partner_id
+#, python-format
+msgid "Partner"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Partners"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__year_month
+msgid "Period"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_intrastat_result_view
+msgid "Pop-up to show errors on intrastat report generation"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_5
+msgid "Post"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_5
+msgid "Postal consignments"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__product_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+#, python-format
+msgid "Product"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_tree
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_tree
+#, python-format
+msgid "Product C/O"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Product C/O Code"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Products"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__quantity
+msgid "Quantity"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_2
+msgid "Rail"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_2
+msgid "Railway transport (including lorries on railway wagons)"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Reference"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__region_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__region_code
+msgid "Region Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit__uom_id
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search
+msgid "Regular UoM"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form
+msgid "Related Transactions"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_71
+msgid ""
+"Release of goods for free circulation in a Member State with a subsequent "
+"export to another Member State"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Replace"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_23
+msgid "Replacement (e.g. under warranty) for goods not being returned"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_22
+msgid "Replacement for returned goods (free of charge)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__reporting_level
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__reporting_level
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__reporting_level
+msgid "Reporting Level"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__activity_user_id
+msgid "Responsible User"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_21
+msgid "Return of goods (free of charge)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__revision
+msgid "Revision"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_3
+msgid "Road"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_3
+msgid "Road Transport"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_sale_order
+msgid "Sales Order"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,name:intrastat_product.intrastat_transport_1
+msgid "Sea"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transport_mode,description:intrastat_product.intrastat_transport_1
+msgid ""
+"Sea Transport (including wagons, motor vehicles, trailers, semi-trailers and"
+" lighters on board of a ship)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_unit__uom_id
+msgid ""
+"Select the regular Unit of Measure of Odoo that corresponds to this "
+"Intrastat Supplementary Unit."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__sequence
+msgid "Sequence"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_res_partner__invoice_intrastat_detail
+#: model:ir.model.fields,field_description:intrastat_product.field_res_users__invoice_intrastat_detail
+msgid "Show intrastat details in invoice report"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "Standard"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__state
+msgid "State"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__state
+msgid ""
+"State of the declaration. When the state is set to 'Done', the parameters "
+"become read-only."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_state
+msgid ""
+"Status based on activities\n"
+"Overdue: Due date is already passed\n"
+"Today: Activity date is today\n"
+"Planned: Future activities."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__intrastat_unit_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__intrastat_unit_id
+#, python-format
+msgid "Suppl. Unit"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__suppl_unit_qty
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__suppl_unit_qty
+#, python-format
+msgid "Suppl. Unit Qty"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_unit_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_unit_menu
+msgid "Supplementary Units"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__suppl_unit_qty
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__suppl_unit_qty
+msgid "Supplementary Units Quantity"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_32
+msgid ""
+"Supply for sale on approval or after trial (including call-off and "
+"consignment stock)"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__company_country_code
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__company_country_code
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__company_country_code
+msgid ""
+"The ISO country code in two chars. \n"
+"You can use this field for quick search."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The VAT number '%s' is invalid."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The VAT number is not set for the partner '%s'."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "The declaration Action has been set to <em>nihil</em>."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The default Incoterm of the Company is not set, please configure it first."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The default Intrastat Transport Mode of the Company is not set, please "
+"configure it first."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__quantity
+msgid ""
+"The optional quantity expressed by this line, eg: number of product sold. "
+"The quantity is not a legal requirement but is very useful for some reports."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"The source/destination country is <em>%s</em> which is not part of the "
+"European Union"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_sale_order__intrastat_transport_id
+msgid "This information is used in Intrastat reports"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__total_amount
+msgid "Total Fiscal Amount"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__total_amount
+msgid "Total fiscal amount in company currency of the declaration."
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form
+msgid "Transaction"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transaction_code
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transaction_code
+msgid "Transaction Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__transaction_suppl_unit_qty
+msgid "Transaction Suppl Unit Qty"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_transaction_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_transaction_menu
+msgid "Transaction Types"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_account_move_intrastat_line__transaction_weight
+msgid "Transaction Weight"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__transaction_suppl_unit_qty
+msgid "Transaction quantity in Intrastat Supplementary Unit"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_account_move_intrastat_line__transaction_weight
+msgid "Transaction weight in Kg: Quantity x Product Weight"
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form
+msgid "Transactions"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_52
+msgid ""
+"Transactions following processing under contract (not involving change of "
+"ownership). Goods not returning to the initial Member State/country of "
+"export."
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_51
+msgid ""
+"Transactions following processing under contract (not involving change of "
+"ownership). Goods returning to the initial Member State/country of export."
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_80
+msgid ""
+"Transactions involving the supply of building materials and technical "
+"equipment under a general construction or civil engineering contract for "
+"which no separate invoicing of the goods is required and an invoice for the "
+"total contract is issued"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_34
+msgid ""
+"Transactions involving transfer of ownership without financial compensation"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_41
+msgid ""
+"Transactions with a view to processing under contract (no change of "
+"ownership). Goods expected to return to the initial Member State/country of "
+"export"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_42
+msgid ""
+"Transactions with a view to processing under contract (no change of "
+"ownership). Goods not expected to return to the initial Member State/country"
+" of export"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__transport_id
+#: model:ir.model.fields,field_description:intrastat_product.field_sale_order__intrastat_transport_id
+#, python-format
+msgid "Transport Mode"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "Transport Mode Code"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.act_window,name:intrastat_product.intrastat_transport_action
+#: model:ir.ui.menu,name:intrastat_product.intrastat_transport_menu
+msgid "Transport Modes"
+msgstr ""
+
+#. module: intrastat_product
+#: model:intrastat.transaction,description:intrastat_product.intrastat_transaction_72
+msgid ""
+"Transportation of goods from one Member State to another Member State to "
+"place the goods under the export procedure"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__declaration_type
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__declaration_type
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__declaration_type
+#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search
+msgid "Type"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__activity_exception_decoration
+msgid "Type of the exception activity on record."
+msgstr ""
+
+#. module: intrastat_product
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+msgid "Unit Weight"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__revision
+msgid "Used to keep track of changes"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "VAT"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__vat
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__vat
+msgid "VAT Number"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid ""
+"VAT number is <em>%(vat)s</em>. If this partner is from Northern Ireland, "
+"his VAT number should be updated to his new VAT number starting with "
+"<em>XI</em> following Brexit. If this partner is from Great Britain, maybe "
+"the fiscal position was wrong on the invoice (the fiscal position was "
+"<i>%(fiscal_position)s</i>)."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model,name:intrastat_product.model_stock_warehouse
+msgid "Warehouse"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__website_message_ids
+msgid "Website Messages"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__website_message_ids
+msgid "Website communication history"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__weight
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__weight
+#: model_terms:ir.ui.view,arch_db:intrastat_product.report_invoice_document_intrastat_product
+#, python-format
+msgid "Weight"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_id
+msgid "XML Attachment"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_datas
+msgid "XML Export"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__xml_attachment_name
+msgid "XML Filename"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__year
+msgid "Year"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__year_month
+msgid "Year and month of the declaration."
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__note
+msgid "You can add some comments here if you want."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "You must set the country on company '%s'."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "comput."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "decl."
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:0
+#, python-format
+msgid "for period %s"
+msgstr ""
+
+#. module: intrastat_product
+#. odoo-python
+#: code:addons/intrastat_product/models/intrastat_product_declaration.py:0
+#, python-format
+msgid "intrastat-%(year_month)s-%(declaration_type)s%(draft)s"
+msgstr ""
+
+#. module: intrastat_product
+#: model:ir.actions.report,print_report_name:intrastat_product.intrastat_product_xlsx_report
+msgid "object._get_xlsx_report_filename()"
+msgstr ""
diff --git a/intrastat_product/models/__init__.py b/intrastat_product/models/__init__.py
new file mode 100644
index 000000000..976331c13
--- /dev/null
+++ b/intrastat_product/models/__init__.py
@@ -0,0 +1,11 @@
+from . import res_company
+from . import res_partner
+from . import account_move
+from . import hs_code
+from . import intrastat_product_declaration
+from . import intrastat_region
+from . import intrastat_transaction
+from . import intrastat_transport_mode
+from . import intrastat_unit
+from . import sale_order
+from . import stock_warehouse
diff --git a/intrastat_product/models/account_move.py b/intrastat_product/models/account_move.py
new file mode 100644
index 000000000..d135c83e5
--- /dev/null
+++ b/intrastat_product/models/account_move.py
@@ -0,0 +1,209 @@
+# Copyright 2011-2020 Akretion France (http://www.akretion.com)
+# Copyright 2009-2022 Noviat (http://www.noviat.com)
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# @author Luc de Meyer <info@noviat.com>
+
+from odoo import Command, api, fields, models
+
+
+class AccountMove(models.Model):
+    _inherit = "account.move"
+
+    intrastat_transaction_id = fields.Many2one(
+        comodel_name="intrastat.transaction",
+        string="Intrastat Transaction Type",
+        ondelete="restrict",
+        tracking=True,
+        check_company=True,
+        help="Intrastat Nature of Transaction",
+        domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]",
+    )
+    intrastat_transport_id = fields.Many2one(
+        comodel_name="intrastat.transport_mode",
+        string="Intrastat Transport Mode",
+        ondelete="restrict",
+    )
+    src_dest_country_id = fields.Many2one(
+        comodel_name="res.country",
+        string="Origin/Destination Country",
+        compute="_compute_src_dest_country_id",
+        store=True,
+        help="Destination country for dispatches. Origin country for arrivals.",
+    )
+    src_dest_region_id = fields.Many2one(
+        comodel_name="intrastat.region",
+        string="Origin/Destination Region",
+        default=lambda self: self.env.company.intrastat_region_id,
+        help="Origin region for dispatches, destination region for "
+        "arrivals. This field is used for the Intrastat Declaration.",
+        ondelete="restrict",
+    )
+    intrastat = fields.Char(
+        string="Intrastat Declaration", related="company_id.intrastat"
+    )
+    intrastat_line_ids = fields.One2many(
+        comodel_name="account.move.intrastat.line",
+        inverse_name="move_id",
+        string="Intrastat Declaration Details",
+    )
+
+    @api.depends("partner_shipping_id.country_id", "partner_id.country_id")
+    def _compute_src_dest_country_id(self):
+        for inv in self:
+            country = inv.partner_shipping_id.country_id or inv.partner_id.country_id
+            if not country:
+                country = inv.company_id.country_id
+            inv.src_dest_country_id = country.id
+
+    def compute_intrastat_lines(self):
+        """
+        Compute the Intrastat Lines so that they can be modified
+        when encoding the Customer/Supplier Invoice.
+        """
+        self.mapped("intrastat_line_ids").unlink()
+        for inv in self:
+            if inv.move_type not in (
+                "out_invoice",
+                "out_refund",
+                "in_invoice",
+                "in_refund",
+            ):
+                continue
+            line_vals = []
+            for line in inv.invoice_line_ids:
+                vals = self._get_intrastat_line_vals(line)
+                if vals:
+                    line_vals.append(Command.create(vals))
+            if line_vals:
+                inv.intrastat_line_ids = line_vals
+
+    def _get_intrastat_line_vals(self, line):
+        vals = {}
+        decl_model = self.env["intrastat.product.declaration"]
+        notedict, key2label = decl_model._prepare_notedict()
+        if decl_model._is_product(line):
+            hs_code = line.product_id.get_hs_code_recursively()
+            if not hs_code:
+                return vals
+            weight, qty = decl_model._get_weight_and_supplunits(line, hs_code, notedict)
+            vals.update(
+                {
+                    "invoice_line_id": line.id,
+                    "hs_code_id": hs_code.id,
+                    "transaction_weight": weight,
+                    "transaction_suppl_unit_qty": qty,
+                    "product_origin_country_id": line.product_id.origin_country_id.id,
+                }
+            )
+        return vals
+
+    def _prepare_intrastat_line_info(self, line):
+        is_intrastat_line = bool(line._name == "account.move.intrastat.line")
+        product = line.product_id
+        return {
+            "product_id": product,
+            "hs_code_id": (
+                line.hs_code_id if is_intrastat_line else product.hs_code_id
+            ),
+            "weight": (
+                line.transaction_weight
+                if is_intrastat_line
+                else self._get_intrastat_line_vals(line)["transaction_weight"]
+            ),
+            "origin_country_id": (
+                line.product_origin_country_id
+                if is_intrastat_line
+                else product.origin_country_id
+            ),
+        }
+
+    def _get_intrastat_lines_info(self):
+        """We obtain a list of information that we will need to group at the end by
+        product and sum weight.
+        """
+        res = {}
+        for line in (
+            self.invoice_line_ids.filtered(
+                lambda x: x.product_id.hs_code_id and x.product_id.origin_country_id
+            )
+            if not self.intrastat_line_ids
+            else self.intrastat_line_ids
+        ):
+            res.setdefault(line.product_id.id, {"weight": 0})
+            vals = self._prepare_intrastat_line_info(line)
+            weight = vals.pop("weight")
+            res[line.product_id.id].update(vals)
+            res[line.product_id.id]["weight"] += weight
+        return res.values()
+
+
+class AccountMoveLine(models.Model):
+    _inherit = "account.move.line"
+
+    hs_code_id = fields.Many2one(
+        comodel_name="hs.code",
+        compute="_compute_hs_code_id",
+        string="Intrastat Code",
+    )
+
+    def _compute_hs_code_id(self):
+        for rec in self:
+            intrastat_line = self.move_id.intrastat_line_ids.filtered(
+                lambda r, rec=rec: r.invoice_line_id == rec
+            )
+            rec.hs_code_id = (
+                intrastat_line.hs_code_id or rec.product_id.get_hs_code_recursively()
+            )
+
+
+class AccountMoveIntrastatLine(models.Model):
+    _name = "account.move.intrastat.line"
+    _description = "Intrastat declaration details"
+    _order = "sequence"
+
+    move_id = fields.Many2one(
+        comodel_name="account.move",
+        string="Invoice",
+        ondelete="cascade",
+        required=True,
+    )
+    invoice_line_id = fields.Many2one(
+        comodel_name="account.move.line",
+        string="Invoice Line",
+        ondelete="cascade",
+        required=True,
+    )
+    sequence = fields.Integer(related="invoice_line_id.sequence", store=True)
+    product_id = fields.Many2one(
+        comodel_name="product.product",
+        string="Product",
+        related="invoice_line_id.product_id",
+    )
+    quantity = fields.Float(related="invoice_line_id.quantity")
+    transaction_suppl_unit_qty = fields.Float(
+        help="Transaction quantity in Intrastat Supplementary Unit"
+    )
+    hs_code_id = fields.Many2one(
+        comodel_name="hs.code",
+        string="Intrastat Code",
+        ondelete="restrict",
+        required=True,
+    )
+    transaction_weight = fields.Integer(
+        help="Transaction weight in Kg: Quantity x Product Weight"
+    )
+    product_origin_country_id = fields.Many2one(
+        comodel_name="res.country",
+        string="Country of Origin of the Product",
+        help="Country of origin of the product i.e. product " "'made in ____'.",
+    )
+
+    @api.onchange("invoice_line_id")
+    def _onchange_move_id(self):
+        moves = self.mapped("move_id")
+        dom = [
+            ("display_type", "=", "product"),
+            ("id", "in", moves.mapped("invoice_line_ids").ids),
+            ("id", "not in", moves.mapped("intrastat_line_ids.invoice_line_id").ids),
+        ]
+        return {"domain": {"invoice_line_id": dom}}
diff --git a/intrastat_product/models/hs_code.py b/intrastat_product/models/hs_code.py
new file mode 100644
index 000000000..a54ae43d4
--- /dev/null
+++ b/intrastat_product/models/hs_code.py
@@ -0,0 +1,14 @@
+# Copyright 2011-2020 Akretion (http://www.akretion.com)
+# Copyright 2009-2020 Noviat (http://www.noviat.com)
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# @author Luc de Meyer <info@noviat.com>
+
+from odoo import fields, models
+
+
+class HSCode(models.Model):
+    _inherit = "hs.code"
+
+    intrastat_unit_id = fields.Many2one(
+        comodel_name="intrastat.unit", string="Intrastat Supplementary Unit"
+    )
diff --git a/intrastat_product/models/intrastat_product_declaration.py b/intrastat_product/models/intrastat_product_declaration.py
new file mode 100644
index 000000000..70925a180
--- /dev/null
+++ b/intrastat_product/models/intrastat_product_declaration.py
@@ -0,0 +1,1278 @@
+# Copyright 2011-2020 Akretion France (http://www.akretion.com)
+# Copyright 2009-2022 Noviat (http://www.noviat.com)
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# @author Luc de Meyer <info@noviat.com>
+
+import logging
+from collections import defaultdict
+from datetime import date
+
+from dateutil.relativedelta import relativedelta
+from stdnum.vatin import is_valid
+
+from odoo import Command, _, api, fields, models
+from odoo.exceptions import RedirectWarning, UserError, ValidationError
+from odoo.tools import float_is_zero
+
+_logger = logging.getLogger(__name__)
+
+
+class IntrastatProductDeclaration(models.Model):
+    _name = "intrastat.product.declaration"
+    _description = "Intrastat Product Declaration"
+    _rec_name = "year_month"
+    _inherit = ["mail.thread", "mail.activity.mixin"]
+    _order = "year_month desc, declaration_type, revision"
+    _sql_constraints = [
+        (
+            "date_uniq",
+            "unique(year_month, company_id, declaration_type, revision)",
+            "A declaration of the same type already exists for this month !"
+            "\nYou should update the existing declaration "
+            "or change the revision number of this one.",
+        )
+    ]
+
+    @api.model
+    def default_get(self, fields_list):
+        res = super().default_get(fields_list)
+        decl_date = fields.Date.context_today(self) - relativedelta(months=1)
+        res.update(
+            {"year": str(decl_date.year), "month": str(decl_date.month).zfill(2)}
+        )
+        return res
+
+    company_id = fields.Many2one(
+        comodel_name="res.company",
+        string="Company",
+        required=True,
+        default=lambda self: self.env.company,
+    )
+    company_country_code = fields.Char(
+        related="company_id.partner_id.country_id.code",
+        string="Company Country Code",
+        store=True,
+    )
+    state = fields.Selection(
+        selection=[("draft", "Draft"), ("confirmed", "Confirmed"), ("done", "Done")],
+        readonly=True,
+        tracking=True,
+        copy=False,
+        default="draft",
+    )
+    note = fields.Html(
+        string="Notes",
+    )
+    year = fields.Char(required=True)
+    month = fields.Selection(
+        selection=[
+            ("01", "01"),
+            ("02", "02"),
+            ("03", "03"),
+            ("04", "04"),
+            ("05", "05"),
+            ("06", "06"),
+            ("07", "07"),
+            ("08", "08"),
+            ("09", "09"),
+            ("10", "10"),
+            ("11", "11"),
+            ("12", "12"),
+        ],
+        required=True,
+    )
+    year_month = fields.Char(
+        compute="_compute_year_month",
+        string="Period",
+        tracking=True,
+        store=True,
+        help="Year and month of the declaration.",
+    )
+    declaration_type = fields.Selection(
+        selection="_get_declaration_type",
+        string="Type",
+        required=True,
+        tracking=True,
+    )
+    action = fields.Selection(
+        selection="_get_action",
+        required=True,
+        default="replace",
+        tracking=True,
+    )
+    revision = fields.Integer(
+        default=1,
+        help="Used to keep track of changes",
+    )
+    computation_line_ids = fields.One2many(
+        comodel_name="intrastat.product.computation.line",
+        inverse_name="parent_id",
+        string="Intrastat Product Computation Lines",
+    )
+    declaration_line_ids = fields.One2many(
+        comodel_name="intrastat.product.declaration.line",
+        inverse_name="parent_id",
+        string="Intrastat Product Declaration Lines",
+        readonly=True,
+    )
+    num_decl_lines = fields.Integer(
+        compute="_compute_numbers",
+        string="Number of Declaration Lines",
+        store=True,
+        tracking=True,
+    )
+    total_amount = fields.Integer(
+        compute="_compute_numbers",
+        string="Total Fiscal Amount",
+        store=True,
+        help="Total fiscal amount in company currency of the declaration.",
+    )
+    currency_id = fields.Many2one(
+        "res.currency", related="company_id.currency_id", string="Currency"
+    )
+    reporting_level = fields.Selection(
+        selection="_get_reporting_level",
+        compute="_compute_reporting_level",
+        readonly=False,
+        store=True,
+    )
+    xml_attachment_id = fields.Many2one("ir.attachment", string="XML Attachment")
+    xml_attachment_datas = fields.Binary(
+        related="xml_attachment_id.datas", string="XML Export"
+    )
+    xml_attachment_name = fields.Char(
+        related="xml_attachment_id.name", string="XML Filename"
+    )
+
+    @api.model
+    def _get_declaration_type(self):
+        res = []
+        company = self.env.company
+        arrivals = company.intrastat_arrivals
+        dispatches = company.intrastat_dispatches
+        if arrivals != "exempt":
+            res.append(("arrivals", _("Arrivals")))
+        if dispatches != "exempt":
+            res.append(("dispatches", _("Dispatches")))
+        return res
+
+    @api.model
+    def _get_reporting_level(self):
+        return [("standard", _("Standard")), ("extended", _("Extended"))]
+
+    @api.model
+    def _get_action(self):
+        return [
+            ("replace", _("Replace")),
+            ("append", _("Append")),
+            ("nihil", _("Nihil")),
+        ]
+
+    @api.depends("year", "month")
+    def _compute_year_month(self):
+        for this in self:
+            if this.year and this.month:
+                this.year_month = "-".join([this.year, this.month])
+
+    @api.constrains("company_id")
+    def _check_company_country(self):
+        for this in self:
+            if not this.company_id.country_id:
+                raise ValidationError(
+                    _("You must set the country on company '%s'.")
+                    % this.company_id.display_name
+                )
+
+    @api.depends("declaration_line_ids.amount_company_currency")
+    def _compute_numbers(self):
+        rg_res = self.env["intrastat.product.declaration.line"].read_group(
+            [("parent_id", "in", self.ids)],
+            ["parent_id", "amount_company_currency:sum"],
+            ["parent_id"],
+        )
+        mapped_data = {
+            x["parent_id"][0]: {
+                "num_decl_lines": x["parent_id_count"],
+                "total_amount": x["amount_company_currency"],
+            }
+            for x in rg_res
+        }
+        for this in self:
+            this.num_decl_lines = mapped_data.get(this.id, {}).get("num_decl_lines", 0)
+            this.total_amount = mapped_data.get(this.id, {}).get("total_amount", 0)
+
+    @api.constrains("year")
+    def _check_year(self):
+        for this in self:
+            if len(this.year) != 4 or this.year[0] != "2":
+                raise ValidationError(_("Invalid Year!"))
+
+    @api.depends("declaration_type", "company_id")
+    def _compute_reporting_level(self):
+        for this in self:
+            reporting_level = False
+            if this.declaration_type == "arrivals":
+                reporting_level = (
+                    this.company_id.intrastat_arrivals == "extended"
+                    and "extended"
+                    or "standard"
+                )
+            elif this.declaration_type == "dispatches":
+                reporting_level = (
+                    this.company_id.intrastat_dispatches == "extended"
+                    and "extended"
+                    or "standard"
+                )
+            this.reporting_level = reporting_level
+
+    @api.depends("declaration_type", "year_month")
+    def _compute_display_name(self):
+        type2label = dict(
+            self.fields_get("declaration_type", "selection")["declaration_type"][
+                "selection"
+            ]
+        )
+        for rec in self:
+            name = _(
+                "Intrastat Product Declaration %(declaration_type)s %(year_month)s",
+                year_month=rec.year_month,
+                declaration_type=type2label.get(rec.declaration_type),
+            )
+            rec.display_name = name
+
+    def copy(self, default=None):
+        self.ensure_one()
+        default = default or {}
+        default["revision"] = self.revision + 1
+        return super().copy(default)
+
+    def _account_config_warning(self, msg):
+        action = self.env.ref("account.action_account_config")
+        raise RedirectWarning(
+            msg, action.id, _("Go to Accounting Configuration Settings screen")
+        )
+
+    def _attach_xml_file(self, xml_bytes, declaration_name):
+        """Attach the XML file to the report_intrastat_product/service
+        object"""
+        self.ensure_one()
+        filename = f"{self.year_month}_{declaration_name}.xml"
+        attach = self.env["ir.attachment"].create(
+            {
+                "name": filename,
+                "res_id": self.id,
+                "res_model": self._name,
+                "raw": xml_bytes,
+            }
+        )
+        return attach.id
+
+    def unlink(self):
+        for this in self:
+            if this.state == "done":
+                raise UserError(
+                    _("Cannot delete the declaration %s because it is in Done state.")
+                    % this.display_name
+                )
+        return super().unlink()
+
+    def _get_partner_country(self, inv_line, notedict, eu_countries):
+        inv = inv_line.move_id
+        country = inv.src_dest_country_id
+        if not country:
+            if not inv.partner_shipping_id.country_id:
+                error_partner = inv.partner_shipping_id
+            elif not inv.partner_id.country_id:
+                error_partner = inv.partner_id
+            else:
+                error_partner = inv.company_id.partner_id
+            msg = _("Missing <em>Country</em>")
+            notedict["partner"][error_partner.display_name][msg].add(
+                notedict["inv_origin"]
+            )
+        else:
+            if country not in eu_countries and country.code != "GB":
+                msg = (
+                    _(
+                        "The source/destination country "
+                        "is <em>%s</em> which is not part of the European Union"
+                    )
+                    % country.name
+                )
+                notedict["invoice"][notedict["inv_origin"]].add(msg)
+        return country
+
+    def _get_intrastat_transaction(self, inv_line, notedict):
+        invoice = inv_line.move_id
+        transaction = invoice.intrastat_transaction_id
+        fp2transaction = {
+            "b2b": self.env.ref("intrastat_product.intrastat_transaction_11"),
+            "b2c": self.env.ref("intrastat_product.intrastat_transaction_12"),
+        }
+        if not transaction:
+            # as we have searched with intrastat_fiscal_position in ('b2b', 'b2c')
+            # we should always have intrastat_fiscal_position in fp2transaction
+            transaction = fp2transaction[invoice.intrastat_fiscal_position]
+        return transaction
+
+    def _get_weight_and_supplunits(self, inv_line, hs_code, notedict):
+        line_qty = inv_line.quantity
+        product = inv_line.product_id
+        intrastat_unit_id = hs_code.intrastat_unit_id
+        source_uom = inv_line.product_uom_id
+        weight_uom_categ = self.env.ref("uom.product_uom_categ_kgm")
+        kg_uom = self.env.ref("uom.product_uom_kgm")
+        self.env["decimal.precision"].precision_get("Stock Weight")
+        weight = suppl_unit_qty = 0.0
+
+        if not source_uom:
+            msg = _("Missing unit of measure")
+            notedict["invoice"][notedict["invline_origin"]].add(msg)
+            return weight, suppl_unit_qty
+
+        if intrastat_unit_id:
+            target_uom = intrastat_unit_id.uom_id
+            if not target_uom:
+                msg = _("Missing link to a <em>regular unit of measure</em>")
+                notedict["intrastat_unit"][intrastat_unit_id.display_name][msg].add(
+                    notedict["invline_origin"]
+                )
+                return weight, suppl_unit_qty
+            if target_uom.category_id == source_uom.category_id:
+                suppl_unit_qty = source_uom._compute_quantity(line_qty, target_uom)
+            else:
+                msg = _(
+                    "Conversion from unit of measure <em>%(source_uom)s</em> to "
+                    "<em>%(target_uom)s</em>, which is configured on the intrastat "
+                    "supplementary unit <i>%(intrastat_unit)s</i> "
+                    "of H.S. code <i>%(hs_code)s</i>, "
+                    "is not implemented yet"
+                ) % {
+                    "source_uom": source_uom.name,
+                    "target_uom": target_uom.name,
+                    "intrastat_unit": intrastat_unit_id.display_name,
+                    "hs_code": hs_code.display_name,
+                }
+                notedict["invoice"][notedict["invline_origin"]].add(msg)
+                return weight, suppl_unit_qty
+
+        if source_uom == kg_uom:
+            weight = line_qty
+        elif source_uom.category_id == weight_uom_categ:
+            weight = source_uom._compute_quantity(line_qty, kg_uom)
+        elif source_uom.category_id == product.uom_id.category_id:
+            # We suppose that, on product.template,
+            # the 'weight' field is per uom_id
+            weight = product.weight * source_uom._compute_quantity(
+                line_qty, product.uom_id
+            )
+        else:
+            msg = _(
+                "Conversion from unit of measure <em>%(source_uom)s</em> to "
+                "<em>Kg</em> cannot be done automatically. It is needed for product "
+                "<i>%(product)s</i> whose unit of measure is "
+                "<i>%(product_uom)s</i>"
+            ) % {
+                "source_uom": source_uom.name,
+                "product": product.display_name,
+                "product_uom": product.uom_id.display_name,
+            }
+            notedict["invoice"][notedict["inv_origin"]].add(msg)
+        return weight, suppl_unit_qty
+
+    def _get_region_code(self, inv_line, notedict):
+        """May be inherited by localisation modules
+        If set, Odoo will use the region code returned by this method
+        and will not call _get_region() and leave region_id empty
+        """
+        return False
+
+    def _get_region(self, inv_line, notedict):
+        """
+        For supplier invoices/refunds: if the invoice line is linked
+        to a stock move, use the destination stock location ;
+        otherwise, get the PO (which is linked to a stock location)
+        and then get the warehouse.
+        It is important to take into account the following scenario:
+        I order a qty of 50 kg and my suppliers delivers and invoices 52 kg
+        (quite common in some industries where the order qty cannot be exact
+        due to some operational constraints) ; in this case, I have a qty of
+        2 kg which is not linked to a PO, but it is linked to a stock move.
+
+        For customer invoices/refunds: if the invoice line is linked to a
+        stock move, use the source stock location ;
+        otherwise, get the sale order, which is linked to the warehouse.
+
+        If none found, get the company's default intrastat region.
+
+        """
+        region = self.env["intrastat.region"]
+        move_type = inv_line.move_id.move_type
+        if move_type in ("in_invoice", "in_refund"):
+            po_line = self.env["purchase.order.line"].search(
+                [("invoice_lines", "in", inv_line.id)], limit=1
+            )
+            if po_line:
+                if po_line.move_ids:
+                    region = po_line.move_ids[0].location_dest_id.get_intrastat_region()
+        elif move_type in ("out_invoice", "out_refund"):
+            so_line = self.env["sale.order.line"].search(
+                [("invoice_lines", "in", inv_line.id)], limit=1
+            )
+            if so_line:
+                so = so_line.order_id
+                region = so.warehouse_id.region_id
+        if not region:
+            if self.company_id.intrastat_region_id:
+                region = self.company_id.intrastat_region_id
+        return region
+
+    def _get_transport(self, inv_line, notedict):
+        transport = (
+            inv_line.move_id.intrastat_transport_id
+            or self.company_id.intrastat_transport_id
+        )
+        if not transport:
+            msg = _(
+                "The default Intrastat Transport Mode of the Company is not set, "
+                "please configure it first."
+            )
+            self._account_config_warning(msg)
+        return transport
+
+    def _get_incoterm(self, inv_line, notedict):
+        incoterm = inv_line.move_id.invoice_incoterm_id or self.company_id.incoterm_id
+        if not incoterm:
+            msg = _(
+                "The default Incoterm of the Company is not set, "
+                "please configure it first."
+            )
+            self._account_config_warning(msg)
+        return incoterm
+
+    def _get_product_origin_country(self, inv_line, notedict):
+        product = inv_line.product_id
+        origin_country = product.origin_country_id
+        if not origin_country:
+            msg = _("Missing <em>Country of Origin</em>")
+            notedict["product"][product.display_name][msg].add(
+                notedict["invline_origin"]
+            )
+        return origin_country
+
+    def _get_partner_and_warn_vat(self, inv_line, notedict):
+        inv = inv_line.move_id
+        partner = (
+            inv.partner_shipping_id
+            and inv.partner_shipping_id.commercial_partner_id
+            or inv.commercial_partner_id
+        )
+        # Warnings about VAT
+        vat = partner.vat
+        if self.declaration_type == "dispatches":
+            if vat:
+                if vat.startswith("GB"):
+                    msg = _(
+                        "VAT number is <em>%(vat)s</em>. If this partner "
+                        "is from Northern Ireland, his VAT number should be "
+                        "updated to his new VAT number starting with <em>XI</em> "
+                        "following Brexit. If this partner is from Great Britain, "
+                        "maybe the fiscal position was wrong on the invoice "
+                        "(the fiscal position was <i>%(fiscal_position)s</i>)."
+                    ) % {
+                        "vat": vat,
+                        "fiscal_position": inv.fiscal_position_id.display_name,
+                    }
+                    notedict["partner"][partner.display_name][msg].add(
+                        notedict["inv_origin"]
+                    )
+            elif inv.fiscal_position_id.intrastat != "b2c":
+                msg = _("Missing <em>VAT Number</em>")
+                notedict["partner"][partner.display_name][msg].add(
+                    notedict["inv_origin"]
+                )
+        return partner
+
+    def _update_computation_line_vals(self, inv_line, line_vals, notedict):
+        """placeholder for localization modules"""
+
+    def _handle_invoice_accessory_cost(
+        self,
+        invoice,
+        lines_current_invoice,
+        total_inv_accessory_costs_cc,
+        total_inv_product_cc,
+        total_inv_weight,
+    ):
+        """
+        Affect accessory costs pro-rata of the value
+        (or pro-rata of the weight if the goods of the invoice
+        have no value)
+
+        This method allows to implement a different logic
+        in the localization modules.
+        E.g. in Belgium accessory cost should not be added.
+        """
+        if total_inv_accessory_costs_cc:
+            if total_inv_product_cc:
+                # pro-rata of the value
+                for ac_line_vals in lines_current_invoice:
+                    ac_line_vals["amount_accessory_cost_company_currency"] = (
+                        total_inv_accessory_costs_cc
+                        * ac_line_vals["amount_company_currency"]
+                        / total_inv_product_cc
+                    )
+            elif total_inv_weight:
+                # pro-rata of the weight
+                for ac_line_vals in lines_current_invoice:
+                    ac_line_vals["amount_accessory_cost_company_currency"] = (
+                        total_inv_accessory_costs_cc
+                        * ac_line_vals["weight"]
+                        / total_inv_weight
+                    )
+            else:
+                for ac_line_vals in lines_current_invoice:
+                    ac_line_vals["amount_accessory_cost_company_currency"] = (
+                        total_inv_accessory_costs_cc / len(lines_current_invoice)
+                    )
+
+    def _prepare_invoice_domain(self):
+        """
+        Complete this method in the localization module
+        with the country-specific logic for arrivals and dispatches.
+        Cf. l10n_be_intrastat_product_declaration for an example
+        The dates are based on account.move,date in stead of invoice_date
+        to ensure consistency between intrastat and intracomm tax declaration.
+        """
+        start_date = date(int(self.year), int(self.month), 1)
+        end_date = start_date + relativedelta(day=1, months=+1, days=-1)
+        domain = [
+            ("date", ">=", start_date),
+            ("date", "<=", end_date),
+            ("state", "=", "posted"),
+            ("intrastat_fiscal_position", "in", ("b2b", "b2c")),
+            ("company_id", "=", self.company_id.id),
+        ]
+        if self.declaration_type == "arrivals":
+            domain.append(("move_type", "in", ("in_invoice", "in_refund")))
+        elif self.declaration_type == "dispatches":
+            domain.append(("move_type", "in", ("out_invoice", "out_refund")))
+        return domain
+
+    def _is_product(self, invoice_line):
+        if invoice_line.product_id and invoice_line.product_id.type in (
+            "product",
+            "consu",
+        ):
+            return True
+        else:
+            return False
+
+    def _gather_invoices_init(self, notedict):
+        """placeholder for localization modules"""
+
+    def _gather_invoices(self, notedict):
+        lines = []
+        qty_prec = self.env["decimal.precision"].precision_get(
+            "Product Unit of Measure"
+        )
+        accessory_costs = self.company_id.intrastat_accessory_costs
+        eu_countries = self.env.ref("base.europe").country_ids
+
+        self._gather_invoices_init(notedict)
+        domain = self._prepare_invoice_domain()
+        order = "journal_id, name"
+        invoices = self.env["account.move"].search(domain, order=order)
+
+        for invoice in invoices:
+            lines_current_invoice = []
+            total_inv_accessory_costs_cc = 0.0  # in company currency
+            total_inv_product_cc = 0.0  # in company currency
+            total_inv_weight = 0.0
+            notedict["inv_origin"] = invoice.name
+            for line_nbr, inv_line in enumerate(
+                invoice.invoice_line_ids.filtered(
+                    lambda x: x.display_type == "product"
+                ),
+                start=1,
+            ):
+                notedict["invline_origin"] = _("%(invoice)s line %(line_nbr)s") % {
+                    "invoice": invoice.name,
+                    "line_nbr": line_nbr,
+                }
+                inv_intrastat_line = invoice.intrastat_line_ids.filtered(
+                    lambda r, inv_line=inv_line: r.invoice_line_id == inv_line
+                )
+
+                if (
+                    accessory_costs
+                    and inv_line.product_id
+                    and inv_line.product_id.is_accessory_cost
+                ):
+                    acost = invoice.currency_id._convert(
+                        inv_line.price_subtotal,
+                        self.company_id.currency_id,
+                        self.company_id,
+                        invoice.date,
+                    )
+                    total_inv_accessory_costs_cc += acost
+
+                    continue
+
+                if float_is_zero(inv_line.quantity, precision_digits=qty_prec):
+                    _logger.info(
+                        "Skipping invoice line %s qty %s "
+                        "of invoice %s. Reason: qty = 0",
+                        inv_line.name,
+                        inv_line.quantity,
+                        invoice.name,
+                    )
+                    continue
+
+                partner_country = self._get_partner_country(
+                    inv_line, notedict, eu_countries
+                )
+                # When the country is the same as the company's country must be skipped.
+                if partner_country == self.company_id.country_id:
+                    _logger.info(
+                        "Skipping invoice line %s qty %s "
+                        "of invoice %s. Reason: partner_country = "
+                        "company country",
+                        inv_line.name,
+                        inv_line.quantity,
+                        invoice.name,
+                    )
+                    continue
+
+                if inv_intrastat_line:
+                    hs_code = inv_intrastat_line.hs_code_id
+                elif inv_line.product_id and self._is_product(inv_line):
+                    hs_code = inv_line.product_id.get_hs_code_recursively()
+                    if not hs_code:
+                        msg = _("Missing <em>H.S. Code</em>")
+                        notedict["product"][inv_line.product_id.display_name][msg].add(
+                            notedict["invline_origin"]
+                        )
+                        continue
+                else:
+                    _logger.info(
+                        "Skipping invoice line %s qty %s "
+                        "of invoice %s. Reason: no product nor Intrastat Code",
+                        inv_line.name,
+                        inv_line.quantity,
+                        invoice.name,
+                    )
+                    continue
+
+                intrastat_transaction = self._get_intrastat_transaction(
+                    inv_line, notedict
+                )
+
+                if inv_intrastat_line:
+                    weight = inv_intrastat_line.transaction_weight
+                    suppl_unit_qty = inv_intrastat_line.transaction_suppl_unit_qty
+                else:
+                    weight, suppl_unit_qty = self._get_weight_and_supplunits(
+                        inv_line, hs_code, notedict
+                    )
+                total_inv_weight += weight
+
+                sign = invoice.move_type in ("in_invoice", "out_refund") and 1 or -1
+                amount_company_currency = sign * inv_line.balance
+                total_inv_product_cc += amount_company_currency
+
+                if inv_intrastat_line:
+                    product_origin_country = (
+                        inv_intrastat_line.product_origin_country_id
+                    )
+                else:
+                    product_origin_country = self._get_product_origin_country(
+                        inv_line, notedict
+                    )
+
+                region_code = self._get_region_code(inv_line, notedict)
+                region = self.env["intrastat.region"]
+                if not region_code:
+                    region = self._get_region(inv_line, notedict)
+
+                partner = self._get_partner_and_warn_vat(inv_line, notedict)
+
+                line_vals = {
+                    "parent_id": self.id,
+                    "invoice_line_id": inv_line.id,
+                    "src_dest_country_id": partner_country.id,
+                    "product_id": inv_line.product_id.id,
+                    "hs_code_id": hs_code.id,
+                    "weight": weight,
+                    "suppl_unit_qty": suppl_unit_qty,
+                    "amount_company_currency": amount_company_currency,
+                    "amount_accessory_cost_company_currency": 0.0,
+                    "transaction_id": intrastat_transaction.id,
+                    "product_origin_country_id": product_origin_country.id or False,
+                    "region_code": region_code or region.code,
+                    "region_id": region and region.id or False,
+                    "partner_id": partner.id,
+                }
+
+                # extended declaration
+                if self.reporting_level == "extended":
+                    transport = self._get_transport(inv_line, notedict)
+                    line_vals.update({"transport_id": transport.id})
+
+                self._update_computation_line_vals(inv_line, line_vals, notedict)
+
+                if line_vals:
+                    lines_current_invoice.append(line_vals)
+
+            self._handle_invoice_accessory_cost(
+                invoice,
+                lines_current_invoice,
+                total_inv_accessory_costs_cc,
+                total_inv_product_cc,
+                total_inv_weight,
+            )
+
+            for line_vals in lines_current_invoice:
+                if (
+                    not line_vals["amount_company_currency"]
+                    and not line_vals["amount_accessory_cost_company_currency"]
+                ):
+                    inv_line = self.env["account.move.line"].browse(
+                        line_vals["invoice_line_id"]
+                    )
+                    _logger.info(
+                        "Skipping invoice line %s qty %s "
+                        "of invoice %s. Reason: price_subtotal = 0 "
+                        "and accessory costs = 0",
+                        inv_line.name,
+                        inv_line.quantity,
+                        inv_line.move_id.name,
+                    )
+                    continue
+                lines.append(line_vals)
+
+        return lines
+
+    def _prepare_html_note(self, notedict, key2label):
+        note = ""
+        for key, entries in notedict.items():
+            if not key.endswith("_origin") and entries:
+                note += "<h3>%s</h3><ul>" % key2label[key]
+                for obj_name, messages in entries.items():
+                    note += "<li>%s<ul>" % obj_name
+                    if isinstance(
+                        messages, dict
+                    ):  # 2 layers of dict (partner, product)
+                        for message, origins in messages.items():
+                            origin_str = ", ".join(origins)
+                            note += f"<li>{message} <small>({origin_str})</small></li>"
+                    else:  # 1st layer=dict, 2nd layer=set (invoice)
+                        for message in messages:
+                            note += "<li>%s</li>" % message
+                    note += "</ul>"
+                note += "</ul>"
+        return note
+
+    def _prepare_notedict(self):
+        notedict = {
+            "partner": defaultdict(lambda: defaultdict(set)),
+            # key = partner.display_name
+            # value = {message1: {origin1, origin2}, message2: {origin3, origin4}}
+            "product": defaultdict(lambda: defaultdict(set)),
+            "intrastat_unit": defaultdict(lambda: defaultdict(set)),
+            "invoice": defaultdict(set),  # for invoice and invoice line
+            # key = invoice.name
+            # value (set) = {message1, message2}
+            "inv_origin": "",
+            "invline_origin": "",
+        }
+        key2label = {
+            "partner": _("Partners"),
+            "product": _("Products"),
+            "intrastat_unit": _("Intrastat Supplementary Units"),
+            "invoice": _("Invoices/Refunds"),
+        }
+        return notedict, key2label
+
+    def action_gather(self):
+        self.ensure_one()
+        self.message_post(body=_("Generate Lines from Invoices"))
+        notedict, key2label = self._prepare_notedict()
+        self.computation_line_ids.unlink()
+        self.declaration_line_ids.unlink()
+        lines = self._gather_invoices(notedict)
+
+        vals = {"note": self._prepare_html_note(notedict, key2label)}
+        if not lines:
+            vals["action"] = "nihil"
+            nihil_title = _("No records found for the selected period !")
+            nihil_note = _("The declaration Action has been set to <em>nihil</em>.")
+            vals["note"] += f"<h3>{nihil_title}</h3><p>{nihil_note}</p>"
+        else:
+            vals["computation_line_ids"] = [Command.create(x) for x in lines]
+
+        self.write(vals)
+        if vals["note"]:
+            result_view = self.env.ref("intrastat_product.intrastat_result_view_form")
+            return {
+                "name": _("Generate lines from invoices: results"),
+                "view_mode": "form",
+                "res_model": "intrastat.result.view",
+                "view_id": result_view.id,
+                "target": "new",
+                "context": dict(self._context, note=vals["note"]),
+                "type": "ir.actions.act_window",
+            }
+
+    def generate_declaration(self):
+        """generate declaration lines from computation lines"""
+        self.ensure_one()
+        assert not self.declaration_line_ids
+        dl_group = {}
+        for cl in self.computation_line_ids:
+            hashcode = cl.group_line_hashcode()
+            if hashcode not in dl_group:
+                dl_group[hashcode] = cl
+            else:
+                dl_group[hashcode] |= cl
+        ipdl = self.declaration_line_ids
+        line_number = 1
+        for cl_lines in dl_group.values():
+            vals = cl_lines._prepare_declaration_line(line_number)
+            declaration_line = ipdl.create(vals)
+            cl_lines.write({"declaration_line_id": declaration_line.id})
+            line_number += 1
+
+    def _check_generate_xml(self):
+        self.ensure_one()
+        if not self.company_id.partner_id.vat:
+            raise UserError(
+                _("The VAT number is not set for the partner '%s'.")
+                % self.company_id.partner_id.display_name
+            )
+
+    def _generate_xml(self):
+        """Designed to be inherited in localization modules"""
+        return False
+
+    def generate_xml(self):
+        """generate the INTRASTAT Declaration XML file"""
+        self.ensure_one()
+        if self.xml_attachment_id:
+            raise UserError(
+                _(
+                    "An XML Export already exists for %s. "
+                    "To re-generate it, you must first delete it."
+                )
+                % self.display_name
+            )
+        self.message_post(body=_("Generate XML Declaration File"))
+        self._check_generate_xml()
+        xml_bytes = self._generate_xml()
+        if xml_bytes:
+            attach_id = self._attach_xml_file(
+                xml_bytes, f"{self.declaration_type}_{self.revision}"
+            )
+            self.write({"xml_attachment_id": attach_id})
+
+    def delete_xml(self):
+        self.ensure_one()
+        self.xml_attachment_id and self.xml_attachment_id.unlink()
+
+    @api.model
+    def _xls_computation_line_fields(self):
+        """
+        Update list in custom module to add/drop columns or change order
+        """
+        return [
+            "product",
+            "hs_code",
+            "src_dest_country",
+            "src_dest_country_code",
+            "amount_company_currency",
+            "accessory_cost",
+            "transaction",
+            "weight",
+            "suppl_unit_qty",
+            "suppl_unit",
+            "transport",
+            "region",
+            "region_code",
+            "product_origin_country",
+            "product_origin_country_code",
+            "vat",
+            "partner_id",
+            "invoice",
+        ]
+
+    @api.model
+    def _xls_declaration_line_fields(self):
+        """
+        Update list in custom module to add/drop columns or change order
+        Use same order as tree view by default
+        """
+        return [
+            "hs_code",
+            "src_dest_country_code",
+            "amount_company_currency",
+            "transaction_code",
+            "transaction",
+            "weight",
+            "suppl_unit_qty",
+            "suppl_unit",
+            "transport_code",
+            "transport",
+            "region_code",
+            "product_origin_country_code",
+            "vat",
+        ]
+
+    @api.model
+    def _xls_template(self):
+        """
+        Placeholder for excel report template updates
+
+        """
+        return {}
+
+    @api.model
+    def _get_xlsx_report_filename(self):
+        self.ensure_one()
+        declaration_type_label = dict(
+            self.fields_get("declaration_type", "selection")["declaration_type"][
+                "selection"
+            ]
+        )[self.declaration_type]
+        draft_label = ""
+        if self.state == "draft":
+            draft_label = (
+                "-%s"
+                % dict(self.fields_get("state", "selection")["state"]["selection"])[
+                    self.state
+                ]
+            )
+        filename = _(
+            "intrastat-%(year_month)s-%(declaration_type)s%(draft)s",
+            year_month=self.year_month,
+            declaration_type=declaration_type_label,
+            draft=draft_label,
+        )
+        return filename
+
+    def draft2confirmed(self):
+        for decl in self:
+            decl.generate_declaration()
+        self.write({"state": "confirmed"})
+
+    def confirmed2done(self):
+        for decl in self:
+            decl.generate_xml()
+        self.write({"state": "done"})
+
+    def back2draft(self):
+        for decl in self:
+            decl.delete_xml()
+            decl.declaration_line_ids.unlink()
+        self.write({"state": "draft"})
+
+
+class IntrastatProductComputationLine(models.Model):
+    _name = "intrastat.product.computation.line"
+    _description = "Intrastat Product Computation Lines"
+
+    parent_id = fields.Many2one(
+        "intrastat.product.declaration",
+        string="Intrastat Product Declaration",
+        ondelete="cascade",
+        readonly=True,
+    )
+    company_id = fields.Many2one(related="parent_id.company_id")
+    company_currency_id = fields.Many2one(
+        related="company_id.currency_id", string="Company currency"
+    )
+    company_country_code = fields.Char(
+        related="parent_id.company_id.partner_id.country_id.code",
+        string="Company Country Code",
+    )
+    declaration_type = fields.Selection(related="parent_id.declaration_type")
+    reporting_level = fields.Selection(related="parent_id.reporting_level")
+    invoice_line_id = fields.Many2one(
+        "account.move.line", string="Invoice Line", readonly=True
+    )
+    invoice_id = fields.Many2one(
+        "account.move", related="invoice_line_id.move_id", string="Invoice"
+    )
+    # partner_id is not a related field any more, to auto-fill the VAT
+    # number (via onchange) when you create a computation line manually
+    partner_id = fields.Many2one(
+        "res.partner",
+        string="Partner",
+        domain=[("parent_id", "=", False)],
+    )
+    declaration_line_id = fields.Many2one(
+        "intrastat.product.declaration.line", string="Declaration Line", readonly=True
+    )
+    src_dest_country_id = fields.Many2one(
+        "res.country",
+        string="Country",
+        help="Country of Origin/Destination",
+    )
+    src_dest_country_code = fields.Char(
+        compute="_compute_src_dest_country_code",
+        string="Country Code",
+        readonly=False,
+        store=True,
+        help="2 letters code of the country of origin/destination.\n"
+        "Specify 'XI' for Northern Ireland.",
+    )
+    product_id = fields.Many2one(
+        "product.product", related="invoice_line_id.product_id"
+    )
+    hs_code_id = fields.Many2one("hs.code", string="Intrastat Code")
+    intrastat_unit_id = fields.Many2one(
+        "intrastat.unit",
+        related="hs_code_id.intrastat_unit_id",
+        string="Suppl. Unit",
+        help="Intrastat Supplementary Unit",
+    )
+    weight = fields.Float(digits="Stock Weight", help="Net weight in Kg")
+    suppl_unit_qty = fields.Float(
+        string="Suppl. Unit Qty",
+        digits="Product Unit of Measure",
+        help="Supplementary Units Quantity",
+    )
+    amount_company_currency = fields.Float(
+        string="Fiscal Value",
+        digits="Account",
+        required=True,
+        help="Amount in company currency to write in the declaration. "
+        "Amount in company currency = amount in invoice currency "
+        "converted to company currency with the rate of the invoice date.",
+    )
+    amount_accessory_cost_company_currency = fields.Float(
+        string="Accessory Costs",
+        digits="Account",
+        help="Amount in company currency of the accessory costs related to "
+        "this invoice line. By default, these accessory costs are computed "
+        "at the pro-rata of the amount of each invoice line.",
+    )
+    transaction_id = fields.Many2one(
+        "intrastat.transaction",
+        string="Intrastat Transaction",
+    )
+    transaction_code = fields.Char(
+        related="transaction_id.code", store=True, string="Transaction Code"
+    )
+    region_id = fields.Many2one("intrastat.region", string="Intrastat Region")
+    # Note that, in l10n_fr_intrastat_product and maybe in other localization modules
+    # region_id is left empty and Odoo writes directly in region_code
+    region_code = fields.Char(
+        compute="_compute_region_code", store=True, readonly=False
+    )
+    product_origin_country_id = fields.Many2one(
+        "res.country",
+        string="Country of Origin of the Product",
+        help="Country of origin of the product i.e. product 'made in ____'",
+    )
+    product_origin_country_code = fields.Char(
+        compute="_compute_product_origin_country_code",
+        string="Country Code of Origin of the Product",
+        size=2,
+        readonly=False,
+        store=True,
+        help="2 letters ISO code of the country of origin of the product.\n"
+        "Specify 'QU' when the country of origin is unknown.\n",
+    )
+    vat = fields.Char(
+        compute="_compute_vat",
+        store=True,
+        readonly=False,
+        string="VAT Number",
+    )
+
+    # extended declaration
+    incoterm_id = fields.Many2one("account.incoterms", string="Incoterm")
+    transport_id = fields.Many2one("intrastat.transport_mode", string="Transport Mode")
+
+    @api.depends("region_id")
+    def _compute_region_code(self):
+        for this in self:
+            this.region_code = this.region_id and this.region_id.code or False
+
+    @api.depends("src_dest_country_id")
+    def _compute_src_dest_country_code(self):
+        for this in self:
+            code = this.src_dest_country_id and this.src_dest_country_id.code or False
+            if code == "GB":
+                code = "XI"  # Northern Ireland
+            this.src_dest_country_code = code
+
+    @api.depends("product_origin_country_id")
+    def _compute_product_origin_country_code(self):
+        for this in self:
+            code = (
+                this.product_origin_country_id
+                and this.product_origin_country_id.code
+                or False
+            )
+            if code == "GB":
+                code = "XU"
+                # XU can be used when you don't know if the product
+                # originate from Great-Britain or from Northern Ireland
+            this.product_origin_country_code = code
+
+    @api.constrains("vat")
+    def _check_vat(self):
+        for this in self:
+            if this.vat and not is_valid(this.vat):
+                raise ValidationError(_("The VAT number '%s' is invalid.") % this.vat)
+
+    @api.depends("partner_id")
+    def _compute_vat(self):
+        for this in self:
+            vat = False
+            if (
+                this.partner_id
+                and this.partner_id.vat
+                and this.parent_id.declaration_type == "dispatches"
+            ):
+                vat = this.partner_id.vat
+            this.vat = vat
+
+    def _group_line_hashcode_fields(self):
+        self.ensure_one()
+        return {
+            "country": self.src_dest_country_code,
+            "hs_code_id": self.hs_code_id.id or False,
+            "intrastat_unit": self.intrastat_unit_id.id or False,
+            "transaction": self.transaction_id.id or False,
+            "transport": self.transport_id.id or False,
+            "region": self.region_code or False,
+            "product_origin_country": self.product_origin_country_code,
+            "vat": self.vat or False,
+        }
+
+    def group_line_hashcode(self):
+        self.ensure_one()
+        hc_fields = self._group_line_hashcode_fields()
+        hashcode = "-".join([str(f) for f in hc_fields.values()])
+        return hashcode
+
+    def _prepare_grouped_fields(self, fields_to_sum):
+        self.ensure_one()
+        vals = {
+            "src_dest_country_code": self.src_dest_country_code,
+            "intrastat_unit_id": self.intrastat_unit_id.id,
+            "hs_code_id": self.hs_code_id.id,
+            "transaction_id": self.transaction_id.id,
+            "transport_id": self.transport_id.id,
+            "region_code": self.region_code,
+            "parent_id": self.parent_id.id,
+            "product_origin_country_code": self.product_origin_country_code,
+            "amount_company_currency": 0.0,
+            "vat": self.vat,
+        }
+        for field in fields_to_sum:
+            vals[field] = 0.0
+        return vals
+
+    def _fields_to_sum(self):
+        fields_to_sum = ["weight", "suppl_unit_qty"]
+        return fields_to_sum
+
+    def _prepare_declaration_line(self, line_number):
+        fields_to_sum = self._fields_to_sum()
+        vals = self[0]._prepare_grouped_fields(fields_to_sum)
+        for computation_line in self:
+            for field in fields_to_sum:
+                vals[field] += computation_line[field]
+            vals["amount_company_currency"] += (
+                computation_line["amount_company_currency"]
+                + computation_line["amount_accessory_cost_company_currency"]
+            )
+        # on computation lines, weight and suppl_unit_qty are floats
+        # on declaration lines, weight and suppl_unit_qty
+        # are integer => so we must round()
+        for field in fields_to_sum:
+            vals[field] = int(round(vals[field]))
+        # the intrastat specs say that, if the value is between 0 and 0.5,
+        # it should be rounded to 1
+        if not vals["weight"]:
+            vals["weight"] = 1
+        if vals["intrastat_unit_id"] and not vals["suppl_unit_qty"]:
+            vals["suppl_unit_qty"] = 1
+        vals["amount_company_currency"] = int(round(vals["amount_company_currency"]))
+        vals["line_number"] = line_number
+        return vals
+
+
+class IntrastatProductDeclarationLine(models.Model):
+    _name = "intrastat.product.declaration.line"
+    _description = "Intrastat Product Declaration Lines"
+
+    parent_id = fields.Many2one(
+        "intrastat.product.declaration",
+        string="Intrastat Product Declaration",
+        ondelete="cascade",
+        readonly=True,
+    )
+    # line_number is used by localization modules to point the user to a specific
+    # declaration line in an error messages when generation the XML file
+    line_number = fields.Integer(readonly=True)
+    company_id = fields.Many2one(related="parent_id.company_id")
+    company_currency_id = fields.Many2one(
+        related="company_id.currency_id", string="Company currency"
+    )
+    company_country_code = fields.Char(
+        related="parent_id.company_id.partner_id.country_id.code",
+        string="Company Country Code",
+    )
+    declaration_type = fields.Selection(related="parent_id.declaration_type")
+    reporting_level = fields.Selection(related="parent_id.reporting_level")
+    computation_line_ids = fields.One2many(
+        "intrastat.product.computation.line",
+        "declaration_line_id",
+        string="Computation Lines",
+        readonly=True,
+    )
+    src_dest_country_code = fields.Char(
+        string="Country Code",
+        help="2 letters ISO code of the country of origin/destination.\n"
+        "Specify 'XI' for Northern Ireland and 'XU' for Great Britain.",
+    )
+    hs_code_id = fields.Many2one("hs.code", string="Intrastat Code")
+    intrastat_unit_id = fields.Many2one(
+        "intrastat.unit",
+        related="hs_code_id.intrastat_unit_id",
+        string="Suppl. Unit",
+        help="Intrastat Supplementary Unit",
+    )
+    weight = fields.Integer(help="Net weight in Kg")
+    suppl_unit_qty = fields.Integer(
+        string="Suppl. Unit Qty", help="Supplementary Units Quantity"
+    )
+    amount_company_currency = fields.Integer(
+        string="Fiscal Value",
+        help="Amount in company currency to write in the declaration. "
+        "Amount in company currency = amount in invoice currency "
+        "converted to company currency with the rate of the invoice date.",
+    )
+    transaction_id = fields.Many2one(
+        "intrastat.transaction", string="Intrastat Transaction"
+    )
+    transaction_code = fields.Char(
+        related="transaction_id.code", store=True, string="Transaction Code"
+    )
+    region_code = fields.Char()
+    product_origin_country_code = fields.Char(
+        string="Country of Origin of the Product",
+        size=2,
+        help="2 letters ISO code of the country of origin of the product"
+        " except for the UK.\n"
+        "Specify 'XI' for Northern Ireland and 'XU' for Great Britain.\n"
+        "Specify 'QU' when the country is unknown.\n",
+    )
+    vat = fields.Char(string="VAT Number")
+    # extended declaration
+    incoterm_id = fields.Many2one("account.incoterms", string="Incoterm")
+    transport_id = fields.Many2one("intrastat.transport_mode", string="Transport Mode")
diff --git a/intrastat_product/models/intrastat_region.py b/intrastat_product/models/intrastat_region.py
new file mode 100644
index 000000000..9a492797c
--- /dev/null
+++ b/intrastat_product/models/intrastat_region.py
@@ -0,0 +1,22 @@
+# Copyright 2009-2020 Noviat nv/sa (www.noviat.com).
+# @author Luc de Meyer <info@noviat.com>
+
+from odoo import fields, models
+
+
+class IntrastatRegion(models.Model):
+    _name = "intrastat.region"
+    _description = "Intrastat Region"
+    _sql_constraints = [
+        (
+            "intrastat_region_code_unique",
+            "UNIQUE(code, country_id)",  # TODO add company_id ?
+            "Code must be unique.",
+        )
+    ]
+
+    code = fields.Char(required=True)
+    country_id = fields.Many2one(comodel_name="res.country", required=True)
+    name = fields.Char(translate=True)
+    description = fields.Char()
+    company_id = fields.Many2one("res.company")
diff --git a/intrastat_product/models/intrastat_transaction.py b/intrastat_product/models/intrastat_transaction.py
new file mode 100644
index 000000000..db38585f5
--- /dev/null
+++ b/intrastat_product/models/intrastat_transaction.py
@@ -0,0 +1,37 @@
+# Copyright 2011-2020 Akretion France (http://www.akretion.com)
+# Copyright 2009-2020 Noviat (http://www.noviat.com)
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# @author Luc de Meyer <info@noviat.com>
+
+from textwrap import shorten
+
+from odoo import api, fields, models
+
+
+class IntrastatTransaction(models.Model):
+    _name = "intrastat.transaction"
+    _description = "Intrastat Transaction"
+    _rec_name = "code"
+    _order = "code"
+    _sql_constraints = [
+        (
+            "intrastat_transaction_code_unique",
+            "UNIQUE(code, company_id)",
+            "Code must be unique.",
+        )
+    ]
+
+    code = fields.Char(required=True)
+    description = fields.Text(translate=True)
+    # intrastat.transaction are shared among companies by default
+    company_id = fields.Many2one("res.company")
+    active = fields.Boolean(default=True)
+
+    @api.depends("code", "description")
+    def _compute_display_name(self):
+        for this in self:
+            name = this.code or ""
+            if this.description:
+                name += " " + this.description
+            name = shorten(name, 55)
+            this.display_name = name
diff --git a/intrastat_product/models/intrastat_transport_mode.py b/intrastat_product/models/intrastat_transport_mode.py
new file mode 100644
index 000000000..616c3689c
--- /dev/null
+++ b/intrastat_product/models/intrastat_transport_mode.py
@@ -0,0 +1,24 @@
+# Copyright 2011-2017 Akretion (http://www.akretion.com)
+# Copyright 2009-2019 Noviat (http://www.noviat.com)
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# @author Luc de Meyer <info@noviat.com>
+
+from odoo import api, fields, models
+
+
+class IntrastatTransportMode(models.Model):
+    _name = "intrastat.transport_mode"
+    _description = "Intrastat Transport Mode"
+    _order = "code"
+    _sql_constraints = [
+        ("intrastat_transport_code_unique", "UNIQUE(code)", "Code must be unique.")
+    ]
+
+    code = fields.Char(required=True)
+    name = fields.Char(required=True, translate=True)
+    description = fields.Char(translate=True)
+
+    @api.depends("name", "code")
+    def _compute_display_name(self):
+        for mode in self:
+            mode.display_name = f"{mode.code}. {mode.name}"
diff --git a/intrastat_product/models/intrastat_unit.py b/intrastat_product/models/intrastat_unit.py
new file mode 100644
index 000000000..fb3d48b2c
--- /dev/null
+++ b/intrastat_product/models/intrastat_unit.py
@@ -0,0 +1,30 @@
+# Copyright 2011-2020 Akretion (http://www.akretion.com)
+# Copyright 2009-2020 Noviat (http://www.noviat.com)
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# @author Luc de Meyer <info@noviat.com>
+
+from odoo import fields, models
+
+
+class IntrastatUnit(models.Model):
+    _name = "intrastat.unit"
+    _description = "Intrastat Supplementary Units"
+    _order = "name"
+
+    name = fields.Char(required=True)
+    description = fields.Char(required=True)
+    uom_id = fields.Many2one(
+        comodel_name="uom.uom",
+        string="Regular UoM",
+        help="Select the regular Unit of Measure of Odoo that corresponds "
+        "to this Intrastat Supplementary Unit.",
+    )
+    active = fields.Boolean(default=True)
+
+    _sql_constraints = [
+        (
+            "name_uniq",
+            "unique(name)",
+            "An intrastat supplementary unit with the same name already exists!",
+        )
+    ]
diff --git a/intrastat_product/models/res_company.py b/intrastat_product/models/res_company.py
new file mode 100644
index 000000000..bca94bac9
--- /dev/null
+++ b/intrastat_product/models/res_company.py
@@ -0,0 +1,71 @@
+# Copyright 2011-2017 Akretion (http://www.akretion.com)
+# Copyright 2009-2020 Noviat (http://www.noviat.com)
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# @author Luc de Meyer <info@noviat.com>
+
+from odoo import api, fields, models
+
+
+class ResCompany(models.Model):
+    _inherit = "res.company"
+
+    intrastat_arrivals = fields.Selection(
+        selection="_intrastat_arrivals",
+        string="Arrivals",
+        default="extended",
+        required=True,
+    )
+    intrastat_dispatches = fields.Selection(
+        selection="_intrastat_dispatches",
+        string="Dispatches",
+        default="extended",
+        required=True,
+    )
+    intrastat_transport_id = fields.Many2one(
+        comodel_name="intrastat.transport_mode",
+        string="Default Transport Mode",
+        ondelete="restrict",
+    )
+    intrastat = fields.Char(
+        string="Intrastat Declaration",
+        store=True,
+        compute="_compute_intrastat",
+    )
+    intrastat_region_id = fields.Many2one(
+        comodel_name="intrastat.region", string="Default Intrastat Region"
+    )
+    intrastat_accessory_costs = fields.Boolean(
+        string="Include Accessory Costs in Fiscal Value of Product"
+    )
+
+    @api.model
+    def _intrastat_arrivals(self):
+        return [
+            ("exempt", "Exempt"),
+            ("standard", "Standard"),
+            ("extended", "Extended"),
+        ]
+
+    @api.model
+    def _intrastat_dispatches(self):
+        return [
+            ("exempt", "Exempt"),
+            ("standard", "Standard"),
+            ("extended", "Extended"),
+        ]
+
+    @api.depends("intrastat_arrivals", "intrastat_dispatches")
+    def _compute_intrastat(self):
+        for this in self:
+            if (
+                this.intrastat_arrivals == "exempt"
+                and this.intrastat_dispatches == "exempt"
+            ):
+                this.intrastat = "exempt"
+            elif (
+                this.intrastat_arrivals == "extended"
+                or this.intrastat_dispatches == "extended"
+            ):
+                this.intrastat = "extended"
+            else:
+                this.intrastat = "standard"
diff --git a/intrastat_product/models/res_partner.py b/intrastat_product/models/res_partner.py
new file mode 100644
index 000000000..72ecaf551
--- /dev/null
+++ b/intrastat_product/models/res_partner.py
@@ -0,0 +1,16 @@
+# Copyright 2022 Tecnativa - Víctor Martínez
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import api, fields, models
+
+
+class ResParter(models.Model):
+    _inherit = "res.partner"
+
+    invoice_intrastat_detail = fields.Boolean(
+        string="Show intrastat details in invoice report"
+    )
+
+    @api.model
+    def _commercial_fields(self):
+        return super()._commercial_fields() + ["invoice_intrastat_detail"]
diff --git a/intrastat_product/models/sale_order.py b/intrastat_product/models/sale_order.py
new file mode 100644
index 000000000..82f54b88c
--- /dev/null
+++ b/intrastat_product/models/sale_order.py
@@ -0,0 +1,27 @@
+# Copyright 2010-2020 Akretion France (http://www.akretion.com)
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import fields, models
+
+
+class SaleOrder(models.Model):
+    _inherit = "sale.order"
+
+    intrastat_transport_id = fields.Many2one(
+        comodel_name="intrastat.transport_mode",
+        string="Transport Mode",
+        help="This information is used in Intrastat reports",
+    )
+    intrastat = fields.Selection(
+        string="Intrastat Declaration", related="company_id.intrastat_dispatches"
+    )
+
+    def _prepare_invoice(self):
+        """Copy destination country to invoice"""
+        vals = super()._prepare_invoice()
+        if self.intrastat_transport_id:
+            vals["intrastat_transport_id"] = self.intrastat_transport_id.id
+        if self.warehouse_id.region_id:
+            vals["src_dest_region_id"] = self.warehouse_id.region_id.id
+        return vals
diff --git a/intrastat_product/models/stock_warehouse.py b/intrastat_product/models/stock_warehouse.py
new file mode 100644
index 000000000..0c93bf65d
--- /dev/null
+++ b/intrastat_product/models/stock_warehouse.py
@@ -0,0 +1,27 @@
+# Copyright 2009-2020 Noviat nv/sa (www.noviat.com).
+# @author Alexis de Lattre <alexis.delattre@akretion.com>
+# @author Luc de Meyer <info@noviat.com>
+
+from odoo import fields, models
+
+
+class StockWarehouse(models.Model):
+    _inherit = "stock.warehouse"
+
+    region_id = fields.Many2one(
+        comodel_name="intrastat.region", string="Intrastat Region"
+    )
+
+
+class StockLocation(models.Model):
+    _inherit = "stock.location"
+
+    def get_intrastat_region(self):
+        self.ensure_one()
+        warehouse = self.env["stock.warehouse"].search(
+            [("lot_stock_id", "parent_of", self.ids), ("region_id", "!=", False)],
+            limit=1,
+        )
+        if warehouse:
+            return warehouse.region_id
+        return self.env["intrastat.region"]
diff --git a/intrastat_product/pyproject.toml b/intrastat_product/pyproject.toml
new file mode 100644
index 000000000..4231d0ccc
--- /dev/null
+++ b/intrastat_product/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["whool"]
+build-backend = "whool.buildapi"
diff --git a/intrastat_product/readme/CONFIGURE.md b/intrastat_product/readme/CONFIGURE.md
new file mode 100644
index 000000000..d0fba96b3
--- /dev/null
+++ b/intrastat_product/readme/CONFIGURE.md
@@ -0,0 +1,15 @@
+By default the intrastat declaration is generated based upon the product
+record master data. Hence unexpected results may occur in case this
+master data is not accurate, e.g. wrong or missing weight, country of
+origin, ...
+
+This can be corrected by changing the appropriate fields when analysing
+the intrastat declaration but this can be challenging in case of large
+transaction volumes and especially in the specific use case where the
+product weight cannot be encoded correctly on the product records (e.g.
+products with variable weight).
+
+It is possible to allow encoding the intrastat transaction details on
+the purchase/sale invoice via the
+"intrastat_product.group_invoice_intrastat_transaction_detail" usability
+group.
diff --git a/intrastat_product/readme/CONTRIBUTORS.md b/intrastat_product/readme/CONTRIBUTORS.md
new file mode 100644
index 000000000..bdb75f019
--- /dev/null
+++ b/intrastat_product/readme/CONTRIBUTORS.md
@@ -0,0 +1,10 @@
+- Alexis de Lattre, Akretion \<<alexis.delattre@akretion.com>\>
+
+- Luc De Meyer, Noviat \<<info@noviat.com>\>
+
+- Denis Roussel \<<denis.roussel@acsone.eu>\>
+
+- Tecnativa \<www.tecnativa.com\>:
+
+  > - João Marques
+  > - Víctor Martínez
diff --git a/intrastat_product/readme/DESCRIPTION.md b/intrastat_product/readme/DESCRIPTION.md
new file mode 100644
index 000000000..1b8f9e22a
--- /dev/null
+++ b/intrastat_product/readme/DESCRIPTION.md
@@ -0,0 +1,13 @@
+This module contains common objects and fields for the Intrastat Product
+reporting.
+
+It should be used in combination with country-specific Intrastat Product
+reporting modules such as:
+
+- *l10n_fr_intrastat_product*: the module for the *Déclaration d'Echange
+  de Biens* (DEB) for France
+- *l10n_be_intrastat_product*: the module for the Intrastat Product
+  Declaration for Belgium
+
+These country-specific modules can be found in the OCA localization for
+those countries.
diff --git a/intrastat_product/readme/INSTALL.md b/intrastat_product/readme/INSTALL.md
new file mode 100644
index 000000000..22271150b
--- /dev/null
+++ b/intrastat_product/readme/INSTALL.md
@@ -0,0 +1,2 @@
+This module is NOT compatible with the *account_intrastat* module from
+Odoo Enterprise.
diff --git a/intrastat_product/readme/ROADMAP.md b/intrastat_product/readme/ROADMAP.md
new file mode 100644
index 000000000..428efa331
--- /dev/null
+++ b/intrastat_product/readme/ROADMAP.md
@@ -0,0 +1,5 @@
+The declaration is based upon the invoices of the corresponding tax
+declaration period.
+
+An option to generate the intrastat declaration based upon the dates of
+the physical movements of goods is currently not available.
diff --git a/intrastat_product/readme/USAGE.md b/intrastat_product/readme/USAGE.md
new file mode 100644
index 000000000..3cc457c52
--- /dev/null
+++ b/intrastat_product/readme/USAGE.md
@@ -0,0 +1,43 @@
+This module is used in combination with the country-specific
+localization module(s).
+
+**Coding guidelines for localization module:**
+
+We recommend to start by copying an existing module, e.g.
+l10n_be_intrastat_product and adapt the code for the specific needs of
+your country.
+
+- Declaration Object
+
+  Create a new class as follows:
+
+  ``` python
+  class L10nCcIntrastatProductDeclaration(models.Model):
+      _name = 'l10n.cc.intrastat.product.declaration'
+      _description = "Intrastat Product Declaration for YourCountry"
+      _inherit = ['intrastat.product.declaration', 'mail.thread']
+  ```
+
+  whereby cc = your country code
+
+- Computation & Declaration Lines
+
+  Create also new objects inheriting from the Computation and
+  Declaration Line Objects so that you can add methods or customise the
+  methods from the base modules (make a PR when the customization or new
+  method is required for multiple countries).
+
+  Adapt also the parent_id fields of the newly created objects (cf.
+  l10n_be_intrastat_product as example).
+
+- XML Files: Menu, Action, Views
+
+  Cf. l10n_be_istrastat_product as example, replace "be" by your Country
+  Code.
+
+**Other functionality added by this module:**
+
+- Compute the Intrastat Lines in an invoice. For this, your user needs
+  to be in the "Technical / Invoice Intrastat Transaction Details"
+  group. Go to the "Intrastat transaction details" tab and press
+  **Compute**
diff --git a/intrastat_product/report/__init__.py b/intrastat_product/report/__init__.py
new file mode 100644
index 000000000..94b3dbbea
--- /dev/null
+++ b/intrastat_product/report/__init__.py
@@ -0,0 +1,1 @@
+from . import intrastat_product_report_xls
diff --git a/intrastat_product/report/intrastat_product_report_xls.py b/intrastat_product/report/intrastat_product_report_xls.py
new file mode 100644
index 000000000..baf62365c
--- /dev/null
+++ b/intrastat_product/report/intrastat_product_report_xls.py
@@ -0,0 +1,294 @@
+# Copyright 2009-2022 Noviat
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+import logging
+
+from odoo import _, models
+
+from odoo.addons.report_xlsx_helper.report.report_xlsx_format import (
+    FORMATS,
+    XLS_HEADERS,
+)
+
+_logger = logging.getLogger(__name__)
+
+
+IR_TRANSLATION_NAME = "intrastat.product.report"
+
+
+class IntrastatProductDeclarationXlsx(models.AbstractModel):
+    _name = "report.intrastat_product.product_declaration_xls"
+    _inherit = "report.report_xlsx.abstract"
+    _description = "Intrastat declaration"
+
+    def _get_template(self, declaration):
+        """
+        Return a dictionary that contains columns specifications
+        see: report_xlsx_helper / _write_line() method
+        """
+
+        template = {
+            "product": {
+                "header": {"type": "string", "value": _("Product")},
+                "line": {
+                    "value": self._render("line.product_id and line.product_id.name")
+                },
+                "width": 36,
+            },
+            "product_origin_country_code": {
+                "header": {"type": "string", "value": _("Product C/O Code")},
+                "line": {
+                    "type": "string",
+                    "value": self._render("line.product_origin_country_code or ''"),
+                },
+                "width": 10,
+            },
+            "product_origin_country": {
+                "header": {"type": "string", "value": _("Product C/O")},
+                "line": {
+                    "type": "string",
+                    "value": self._render("line.product_origin_country_id.name or ''"),
+                },
+                "width": 28,
+            },
+            "hs_code": {
+                "header": {"type": "string", "value": _("Intrastat Code")},
+                "line": {
+                    "type": "string",
+                    "value": self._render("line.hs_code_id.local_code"),
+                },
+                "width": 14,
+            },
+            "src_dest_country_code": {
+                "header": {
+                    "type": "string",
+                    "value": _("Country Code of Origin/Destination"),
+                },
+                "line": {
+                    "type": "string",
+                    "value": self._render("line.src_dest_country_code"),
+                },
+                "width": 10,
+            },
+            "src_dest_country": {
+                "header": {
+                    "type": "string",
+                    "value": _("Country of Origin/Destination"),
+                },
+                "line": {
+                    "type": "string",
+                    "value": self._render("line.src_dest_country_id.name"),
+                },
+                "width": 28,
+            },
+            "amount_company_currency": {
+                "header": {
+                    "type": "string",
+                    "value": _("Fiscal Value"),
+                    "format": FORMATS["format_theader_yellow_right"],
+                },
+                "line": {
+                    "type": "number",
+                    "value": self._render("line.amount_company_currency"),
+                    "format": FORMATS["format_tcell_amount_right"],
+                },
+                "width": 18,
+            },
+            "accessory_cost": {
+                "header": {
+                    "type": "string",
+                    "value": _("Accessory Costs"),
+                    "format": FORMATS["format_theader_yellow_right"],
+                },
+                "line": {
+                    "type": "number",
+                    "value": self._render(
+                        "line.amount_accessory_cost_company_currency"
+                    ),
+                    "format": FORMATS["format_tcell_amount_right"],
+                },
+                "width": 18,
+            },
+            "transaction_code": {
+                "header": {
+                    "type": "string",
+                    "value": _("Intrastat Transaction Code"),
+                },
+                "line": {"value": self._render("line.transaction_id.code")},
+                "width": 10,
+            },
+            "transaction": {
+                "header": {"type": "string", "value": _("Intrastat Transaction")},
+                "line": {"value": self._render("line.transaction_id.display_name")},
+                "width": 36,
+            },
+            "weight": {
+                "header": {
+                    "type": "string",
+                    "value": _("Weight"),
+                    "format": FORMATS["format_theader_yellow_right"],
+                },
+                "line": {
+                    "type": "number",
+                    "value": self._render("line.weight"),
+                    "format": FORMATS["format_tcell_amount_right"],
+                },
+                "width": 18,
+            },
+            "suppl_unit_qty": {
+                "header": {
+                    "type": "string",
+                    "value": _("Suppl. Unit Qty"),
+                    "format": FORMATS["format_theader_yellow_right"],
+                },
+                "line": {
+                    # we don't specify a type here and rely on the
+                    # report_xlsx_helper type detection to use
+                    # write_string when suppl_unit_qty is zero
+                    "value": self._render("line.suppl_unit_qty or ''"),
+                    "format": FORMATS["format_tcell_amount_right"],
+                },
+                "width": 18,
+            },
+            "suppl_unit": {
+                "header": {"type": "string", "value": _("Suppl. Unit")},
+                "line": {"value": self._render("line.intrastat_unit_id.name or ''")},
+                "width": 14,
+            },
+            "incoterm": {
+                "header": {"type": "string", "value": _("Incoterm")},
+                "line": {"value": self._render("line.incoterm_id.name or ''")},
+                "width": 14,
+            },
+            "transport_code": {
+                "header": {"type": "string", "value": _("Transport Mode Code")},
+                "line": {"value": self._render("line.transport_id.code or ''")},
+                "width": 10,
+            },
+            "transport": {
+                "header": {"type": "string", "value": _("Transport Mode")},
+                "line": {"value": self._render("line.transport_id.name or ''")},
+                "width": 14,
+            },
+            "region": {
+                "header": {"type": "string", "value": _("Intrastat Region")},
+                "line": {"value": self._render("line.region_id.name or ''")},
+                "width": 28,
+            },
+            "region_code": {
+                "header": {"type": "string", "value": _("Intrastat Region Code")},
+                "line": {"value": self._render("line.region_code or ''")},
+                "width": 10,
+            },
+            "vat": {
+                "header": {"type": "string", "value": _("VAT")},
+                "line": {"value": self._render("line.vat or ''")},
+                "width": 20,
+            },
+            "partner_id": {
+                "header": {"type": "string", "value": _("Partner")},
+                "line": {"value": self._render("line.partner_id.display_name or ''")},
+                "width": 28,
+            },
+            "invoice": {
+                "header": {"type": "string", "value": _("Invoice")},
+                "line": {"value": self._render("line.invoice_id.name")},
+                "width": 18,
+            },
+        }
+        template.update(declaration._xls_template())
+
+        return template
+
+    def _get_ws_params(self, wb, data, declarations):
+        template = self._get_template(declarations)
+        res = []
+        wanted_list_computation = declarations._xls_computation_line_fields()
+        wanted_list_declaration = declarations._xls_declaration_line_fields()
+        type2label = dict(
+            self.env["intrastat.product.declaration"].fields_get(
+                "declaration_type", "selection"
+            )["declaration_type"]["selection"]
+        )
+        for decl in declarations:
+            dname = " ".join([decl.year_month, type2label[decl.declaration_type]])
+            res += [
+                {
+                    "ws_name": " ".join([dname, _("comput.")]),
+                    "generate_ws_method": "_intrastat_report_computation",
+                    "title": " : ".join([dname, _("Computation Lines")]),
+                    "wanted_list": wanted_list_computation,
+                    "col_specs": template,
+                },
+                {
+                    "ws_name": " ".join([dname, _("decl.")]),
+                    "generate_ws_method": "_intrastat_report_declaration",
+                    "title": " : ".join([dname, _("Declaration Lines")]),
+                    "wanted_list": wanted_list_declaration,
+                    "col_specs": template,
+                },
+            ]
+        return res
+
+    def _report_title(self, ws, row_pos, ws_params, data, declaration):
+        return self._write_ws_title(ws, row_pos, ws_params)
+
+    def _empty_report(self, ws, row_pos, ws_params, data, declaration, report):
+        if report == "computation":
+            lines = _("Computation Lines")
+        else:
+            lines = _("Declaration Lines")
+        no_entries = (
+            _("No") + " " + lines + " " + _("for period %s") % declaration.year_month
+        )
+        ws.write_string(row_pos, 0, no_entries, FORMATS["format_left_bold"])
+
+    def _intrastat_report_computation(self, workbook, ws, ws_params, data, declaration):
+        report = "computation"
+        lines = declaration.computation_line_ids
+        self._intrastat_report(
+            workbook, ws, ws_params, data, declaration, lines, report
+        )
+
+    def _intrastat_report_declaration(self, workbook, ws, ws_params, data, declaration):
+        report = "declaration"
+        lines = declaration.declaration_line_ids
+        self._intrastat_report(
+            workbook, ws, ws_params, data, declaration, lines, report
+        )
+
+    def _intrastat_report(
+        self, workbook, ws, ws_params, data, declaration, lines, report
+    ):
+        ws.set_landscape()
+        ws.fit_to_pages(1, 0)
+        ws.set_header(XLS_HEADERS["xls_headers"]["standard"])
+        ws.set_footer(XLS_HEADERS["xls_footers"]["standard"])
+
+        self._set_column_width(ws, ws_params)
+
+        row_pos = 0
+        row_pos = self._report_title(ws, row_pos, ws_params, data, declaration)
+
+        if not lines:
+            return self._empty_report(ws, row_pos, ws_params, data, declaration, report)
+
+        row_pos = self._write_line(
+            ws,
+            row_pos,
+            ws_params,
+            col_specs_section="header",
+            default_format=FORMATS["format_theader_yellow_left"],
+        )
+
+        ws.freeze_panes(row_pos, 0)
+
+        for line in lines:
+            row_pos = self._write_line(
+                ws,
+                row_pos,
+                ws_params,
+                col_specs_section="line",
+                render_space={"line": line},
+                default_format=FORMATS["format_tcell_left"],
+            )
diff --git a/intrastat_product/report/report.xml b/intrastat_product/report/report.xml
new file mode 100644
index 000000000..b3da89bc0
--- /dev/null
+++ b/intrastat_product/report/report.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  Copyright 2023 Akretion France (http://www.akretion.com/)
+  @author: Alexis de Lattre <alexis.delattre@akretion.com>
+  License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
+-->
+<odoo>
+
+<record id="intrastat_product_xlsx_report" model="ir.actions.report">
+    <field name="name">Excel Export</field>
+    <field name="model">intrastat.product.declaration</field>
+    <field name="report_type">xlsx</field>
+    <field name="report_name">intrastat_product.product_declaration_xls</field>
+    <field name="report_file">intrastat_product.product_declaration_xls</field>
+    <field name="print_report_name">object._get_xlsx_report_filename()</field>
+    <field name="binding_model_id" ref="model_intrastat_product_declaration" />
+</record>
+
+</odoo>
diff --git a/intrastat_product/security/intrastat_security.xml b/intrastat_product/security/intrastat_security.xml
new file mode 100644
index 000000000..82552a55b
--- /dev/null
+++ b/intrastat_product/security/intrastat_security.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+    <data noupdate="0">
+        <record id="group_invoice_intrastat_transaction_details" model="res.groups">
+            <field name="name">Invoice Intrastat Transaction Details</field>
+            <field
+                name="comment"
+            >Allow to encode Intrastat Transaction Details on Invoices</field>
+            <field name="category_id" ref="base.module_category_hidden" />
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="intrastat_transaction_company_rule" model="ir.rule">
+            <field name="name">Intrastat Transaction Company rule</field>
+            <field name="model_id" ref="model_intrastat_transaction" />
+            <field
+                name="domain_force"
+            >['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
+        </record>
+        <record id="intrastat_region_company_rule" model="ir.rule">
+            <field name="name">Intrastat Region Company rule</field>
+            <field name="model_id" ref="model_intrastat_region" />
+            <field
+                name="domain_force"
+            >['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
+        </record>
+        <record id="intrastat_product_declaration_company_rule" model="ir.rule">
+            <field name="name">Intrastat Product Declaration Company rule</field>
+            <field name="model_id" ref="model_intrastat_product_declaration" />
+            <field
+                name="domain_force"
+            >['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
+        </record>
+    </data>
+</odoo>
diff --git a/intrastat_product/security/ir.model.access.csv b/intrastat_product/security/ir.model.access.csv
new file mode 100644
index 000000000..f9fa3e102
--- /dev/null
+++ b/intrastat_product/security/ir.model.access.csv
@@ -0,0 +1,21 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_intrastat_unit_read,Read access on Intrastat Supplementary Units to employees,model_intrastat_unit,base.group_user,1,0,0,0
+access_intrastat_unit_full,Full access on Intrastat Supplementary Units to Finance manager,model_intrastat_unit,account.group_account_manager,1,1,1,1
+access_intrastat_transaction_read,Read access on Intrastat Transaction Types to employees,model_intrastat_transaction,base.group_user,1,0,0,0
+access_intrastat_transaction_full,Full access on Intrastat Transaction Types to Finance manager,model_intrastat_transaction,account.group_account_manager,1,1,1,1
+access_intrastat_transport_mode_read,Read access on Intrastat Transport Modes to employees,model_intrastat_transport_mode,base.group_user,1,0,0,0
+access_intrastat_transport_mode_full,Full access on Intrastat Transport Modes to Finance manager,model_intrastat_transport_mode,account.group_account_manager,1,1,1,1
+access_intrastat_region_read,Read access on Intrastat Regions to employees,model_intrastat_region,base.group_user,1,0,0,0
+access_intrastat_region_full,Full access on Intrastat Regions,model_intrastat_region,account.group_account_manager,1,1,1,1
+access_hs_code_financial_mgr_full,Full access on H.S. Code to financial mgr,product_harmonized_system.model_hs_code,account.group_account_manager,1,1,1,1
+access_read_sale_move_intrastat_line,Read access to Sale User on Invoice Intrastat Lines,model_account_move_intrastat_line,sales_team.group_sale_salesman,1,0,0,0
+access_read_purchase_move_intrastat_line,Read access to Purchase User on Invoice Intrastat Lines,model_account_move_intrastat_line,purchase.group_purchase_user,1,0,0,0
+access_read_account_move_intrastat_line,Read access on Invoice Intrastat Lines,model_account_move_intrastat_line,account.group_account_readonly,1,0,0,0
+access_account_move_intrastat_line,Full access on Invoice Intrastat Lines,model_account_move_intrastat_line,account.group_account_invoice,1,1,1,1
+access_intrastat_product_declaration,Full access on Intrastat Product Declarations to Accountant,model_intrastat_product_declaration,account.group_account_user,1,1,1,1
+access_intrastat_product_declaration_readonly,Read-only access on Intrastat Product Declarations to Auditor,model_intrastat_product_declaration,account.group_account_readonly,1,0,0,0
+access_intrastat_product_computation_line,Full access on Intrastat Product Computation Lines to Accountant,model_intrastat_product_computation_line,account.group_account_user,1,1,1,1
+access_intrastat_product_computation_line_readonly,Readon-only access on Intrastat Product Computation Lines to Auditor,model_intrastat_product_computation_line,account.group_account_readonly,1,0,0,0
+access_intrastat_product_declaration_line,Full access on Intrastat Product Declaration Lines to Accountant,model_intrastat_product_declaration_line,account.group_account_user,1,1,1,1
+access_intrastat_product_declaration_line_readonly,Read-only access on Intrastat Product Declaration Lines to Auditor,model_intrastat_product_declaration_line,account.group_account_readonly,1,0,0,0
+access_intrastat_result_view,Access on intrastat.result.view,model_intrastat_result_view,account.group_account_user,1,1,1,0
diff --git a/intrastat_product/static/description/icon.png b/intrastat_product/static/description/icon.png
new file mode 100644
index 000000000..3a0328b51
Binary files /dev/null and b/intrastat_product/static/description/icon.png differ
diff --git a/intrastat_product/static/description/index.html b/intrastat_product/static/description/index.html
new file mode 100644
index 000000000..6d4a44b21
--- /dev/null
+++ b/intrastat_product/static/description/index.html
@@ -0,0 +1,520 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
+<title>Intrastat Product</title>
+<style type="text/css">
+
+/*
+:Author: David Goodger (goodger@python.org)
+:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
+:Copyright: This stylesheet has been placed in the public domain.
+
+Default cascading style sheet for the HTML output of Docutils.
+
+See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+*/
+
+/* used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+  border: 0 }
+
+table.borderless td, table.borderless th {
+  /* Override padding for "table.docutils td" with "! important".
+     The right padding separates the table cells. */
+  padding: 0 0.5em 0 0 ! important }
+
+.first {
+  /* Override more specific margin styles with "! important". */
+  margin-top: 0 ! important }
+
+.last, .with-subtitle {
+  margin-bottom: 0 ! important }
+
+.hidden {
+  display: none }
+
+.subscript {
+  vertical-align: sub;
+  font-size: smaller }
+
+.superscript {
+  vertical-align: super;
+  font-size: smaller }
+
+a.toc-backref {
+  text-decoration: none ;
+  color: black }
+
+blockquote.epigraph {
+  margin: 2em 5em ; }
+
+dl.docutils dd {
+  margin-bottom: 0.5em }
+
+object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
+  overflow: hidden;
+}
+
+/* Uncomment (and remove this text!) to get bold-faced definition list terms
+dl.docutils dt {
+  font-weight: bold }
+*/
+
+div.abstract {
+  margin: 2em 5em }
+
+div.abstract p.topic-title {
+  font-weight: bold ;
+  text-align: center }
+
+div.admonition, div.attention, div.caution, div.danger, div.error,
+div.hint, div.important, div.note, div.tip, div.warning {
+  margin: 2em ;
+  border: medium outset ;
+  padding: 1em }
+
+div.admonition p.admonition-title, div.hint p.admonition-title,
+div.important p.admonition-title, div.note p.admonition-title,
+div.tip p.admonition-title {
+  font-weight: bold ;
+  font-family: sans-serif }
+
+div.attention p.admonition-title, div.caution p.admonition-title,
+div.danger p.admonition-title, div.error p.admonition-title,
+div.warning p.admonition-title, .code .error {
+  color: red ;
+  font-weight: bold ;
+  font-family: sans-serif }
+
+/* Uncomment (and remove this text!) to get reduced vertical space in
+   compound paragraphs.
+div.compound .compound-first, div.compound .compound-middle {
+  margin-bottom: 0.5em }
+
+div.compound .compound-last, div.compound .compound-middle {
+  margin-top: 0.5em }
+*/
+
+div.dedication {
+  margin: 2em 5em ;
+  text-align: center ;
+  font-style: italic }
+
+div.dedication p.topic-title {
+  font-weight: bold ;
+  font-style: normal }
+
+div.figure {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+div.footer, div.header {
+  clear: both;
+  font-size: smaller }
+
+div.line-block {
+  display: block ;
+  margin-top: 1em ;
+  margin-bottom: 1em }
+
+div.line-block div.line-block {
+  margin-top: 0 ;
+  margin-bottom: 0 ;
+  margin-left: 1.5em }
+
+div.sidebar {
+  margin: 0 0 0.5em 1em ;
+  border: medium outset ;
+  padding: 1em ;
+  background-color: #ffffee ;
+  width: 40% ;
+  float: right ;
+  clear: right }
+
+div.sidebar p.rubric {
+  font-family: sans-serif ;
+  font-size: medium }
+
+div.system-messages {
+  margin: 5em }
+
+div.system-messages h1 {
+  color: red }
+
+div.system-message {
+  border: medium outset ;
+  padding: 1em }
+
+div.system-message p.system-message-title {
+  color: red ;
+  font-weight: bold }
+
+div.topic {
+  margin: 2em }
+
+h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
+h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
+  margin-top: 0.4em }
+
+h1.title {
+  text-align: center }
+
+h2.subtitle {
+  text-align: center }
+
+hr.docutils {
+  width: 75% }
+
+img.align-left, .figure.align-left, object.align-left, table.align-left {
+  clear: left ;
+  float: left ;
+  margin-right: 1em }
+
+img.align-right, .figure.align-right, object.align-right, table.align-right {
+  clear: right ;
+  float: right ;
+  margin-left: 1em }
+
+img.align-center, .figure.align-center, object.align-center {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+table.align-center {
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.align-left {
+  text-align: left }
+
+.align-center {
+  clear: both ;
+  text-align: center }
+
+.align-right {
+  text-align: right }
+
+/* reset inner alignment in figures */
+div.align-right {
+  text-align: inherit }
+
+/* div.align-center * { */
+/*   text-align: left } */
+
+.align-top    {
+  vertical-align: top }
+
+.align-middle {
+  vertical-align: middle }
+
+.align-bottom {
+  vertical-align: bottom }
+
+ol.simple, ul.simple {
+  margin-bottom: 1em }
+
+ol.arabic {
+  list-style: decimal }
+
+ol.loweralpha {
+  list-style: lower-alpha }
+
+ol.upperalpha {
+  list-style: upper-alpha }
+
+ol.lowerroman {
+  list-style: lower-roman }
+
+ol.upperroman {
+  list-style: upper-roman }
+
+p.attribution {
+  text-align: right ;
+  margin-left: 50% }
+
+p.caption {
+  font-style: italic }
+
+p.credits {
+  font-style: italic ;
+  font-size: smaller }
+
+p.label {
+  white-space: nowrap }
+
+p.rubric {
+  font-weight: bold ;
+  font-size: larger ;
+  color: maroon ;
+  text-align: center }
+
+p.sidebar-title {
+  font-family: sans-serif ;
+  font-weight: bold ;
+  font-size: larger }
+
+p.sidebar-subtitle {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+p.topic-title {
+  font-weight: bold }
+
+pre.address {
+  margin-bottom: 0 ;
+  margin-top: 0 ;
+  font: inherit }
+
+pre.literal-block, pre.doctest-block, pre.math, pre.code {
+  margin-left: 2em ;
+  margin-right: 2em }
+
+pre.code .ln { color: grey; } /* line numbers */
+pre.code, code { background-color: #eeeeee }
+pre.code .comment, code .comment { color: #5C6576 }
+pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
+pre.code .literal.string, code .literal.string { color: #0C5404 }
+pre.code .name.builtin, code .name.builtin { color: #352B84 }
+pre.code .deleted, code .deleted { background-color: #DEB0A1}
+pre.code .inserted, code .inserted { background-color: #A3D289}
+
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+
+span.interpreted {
+  font-family: sans-serif }
+
+span.option {
+  white-space: nowrap }
+
+span.pre {
+  white-space: pre }
+
+span.problematic {
+  color: red }
+
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+
+table.citation {
+  border-left: solid 1px gray;
+  margin-left: 1px }
+
+table.docinfo {
+  margin: 2em 4em }
+
+table.docutils {
+  margin-top: 0.5em ;
+  margin-bottom: 0.5em }
+
+table.footnote {
+  border-left: solid 1px black;
+  margin-left: 1px }
+
+table.docutils td, table.docutils th,
+table.docinfo td, table.docinfo th {
+  padding-left: 0.5em ;
+  padding-right: 0.5em ;
+  vertical-align: top }
+
+table.docutils th.field-name, table.docinfo th.docinfo-name {
+  font-weight: bold ;
+  text-align: left ;
+  white-space: nowrap ;
+  padding-left: 0 }
+
+/* "booktabs" style (no vertical lines) */
+table.docutils.booktabs {
+  border: 0px;
+  border-top: 2px solid;
+  border-bottom: 2px solid;
+  border-collapse: collapse;
+}
+table.docutils.booktabs * {
+  border: 0px;
+}
+table.docutils.booktabs th {
+  border-bottom: thin solid;
+  text-align: left;
+}
+
+h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
+h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
+  font-size: 100% }
+
+ul.auto-toc {
+  list-style-type: none }
+
+</style>
+</head>
+<body>
+<div class="document" id="intrastat-product">
+<h1 class="title">Intrastat Product</h1>
+
+<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! This file is generated by oca-gen-addon-readme !!
+!! changes will be overwritten.                   !!
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+!! source digest: sha256:4fd233db64fe121941a45cbac26752c2d2e95687fc4f49c2f5d92f48f95c27c2
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/intrastat-extrastat/tree/17.0/intrastat_product"><img alt="OCA/intrastat-extrastat" src="https://img.shields.io/badge/github-OCA%2Fintrastat--extrastat-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/intrastat-extrastat-17-0/intrastat-extrastat-17-0-intrastat_product"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/intrastat-extrastat&amp;target_branch=17.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
+<p>This module contains common objects and fields for the Intrastat Product
+reporting.</p>
+<p>It should be used in combination with country-specific Intrastat Product
+reporting modules such as:</p>
+<ul class="simple">
+<li><em>l10n_fr_intrastat_product</em>: the module for the <em>Déclaration
+d’Echange de Biens</em> (DEB) for France</li>
+<li><em>l10n_be_intrastat_product</em>: the module for the Intrastat Product
+Declaration for Belgium</li>
+</ul>
+<p>These country-specific modules can be found in the OCA localization for
+those countries.</p>
+<p><strong>Table of contents</strong></p>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#installation" id="toc-entry-1">Installation</a></li>
+<li><a class="reference internal" href="#configuration" id="toc-entry-2">Configuration</a></li>
+<li><a class="reference internal" href="#usage" id="toc-entry-3">Usage</a></li>
+<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-4">Known issues / Roadmap</a></li>
+<li><a class="reference internal" href="#bug-tracker" id="toc-entry-5">Bug Tracker</a></li>
+<li><a class="reference internal" href="#credits" id="toc-entry-6">Credits</a><ul>
+<li><a class="reference internal" href="#authors" id="toc-entry-7">Authors</a></li>
+<li><a class="reference internal" href="#contributors" id="toc-entry-8">Contributors</a></li>
+<li><a class="reference internal" href="#maintainers" id="toc-entry-9">Maintainers</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="installation">
+<h1><a class="toc-backref" href="#toc-entry-1">Installation</a></h1>
+<p>This module is NOT compatible with the <em>account_intrastat</em> module from
+Odoo Enterprise.</p>
+</div>
+<div class="section" id="configuration">
+<h1><a class="toc-backref" href="#toc-entry-2">Configuration</a></h1>
+<p>By default the intrastat declaration is generated based upon the product
+record master data. Hence unexpected results may occur in case this
+master data is not accurate, e.g. wrong or missing weight, country of
+origin, …</p>
+<p>This can be corrected by changing the appropriate fields when analysing
+the intrastat declaration but this can be challenging in case of large
+transaction volumes and especially in the specific use case where the
+product weight cannot be encoded correctly on the product records (e.g.
+products with variable weight).</p>
+<p>It is possible to allow encoding the intrastat transaction details on
+the purchase/sale invoice via the
+“intrastat_product.group_invoice_intrastat_transaction_detail” usability
+group.</p>
+</div>
+<div class="section" id="usage">
+<h1><a class="toc-backref" href="#toc-entry-3">Usage</a></h1>
+<p>This module is used in combination with the country-specific
+localization module(s).</p>
+<p><strong>Coding guidelines for localization module:</strong></p>
+<p>We recommend to start by copying an existing module, e.g.
+l10n_be_intrastat_product and adapt the code for the specific needs of
+your country.</p>
+<ul>
+<li><p class="first">Declaration Object</p>
+<p>Create a new class as follows:</p>
+<pre class="code python literal-block">
+<span class="k">class</span> <span class="nc">L10nCcIntrastatProductDeclaration</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span><span class="w">
+</span>    <span class="n">_name</span> <span class="o">=</span> <span class="s1">'l10n.cc.intrastat.product.declaration'</span><span class="w">
+</span>    <span class="n">_description</span> <span class="o">=</span> <span class="s2">&quot;Intrastat Product Declaration for YourCountry&quot;</span><span class="w">
+</span>    <span class="n">_inherit</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'intrastat.product.declaration'</span><span class="p">,</span> <span class="s1">'mail.thread'</span><span class="p">]</span>
+</pre>
+<p>whereby cc = your country code</p>
+</li>
+<li><p class="first">Computation &amp; Declaration Lines</p>
+<p>Create also new objects inheriting from the Computation and
+Declaration Line Objects so that you can add methods or customise the
+methods from the base modules (make a PR when the customization or
+new method is required for multiple countries).</p>
+<p>Adapt also the parent_id fields of the newly created objects (cf.
+l10n_be_intrastat_product as example).</p>
+</li>
+<li><p class="first">XML Files: Menu, Action, Views</p>
+<p>Cf. l10n_be_istrastat_product as example, replace “be” by your
+Country Code.</p>
+</li>
+</ul>
+<p><strong>Other functionality added by this module:</strong></p>
+<ul class="simple">
+<li>Compute the Intrastat Lines in an invoice. For this, your user needs
+to be in the “Technical / Invoice Intrastat Transaction Details”
+group. Go to the “Intrastat transaction details” tab and press
+<strong>Compute</strong></li>
+</ul>
+</div>
+<div class="section" id="known-issues-roadmap">
+<h1><a class="toc-backref" href="#toc-entry-4">Known issues / Roadmap</a></h1>
+<p>The declaration is based upon the invoices of the corresponding tax
+declaration period.</p>
+<p>An option to generate the intrastat declaration based upon the dates of
+the physical movements of goods is currently not available.</p>
+</div>
+<div class="section" id="bug-tracker">
+<h1><a class="toc-backref" href="#toc-entry-5">Bug Tracker</a></h1>
+<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/intrastat-extrastat/issues">GitHub Issues</a>.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us to smash it by providing a detailed and welcomed
+<a class="reference external" href="https://github.com/OCA/intrastat-extrastat/issues/new?body=module:%20intrastat_product%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
+<p>Do not contact contributors directly about support or help with technical issues.</p>
+</div>
+<div class="section" id="credits">
+<h1><a class="toc-backref" href="#toc-entry-6">Credits</a></h1>
+<div class="section" id="authors">
+<h2><a class="toc-backref" href="#toc-entry-7">Authors</a></h2>
+<ul class="simple">
+<li>ACSONE SA/NV</li>
+<li>brain-tec AG</li>
+<li>Akretion</li>
+<li>Noviat</li>
+</ul>
+</div>
+<div class="section" id="contributors">
+<h2><a class="toc-backref" href="#toc-entry-8">Contributors</a></h2>
+<ul>
+<li><p class="first">Alexis de Lattre, Akretion &lt;<a class="reference external" href="mailto:alexis.delattre&#64;akretion.com">alexis.delattre&#64;akretion.com</a>&gt;</p>
+</li>
+<li><p class="first">Luc De Meyer, Noviat &lt;<a class="reference external" href="mailto:info&#64;noviat.com">info&#64;noviat.com</a>&gt;</p>
+</li>
+<li><p class="first">Denis Roussel &lt;<a class="reference external" href="mailto:denis.roussel&#64;acsone.eu">denis.roussel&#64;acsone.eu</a>&gt;</p>
+</li>
+<li><p class="first">Tecnativa &lt;<a class="reference external" href="http://www.tecnativa.com">www.tecnativa.com</a>&gt;:</p>
+<blockquote>
+<ul class="simple">
+<li>João Marques</li>
+<li>Víctor Martínez</li>
+</ul>
+</blockquote>
+</li>
+</ul>
+</div>
+<div class="section" id="maintainers">
+<h2><a class="toc-backref" href="#toc-entry-9">Maintainers</a></h2>
+<p>This module is maintained by the OCA.</p>
+<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
+<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.</p>
+<p>This module is part of the <a class="reference external" href="https://github.com/OCA/intrastat-extrastat/tree/17.0/intrastat_product">OCA/intrastat-extrastat</a> project on GitHub.</p>
+<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
+</div>
+</div>
+</div>
+</body>
+</html>
diff --git a/intrastat_product/views/account_move.xml b/intrastat_product/views/account_move.xml
new file mode 100644
index 000000000..b055f6feb
--- /dev/null
+++ b/intrastat_product/views/account_move.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+    <record id="view_move_form" model="ir.ui.view">
+        <field name="name">intrastat.invoice.form</field>
+        <field name="model">account.move</field>
+        <field name="inherit_id" ref="account.view_move_form" />
+        <field name="arch" type="xml">
+            <xpath
+                expr="//page[@name='other_info']//field[@name='invoice_incoterm_id']"
+                position="after"
+            >
+                <field name="intrastat_transaction_id" />
+                <field name="intrastat" invisible="1" />
+                <field
+                    name="intrastat_transport_id"
+                    invisible="intrastat != 'extended'"
+                    widget="selection"
+                />
+                <field name="src_dest_country_id" string="Destination Country" />
+                <field name="src_dest_region_id" string="Origin Region" invisible="1" />
+            </xpath>
+            <page id="invoice_tab" position="after">
+                <page
+                    id="intrastat_lines"
+                    string="Intrastat transaction details"
+                    groups="intrastat_product.group_invoice_intrastat_transaction_details"
+                    invisible="move_type not in ('out_invoice', 'out_refund', 'in_invoice', 'in_refund')"
+                >
+                    <div>
+                        <button
+                            type="object"
+                            name="compute_intrastat_lines"
+                            string="Compute"
+                            help="(Re)compute the intrastat transaction details from the product master data."
+                            icon="fa-gears"
+                        />
+                    </div>
+                    <field name="intrastat_line_ids">
+                        <tree editable="bottom">
+                            <field
+                                name="invoice_line_id"
+                                domain="[('move_id', '=', parent.id), ('display_type', '=', 'product')]"
+                                options="{'no_create': True, 'no_open': True}"
+                            />
+                            <field name="product_id" />
+                            <field name="quantity" />
+                            <field name="transaction_suppl_unit_qty" />
+                            <field name="hs_code_id" />
+                            <field name="transaction_weight" />
+                            <field name="product_origin_country_id" />
+                        </tree>
+                    </field>
+                </page>
+            </page>
+        </field>
+    </record>
+</odoo>
diff --git a/intrastat_product/views/hs_code.xml b/intrastat_product/views/hs_code.xml
new file mode 100644
index 000000000..9a80dbeb3
--- /dev/null
+++ b/intrastat_product/views/hs_code.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  Copyright 2010-2020 Akretion (http://www.akretion.com/)
+  Copyright 2015-2020 Noviat (http://www.noviat.com/)
+  @author Alexis de Lattre <alexis.delattre@akretion.com>
+  @author Luc De Meyer <luc.demeyer@noviat.com>
+  License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+-->
+<odoo>
+    <!-- Add the H.S. code menu under the Intrastat Config menu -->
+    <menuitem
+        id="intrastat_code_menu"
+        action="product_harmonized_system.hs_code_action"
+        parent="intrastat_base.menu_intrastat_config_root"
+        sequence="10"
+    />
+    <!-- Inherit tree view of H.S. code -->
+    <record id="hs_code_tree" model="ir.ui.view">
+        <field name="name">intrastat.hs.code.tree</field>
+        <field name="model">hs.code</field>
+        <field name="inherit_id" ref="product_harmonized_system.hs_code_view_tree" />
+        <field name="arch" type="xml">
+            <field name="local_code" position="after">
+                <field name="intrastat_unit_id" optional="show" />
+            </field>
+        </field>
+    </record>
+    <!-- Inherit form view for H.S. code -->
+    <record id="hs_code_form" model="ir.ui.view">
+        <field name="name">intrastat.hs.code.form</field>
+        <field name="model">hs.code</field>
+        <field name="inherit_id" ref="product_harmonized_system.hs_code_view_form" />
+        <field name="arch" type="xml">
+            <field name="local_code" position="after">
+                <field name="intrastat_unit_id" />
+            </field>
+        </field>
+    </record>
+</odoo>
diff --git a/intrastat_product/views/intrastat_product_declaration.xml b/intrastat_product/views/intrastat_product_declaration.xml
new file mode 100644
index 000000000..bdd9c3f2a
--- /dev/null
+++ b/intrastat_product/views/intrastat_product_declaration.xml
@@ -0,0 +1,526 @@
+<?xml version="1.0" ?>
+<odoo>
+    <record id="intrastat_product_declaration_view_form" model="ir.ui.view">
+        <field name="name">intrastat.product.declaration.form</field>
+        <field name="model">intrastat.product.declaration</field>
+        <field name="arch" type="xml">
+            <form>
+                <header>
+                    <button
+                        name="action_gather"
+                        type="object"
+                        invisible="state != 'draft' or action == 'nihil'"
+                        string="Generate Lines from Invoices"
+                        class="btn-primary"
+                        groups="account.group_account_user"
+                    />
+                    <button
+                        name="draft2confirmed"
+                        string="Confirm"
+                        type="object"
+                        class="btn-primary"
+                        invisible="state != 'draft'"
+                        help="Generate declaration lines"
+                        groups="account.group_account_user"
+                    />
+                    <button
+                        name="confirmed2done"
+                        string="Generate XML File"
+                        type="object"
+                        class="btn-primary"
+                        invisible="state != 'confirmed'"
+                        help="Generate XML file and set declaration to 'Done'"
+                        groups="account.group_account_user"
+                    />
+                    <button
+                        name="back2draft"
+                        string="Back to Draft"
+                        type="object"
+                        invisible="state == 'draft'"
+                        confirm="Are you sure you want to go back to draft?"
+                        groups="account.group_account_user"
+                    />
+                    <button
+                        name="%(intrastat_product.intrastat_product_xlsx_report)d"
+                        type="action"
+                        string="Excel Export"
+                    />
+                    <field name="state" widget="statusbar" />
+                </header>
+                <sheet>
+                    <div class="oe_title">
+                        <h1>
+                            <field name="display_name" />
+                        </h1>
+                    </div>
+                    <group name="top-block">
+                        <group name="properties-1">
+                            <field name="year" readonly="state != 'draft'" />
+                            <field name="month" readonly="state != 'draft'" />
+                            <field
+                                name="declaration_type"
+                                readonly="state != 'draft'"
+                            />
+                            <field name="reporting_level" readonly="state != 'draft'" />
+                            <field
+                                name="xml_attachment_datas"
+                                filename="xml_attachment_name"
+                                invisible="context.get('generic_intrastat_product_declaration')"
+                            />
+                            <field name="xml_attachment_name" invisible="1" />
+                            <field name="xml_attachment_id" invisible="1" />
+                        </group>
+                        <group name="properties-2">
+                            <field name="action" readonly="state == 'done'" />
+                            <field name="revision" readonly="state == 'done'" />
+                            <field
+                                name="total_amount"
+                                widget="monetary"
+                                options="{'currency_field': 'currency_id'}"
+                            />
+                            <field name="num_decl_lines" />
+                            <field
+                                name="company_id"
+                                groups="base.group_multi_company"
+                                readonly="state != 'draft'"
+                            />
+                            <field name="company_country_code" invisible="1" />
+                            <field name="currency_id" invisible="1" />
+                        </group>
+                    </group>
+                    <notebook>
+                        <page string="Transactions" name="computation_lines">
+                            <field
+                                name="computation_line_ids"
+                                readonly="state != 'draft'"
+                                context="{'declaration_type': declaration_type, 'reporting_level': reporting_level}"
+                                nolabel="1"
+                            />
+                        </page>
+                        <page
+                            string="Declaration Lines"
+                            name="declaration_lines"
+                            invisible="state == 'draft'"
+                        >
+                            <field
+                                name="declaration_line_ids"
+                                context="{'declaration_type': declaration_type, 'reporting_level': reporting_level}"
+                                nolabel="1"
+                            />
+                        </page>
+                        <page string="Notes" name="note">
+                            <field name="note" />
+                        </page>
+                    </notebook>
+                </sheet>
+                <div class="oe_chatter">
+                    <field name="message_follower_ids" widget="mail_followers" />
+                    <field name="activity_ids" widget="mail_activity" />
+                    <field name="message_ids" widget="mail_thread" />
+                </div>
+            </form>
+        </field>
+    </record>
+    <record id="intrastat_product_declaration_view_tree" model="ir.ui.view">
+        <field name="name">intrastat.product.declaration.tree</field>
+        <field name="model">intrastat.product.declaration</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field name="year_month" decoration-bf="1" />
+                <field
+                    name="declaration_type"
+                    widget="badge"
+                    decoration-danger="declaration_type == 'arrivals'"
+                    decoration-warning="declaration_type == 'dispatches'"
+                />
+                <field name="reporting_level" optional="hide" />
+                <field name="action" optional="hide" />
+                <field name="revision" optional="hide" />
+                <field name="num_decl_lines" optional="show" />
+                <field name="total_amount" sum="1" optional="show" />
+                <field name="currency_id" optional="show" />
+                <field
+                    name="state"
+                    decoration-success="state == 'done'"
+                    decoration-info="state == 'draft'"
+                    widget="badge"
+                />
+            </tree>
+        </field>
+    </record>
+    <record id="intrastat_product_declaration_view_search" model="ir.ui.view">
+        <field name="name">intrastat.product.declaration.search</field>
+        <field name="model">intrastat.product.declaration</field>
+        <field name="arch" type="xml">
+            <search>
+                <field name="year_month" />
+                <filter
+                    name="arrivals"
+                    string="Arrivals"
+                    domain="[('declaration_type', '=', 'arrivals')]"
+                />
+                <filter
+                    name="dispatches"
+                    string="Dispatches"
+                    domain="[('declaration_type', '=', 'dispatches')]"
+                />
+                <separator />
+                <filter
+                    name="draft"
+                    string="Draft"
+                    domain="[('state', '=', 'draft')]"
+                />
+                <filter
+                    name="confirmed"
+                    string="Confirmed"
+                    domain="[('state', '=', 'confirmed')]"
+                />
+                <filter name="done" string="Done" domain="[('state', '=', 'done')]" />
+                <group string="Group By" name="group_by">
+                    <filter
+                        name="date_group_by"
+                        string="Date"
+                        context="{'group_by': 'year_month'}"
+                    />
+                    <filter
+                        name="declaration_type_group_by"
+                        string="Type"
+                        context="{'group_by': 'declaration_type'}"
+                    />
+                    <filter
+                        name="state_group_by"
+                        string="State"
+                        context="{'group_by': 'state'}"
+                    />
+                </group>
+            </search>
+        </field>
+    </record>
+    <record id="intrastat_product_declaration_view_graph" model="ir.ui.view">
+        <field name="name">intrastat.product.declaration.graph</field>
+        <field name="model">intrastat.product.declaration</field>
+        <field name="arch" type="xml">
+            <graph type="bar" stacked="False">
+                <field name="year_month" type="row" />
+                <field name="declaration_type" type="row" />
+                <field name="total_amount" type="measure" />
+            </graph>
+        </field>
+    </record>
+    <record id="intrastat_product_declaration_view_pivot" model="ir.ui.view">
+        <field name="name">intrastat.product.declaration.pivot</field>
+        <field name="model">intrastat.product.declaration</field>
+        <field name="arch" type="xml">
+            <pivot>
+                <field name="year_month" type="row" />
+                <field name="declaration_type" type="col" />
+                <field name="total_amount" type="measure" />
+            </pivot>
+        </field>
+    </record>
+    <!-- No menuitem nor action since these are provided by the localization modules -->
+    <record id="intrastat_product_computation_line_view_form" model="ir.ui.view">
+        <field name="name">intrastat.product.computation.line.form</field>
+        <field name="model">intrastat.product.computation.line</field>
+        <field name="arch" type="xml">
+            <form>
+                <group string="Transaction" name="transaction">
+                    <field
+                        name="parent_id"
+                        invisible="not context.get('intrastat_product_computation_line_main_view')"
+                    />
+                    <field name="declaration_type" invisible="1" />
+                    <field name="reporting_level" invisible="1" />
+                    <field name="company_country_code" invisible="1" />
+                    <field name="product_id" />
+                    <field
+                        name="hs_code_id"
+                        required="reporting_level == 'extended'"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="src_dest_country_id"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="src_dest_country_code"
+                        required="reporting_level == 'extended'"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="amount_company_currency"
+                        widget="monetary"
+                        options="{'currency_field': 'company_currency_id'}"
+                    />
+                    <field
+                        name="amount_accessory_cost_company_currency"
+                        widget="monetary"
+                        options="{'currency_field': 'company_currency_id'}"
+                    />
+                    <field name="company_currency_id" invisible="1" />
+                    <field name="transaction_id" required="1" />
+                    <label
+                        for="weight"
+                        required="reporting_level == 'extended'"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <div
+                        name="weight"
+                        required="reporting_level == 'extended'"
+                        invisible="reporting_level != 'extended'"
+                    >
+                <field name="weight" class="oe_inline" /> kg
+            </div>
+                    <field
+                        name="suppl_unit_qty"
+                        required="reporting_level == 'extended' and intrastat_unit_id"
+                        invisible="reporting_level != 'extended' or not intrastat_unit_id"
+                    />
+                    <field
+                        name="intrastat_unit_id"
+                        invisible="reporting_level != 'extended' or not intrastat_unit_id"
+                    />
+                    <field
+                        name="transport_id"
+                        required="reporting_level == 'extended'"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field name="incoterm_id" invisible="1" />
+                    <field name="region_id" invisible="reporting_level != 'extended'" />
+                    <field
+                        name="region_code"
+                        required="reporting_level == 'extended'"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="product_origin_country_id"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="product_origin_country_code"
+                        required="reporting_level == 'extended'"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field name="partner_id" />
+                    <field name="vat" />
+                    <field name="invoice_id" />
+                </group>
+                <group string="Declaration" name="declaration">
+                    <field name="declaration_line_id" />
+                </group>
+            </form>
+        </field>
+    </record>
+    <record id="intrastat_product_computation_line_view_tree" model="ir.ui.view">
+        <field name="name">intrastat.product.computation.line.tree</field>
+        <field name="model">intrastat.product.computation.line</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field
+                    name="parent_id"
+                    column_invisible="not context.get('intrastat_product_computation_line_main_view')"
+                />
+                <field name="declaration_type" column_invisible="1" />
+                <field name="reporting_level" column_invisible="1" />
+                <field name="company_country_code" column_invisible="1" />
+                <field name="product_id" optional="show" />
+                <field
+                    name="hs_code_id"
+                    optional="show"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field
+                    name="src_dest_country_id"
+                    optional="hide"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field
+                    name="src_dest_country_code"
+                    optional="show"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field name="amount_company_currency" sum="1" />
+                <field
+                    name="amount_accessory_cost_company_currency"
+                    optional="show"
+                    sum="1"
+                />
+                <field name="transaction_code" />
+                <field
+                    name="weight"
+                    optional="show"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field
+                    name="suppl_unit_qty"
+                    optional="show"
+                    column_invisible="parent.reporting_level != 'extended'"
+                    invisible="not intrastat_unit_id"
+                />
+                <field
+                    name="intrastat_unit_id"
+                    optional="show"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field
+                    name="transport_id"
+                    optional="show"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field
+                    name="region_id"
+                    optional="hide"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field
+                    name="region_code"
+                    optional="show"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field
+                    name="product_origin_country_id"
+                    optional="hide"
+                    string="Product C/O"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field
+                    name="product_origin_country_code"
+                    optional="show"
+                    string="Product C/O"
+                    column_invisible="parent.reporting_level != 'extended'"
+                />
+                <field name="vat" optional="show" />
+                <field name="invoice_id" optional="show" />
+            </tree>
+        </field>
+    </record>
+    <record id="intrastat_product_declaration_line_view_form" model="ir.ui.view">
+        <field name="name">intrastat.product.declaration.line.form</field>
+        <field name="model">intrastat.product.declaration.line</field>
+        <field name="arch" type="xml">
+            <form>
+                <group name="declaration">
+                    <field
+                        name="parent_id"
+                        invisible="not context.get('intrastat_product_declaration_line_main_view')"
+                    />
+                    <field name="line_number" />
+                    <field name="declaration_type" invisible="1" />
+                    <field name="reporting_level" invisible="1" />
+                    <field name="company_country_code" invisible="1" />
+                    <field
+                        name="hs_code_id"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="src_dest_country_code"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="amount_company_currency"
+                        widget="monetary"
+                        options="{'currency_field': 'company_currency_id'}"
+                    />
+                    <field name="company_currency_id" invisible="1" />
+                    <field name="transaction_id" />
+                    <label for="weight" invisible="reporting_level != 'extended'" />
+                    <div name="weight" invisible="reporting_level != 'extended'">
+                <field name="weight" class="oe_inline" /> Kg
+            </div>
+                    <field
+                        name="suppl_unit_qty"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="intrastat_unit_id"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="transport_id"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field
+                        name="region_code"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field name="incoterm_id" invisible="1" />
+                    <field
+                        name="product_origin_country_code"
+                        invisible="reporting_level != 'extended'"
+                    />
+                    <field name="vat" />
+                </group>
+                <group name="computation" string="Related Transactions">
+                    <field name="computation_line_ids" nolabel="1" colspan="2" />
+                </group>
+            </form>
+        </field>
+    </record>
+    <record id="intrastat_product_declaration_line_view_tree" model="ir.ui.view">
+        <field name="name">intrastat.product.declaration.line.tree</field>
+        <field name="model">intrastat.product.declaration.line</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field
+                    name="parent_id"
+                    column_invisible="not context.get('intrastat_product_declaration_line_main_view')"
+                />
+                <field name="declaration_type" column_invisible="1" />
+                <field name="reporting_level" column_invisible="1" />
+                <field name="company_country_code" column_invisible="1" />
+                <field
+                    name="line_number"
+                    optional="show"
+                    string="Line"
+                    decoration-bf="1"
+                />
+                <field
+                    name="hs_code_id"
+                    column_invisible="parent.reporting_level != 'extended'"
+                    optional="show"
+                />
+                <field
+                    name="src_dest_country_code"
+                    column_invisible="parent.reporting_level != 'extended'"
+                    optional="show"
+                />
+                <field name="amount_company_currency" sum="1" />
+                <field name="transaction_code" />
+                <field
+                    name="weight"
+                    column_invisible="parent.reporting_level != 'extended'"
+                    optional="show"
+                />
+                <field
+                    name="suppl_unit_qty"
+                    column_invisible="parent.reporting_level != 'extended'"
+                    invisible="not intrastat_unit_id"
+                    optional="show"
+                />
+                <field
+                    name="intrastat_unit_id"
+                    column_invisible="parent.reporting_level != 'extended'"
+                    optional="show"
+                />
+                <field
+                    name="transport_id"
+                    column_invisible="parent.reporting_level != 'extended'"
+                    optional="show"
+                />
+                <field
+                    name="region_code"
+                    column_invisible="parent.reporting_level != 'extended'"
+                    optional="show"
+                />
+                <field name="incoterm_id" column_invisible="1" />
+                <field
+                    name="product_origin_country_code"
+                    column_invisible="parent.reporting_level != 'extended'"
+                    string="Product C/O"
+                    optional="show"
+                />
+                <field name="vat" />
+            </tree>
+        </field>
+    </record>
+</odoo>
diff --git a/intrastat_product/views/intrastat_region.xml b/intrastat_product/views/intrastat_region.xml
new file mode 100644
index 000000000..2b1d6de70
--- /dev/null
+++ b/intrastat_product/views/intrastat_region.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+    <record id="intrastat_region_view_form" model="ir.ui.view">
+        <field name="name">intrastat.region.form</field>
+        <field name="model">intrastat.region</field>
+        <field name="arch" type="xml">
+            <form>
+                <group name="main">
+                    <field name="code" />
+                    <field name="name" />
+                    <field name="description" />
+                    <field name="country_id" />
+                    <field name="company_id" groups="base.group_multi_company" />
+                </group>
+            </form>
+        </field>
+    </record>
+    <record id="intrastat_region_view_tree" model="ir.ui.view">
+        <field name="name">intrastat.region.tree</field>
+        <field name="model">intrastat.region</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field name="code" />
+                <field name="name" />
+                <field name="description" optional="show" />
+                <field name="country_id" />
+                <field name="company_id" groups="base.group_multi_company" />
+            </tree>
+        </field>
+    </record>
+    <record id="intrastat_region_view_search" model="ir.ui.view">
+        <field name="name">intrastat.region.search</field>
+        <field name="model">intrastat.region</field>
+        <field name="arch" type="xml">
+            <search>
+                <field
+                    name="name"
+                    string="Name, Code or Description"
+                    filter_domain="['|', '|', ('code', 'ilike', self), ('name', 'ilike', self), ('description', 'ilike', self)]"
+                />
+                <field name="code" />
+                <field name="country_id" />
+                <group name="groupby">
+                    <filter
+                        name="country_groupby"
+                        string="Country"
+                        context="{'group_by': 'country_id'}"
+                    />
+                </group>
+            </search>
+        </field>
+    </record>
+    <record id="intrastat_region_action" model="ir.actions.act_window">
+        <field name="name">Intrastat Regions</field>
+        <field name="res_model">intrastat.region</field>
+        <field name="view_mode">tree,form</field>
+    </record>
+    <menuitem
+        id="intrastat_region_menu"
+        action="intrastat_region_action"
+        parent="intrastat_base.menu_intrastat_config_root"
+        sequence="50"
+    />
+</odoo>
diff --git a/intrastat_product/views/intrastat_transaction.xml b/intrastat_product/views/intrastat_transaction.xml
new file mode 100644
index 000000000..6bea5d0e1
--- /dev/null
+++ b/intrastat_product/views/intrastat_transaction.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  Copyright 2010-2020 Akretion (http://www.akretion.com/)
+  Copyright 2015-2020 Noviat (http://www.noviat.com/)
+  @author Alexis de Lattre <alexis.delattre@akretion.com>
+  @author Luc De Meyer <luc.demeyer@noviat.com>
+  License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+-->
+<odoo>
+    <!-- Intrastat Transaction Type -->
+    <record id="intrastat_transaction_form" model="ir.ui.view">
+        <field name="name">intrastat.transaction_form</field>
+        <field name="model">intrastat.transaction</field>
+        <field name="arch" type="xml">
+            <form>
+                <sheet>
+                    <widget
+                        name="web_ribbon"
+                        title="Archived"
+                        bg_color="bg-danger"
+                        invisible="active"
+                    />
+                    <field name="active" invisible="1" />
+                    <group name="main">
+                        <field name="code" />
+                        <field name="description" />
+                        <field name="company_id" groups="base.group_multi_company" />
+                    </group>
+                </sheet>
+            </form>
+        </field>
+    </record>
+    <record id="intrastat_transaction_tree" model="ir.ui.view">
+        <field name="name">intrastat.transaction_tree</field>
+        <field name="model">intrastat.transaction</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field name="code" />
+                <field name="description" />
+                <field name="company_id" groups="base.group_multi_company" />
+            </tree>
+        </field>
+    </record>
+    <record id="intrastat_transaction_mode_search" model="ir.ui.view">
+        <field name="name">intrastat.transaction.mode.search</field>
+        <field name="model">intrastat.transaction</field>
+        <field name="arch" type="xml">
+            <search>
+                <field
+                    name="description"
+                    string="Code or Description"
+                    filter_domain="['|', ('code', 'ilike', self), ('description', 'ilike', self)]"
+                />
+                <filter
+                    string="Archived"
+                    name="inactive"
+                    domain="[('active', '=', False)]"
+                />
+                <group string="Group By" name="groupby">
+                    <filter
+                        name="company_groupby"
+                        string="Company"
+                        context="{'group_by': 'company_id'}"
+                    />
+                </group>
+            </search>
+        </field>
+    </record>
+    <record id="intrastat_transaction_action" model="ir.actions.act_window">
+        <field name="name">Transaction Types</field>
+        <field name="res_model">intrastat.transaction</field>
+        <field name="view_mode">tree,form</field>
+    </record>
+    <menuitem
+        id="intrastat_transaction_menu"
+        action="intrastat_transaction_action"
+        parent="intrastat_base.menu_intrastat_config_root"
+        sequence="20"
+    />
+</odoo>
diff --git a/intrastat_product/views/intrastat_transport_mode.xml b/intrastat_product/views/intrastat_transport_mode.xml
new file mode 100644
index 000000000..2083e10bb
--- /dev/null
+++ b/intrastat_product/views/intrastat_transport_mode.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  © 2010-2017 Akretion (http://www.akretion.com/)
+  © 2015-2017 Noviat (http://www.noviat.com/)
+  @author Alexis de Lattre <alexis.delattre@akretion.com>
+  @author Luc De Meyer <luc.demeyer@noviat.com>
+  License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+-->
+<odoo>
+    <!-- Intrastat Transport Mode -->
+    <record id="intrastat_transport_mode_form" model="ir.ui.view">
+        <field name="name">intrastat.transport.mode.form</field>
+        <field name="model">intrastat.transport_mode</field>
+        <field name="arch" type="xml">
+            <form>
+                <group>
+                    <field name="name" />
+                    <field name="code" />
+                    <field name="description" />
+                </group>
+            </form>
+        </field>
+    </record>
+    <record id="intrastat_transport_mode_tree" model="ir.ui.view">
+        <field name="name">intrastat.transport.mode.tree</field>
+        <field name="model">intrastat.transport_mode</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field name="code" />
+                <field name="name" />
+                <field name="description" optional="show" />
+            </tree>
+        </field>
+    </record>
+    <record id="intrastat_transport_mode_search" model="ir.ui.view">
+        <field name="name">intrastat.transport.mode.search</field>
+        <field name="model">intrastat.transport_mode</field>
+        <field name="arch" type="xml">
+            <search>
+                <field
+                    name="name"
+                    string="Name, Code or Description"
+                    filter_domain="['|', '|', ('name', 'ilike', self), ('description', 'ilike', self), ('code', 'ilike', self)]"
+                />
+            </search>
+        </field>
+    </record>
+    <record id="intrastat_transport_action" model="ir.actions.act_window">
+        <field name="name">Transport Modes</field>
+        <field name="res_model">intrastat.transport_mode</field>
+        <field name="view_mode">tree,form</field>
+    </record>
+    <menuitem
+        id="intrastat_transport_menu"
+        action="intrastat_transport_action"
+        parent="intrastat_base.menu_intrastat_config_root"
+        sequence="30"
+    />
+</odoo>
diff --git a/intrastat_product/views/intrastat_unit.xml b/intrastat_product/views/intrastat_unit.xml
new file mode 100644
index 000000000..cf46a7842
--- /dev/null
+++ b/intrastat_product/views/intrastat_unit.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  © 2010-2017 Akretion (http://www.akretion.com/)
+  © 2015-2017 Noviat (http://www.noviat.com/)
+  @author Alexis de Lattre <alexis.delattre@akretion.com>
+  @author Luc De Meyer <luc.demeyer@noviat.com>
+  License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+-->
+<odoo>
+    <!-- Intrastat Supplementary Unit -->
+    <record id="intrastat_unit_form" model="ir.ui.view">
+        <field name="name">intrastat.unit.form</field>
+        <field name="model">intrastat.unit</field>
+        <field name="arch" type="xml">
+            <form>
+                <field name="active" invisible="1" />
+                <widget
+                    name="web_ribbon"
+                    text="Archived"
+                    bg_color="bg-danger"
+                    invisible="active"
+                />
+                <group name="main">
+                    <field name="name" />
+                    <field name="uom_id" />
+                    <field name="description" />
+                </group>
+            </form>
+        </field>
+    </record>
+    <record id="intrastat_unit_tree" model="ir.ui.view">
+        <field name="name">intrastat.unit.tree</field>
+        <field name="model">intrastat.unit</field>
+        <field name="arch" type="xml">
+            <tree>
+                <field name="name" />
+                <field name="uom_id" />
+                <field name="description" optional="show" />
+            </tree>
+        </field>
+    </record>
+    <record id="intrastat_unit_search" model="ir.ui.view">
+        <field name="name">intrastat.unit.search</field>
+        <field name="model">intrastat.unit</field>
+        <field name="arch" type="xml">
+            <search>
+                <field
+                    name="name"
+                    filter_domain="['|', ('name', 'ilike', self), ('description', 'ilike', self)]"
+                />
+                <filter
+                    string="Archived"
+                    name="inactive"
+                    domain="[('active', '=', False)]"
+                />
+                <group string="Group By" name="groupby">
+                    <filter
+                        name="uom_groupby"
+                        string="Regular UoM"
+                        context="{'group_by': 'uom_id'}"
+                    />
+                </group>
+            </search>
+        </field>
+    </record>
+    <record id="intrastat_unit_action" model="ir.actions.act_window">
+        <field name="name">Supplementary Units</field>
+        <field name="res_model">intrastat.unit</field>
+        <field name="view_mode">tree,form</field>
+    </record>
+    <menuitem
+        id="intrastat_unit_menu"
+        action="intrastat_unit_action"
+        parent="intrastat_base.menu_intrastat_config_root"
+        sequence="40"
+    />
+</odoo>
diff --git a/intrastat_product/views/report_invoice.xml b/intrastat_product/views/report_invoice.xml
new file mode 100644
index 000000000..181a4ca74
--- /dev/null
+++ b/intrastat_product/views/report_invoice.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<odoo>
+    <template
+        id="report_invoice_document_intrastat_product"
+        inherit_id="account.report_invoice_document"
+    >
+        <xpath expr="//div[hasclass('page')]" position="inside">
+            <t t-if="o.partner_id.invoice_intrastat_detail">
+                <t
+                    t-set="intrastat_lines_info"
+                    t-value="o._get_intrastat_lines_info()"
+                />
+                <t t-if="intrastat_lines_info">
+                    <p style="page-break-before: always;" />
+                    <h5>Intrastat information</h5>
+                    <table name="intrastat_transaction_detail" class="table">
+                        <thead>
+                            <tr>
+                                <th>Reference</th>
+                                <th>Product</th>
+                                <th>HS Code</th>
+                                <th>Unit Weight</th>
+                                <th>Weight</th>
+                                <th>Origin country</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            <tr t-foreach="intrastat_lines_info" t-as="line">
+                                <td>
+                                    <span t-esc="line['product_id'].default_code" />
+                                </td>
+                                <td>
+                                    <span t-esc="line['product_id'].display_name" />
+                                </td>
+                                <td>
+                                    <span t-esc="line['hs_code_id'].local_code" />
+                                </td>
+                                <td>
+                                    <span t-esc="line['product_id'].weight" />
+                                </td>
+                                <td>
+                                    <span t-esc="round(line['weight'], 2)" />
+                                </td>
+                                <td>
+                                    <span t-esc="line['origin_country_id'].name" />
+                                </td>
+                            </tr>
+                        </tbody>
+                    </table>
+                </t>
+            </t>
+        </xpath>
+    </template>
+</odoo>
diff --git a/intrastat_product/views/res_config_settings.xml b/intrastat_product/views/res_config_settings.xml
new file mode 100644
index 000000000..369d15ae7
--- /dev/null
+++ b/intrastat_product/views/res_config_settings.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" ?>
+<!--
+  Copyright 2018-2020 brain-tec AG (Kumar Aberer <kumar.aberer@braintec-group.com>)
+  Copyright 2019-2020 Noviat (www.noviat.com)
+  License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+-->
+<odoo>
+    <record id="view_res_config_settings" model="ir.ui.view">
+        <field name="name">intrastat.account.config.settings.form</field>
+        <field name="model">res.config.settings</field>
+        <field
+            name="inherit_id"
+            ref="intrastat_base.view_intrastat_res_config_settings"
+        />
+        <field name="arch" type="xml">
+                <xpath expr="//setting[@id='intrastat']/div" position="inside">
+                            <div class="row mt16">
+                                <label
+                        for="intrastat_arrivals"
+                        class="col-lg-5 o_light_label"
+                    />
+                                <field name="intrastat_arrivals" />
+                                <field name="country_id" invisible="1" />
+                            </div>
+                            <div class="row mt16">
+                                <label
+                        for="intrastat_dispatches"
+                        class="col-lg-5 o_light_label"
+                    />
+                                <field name="intrastat_dispatches" />
+                            </div>
+                            <div class="row mt16">
+                                <label
+                        for="intrastat_transport_id"
+                        class="col-lg-5 o_light_label"
+                    />
+                                <field name="intrastat_transport_id" />
+                            </div>
+                            <div
+                    class="row mt16"
+                    invisible="country_code not in ['BE']"
+                >
+                                <label
+                        for="intrastat_region_id"
+                        class="col-lg-5 o_light_label"
+                    />
+                                <field
+                        name="intrastat_region_id"
+                        domain="[('country_id','=', country_id)]"
+                    />
+                        </div>
+                </xpath>
+                <xpath expr="//setting[@id='intrastat']" position="after">
+                    <setting
+                    id="intrastat-accessory_costs"
+                    string="Accessory Costs"
+                    invisible="country_code in ['BE']"
+                    help="Include Accessory Costs in Fiscal Value of Product"
+                >
+                        <field name="intrastat_accessory_costs" />
+                    </setting>
+            </xpath>
+        </field>
+    </record>
+</odoo>
diff --git a/intrastat_product/views/res_partner_view.xml b/intrastat_product/views/res_partner_view.xml
new file mode 100644
index 000000000..61d19a60a
--- /dev/null
+++ b/intrastat_product/views/res_partner_view.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" ?>
+<odoo>
+    <record id="view_partner_property_form" model="ir.ui.view">
+        <field name="name">res.partner.form</field>
+        <field name="model">res.partner</field>
+        <field name="inherit_id" ref="account.view_partner_property_form" />
+        <field name="arch" type="xml">
+            <field name="property_account_position_id" position="after">
+                <field name="invoice_intrastat_detail" />
+            </field>
+        </field>
+    </record>
+</odoo>
diff --git a/intrastat_product/views/sale_order.xml b/intrastat_product/views/sale_order.xml
new file mode 100644
index 000000000..f9470355f
--- /dev/null
+++ b/intrastat_product/views/sale_order.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" ?>
+<odoo>
+    <record id="sale_order_form" model="ir.ui.view">
+        <field name="name">intrastat.sale.order.form</field>
+        <field name="model">sale.order</field>
+        <field name="inherit_id" ref="sale_stock.view_order_form_inherit_sale_stock" />
+        <field name="arch" type="xml">
+            <field name="incoterm" position="after">
+                <field
+                    name="intrastat_transport_id"
+                    invisible="intrastat != 'extended'"
+                    widget="selection"
+                />
+                <field name="intrastat" invisible="1" />
+            </field>
+        </field>
+    </record>
+</odoo>
diff --git a/intrastat_product/views/stock_warehouse.xml b/intrastat_product/views/stock_warehouse.xml
new file mode 100644
index 000000000..7de062693
--- /dev/null
+++ b/intrastat_product/views/stock_warehouse.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" ?>
+<odoo>
+    <record id="view_warehouse" model="ir.ui.view">
+        <field name="name">intrastat.stock.warehouse.form</field>
+        <field name="model">stock.warehouse</field>
+        <field name="inherit_id" ref="stock.view_warehouse" />
+        <field name="arch" type="xml">
+            <field name="partner_id" position="after">
+                <field name="region_id" />
+            </field>
+        </field>
+    </record>
+</odoo>
diff --git a/intrastat_product/wizards/__init__.py b/intrastat_product/wizards/__init__.py
new file mode 100644
index 000000000..552479c72
--- /dev/null
+++ b/intrastat_product/wizards/__init__.py
@@ -0,0 +1,2 @@
+from . import res_config_settings
+from . import intrastat_result_view
diff --git a/intrastat_product/wizards/intrastat_result_view.py b/intrastat_product/wizards/intrastat_result_view.py
new file mode 100644
index 000000000..42bc3bb34
--- /dev/null
+++ b/intrastat_product/wizards/intrastat_result_view.py
@@ -0,0 +1,14 @@
+# Copyright 2010-2021 Akretion (<alexis.delattre@akretion.com>)
+# Copyright 2009-2021 Noviat (http://www.noviat.com)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo import fields, models
+
+
+class IntrastatResultView(models.TransientModel):
+    _name = "intrastat.result.view"
+    _description = "Pop-up to show errors on intrastat report generation"
+
+    note = fields.Html(
+        string="Notes", readonly=True, default=lambda self: self._context.get("note")
+    )
diff --git a/intrastat_product/wizards/intrastat_result_view.xml b/intrastat_product/wizards/intrastat_result_view.xml
new file mode 100644
index 000000000..7953f3e06
--- /dev/null
+++ b/intrastat_product/wizards/intrastat_result_view.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!--
+  Copyright 2011-2021 Akretion France (http://www.akretion.com/)
+  Copyright 2015-2021 Noviat (http://www.noviat.com/)
+  License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+-->
+<odoo>
+    <record id="intrastat_result_view_form" model="ir.ui.view">
+        <field name="name">intrastat.result_view_form</field>
+        <field name="model">intrastat.result.view</field>
+        <field name="arch" type="xml">
+            <form string="Intrastat Result View">
+                <group name="main">
+                    <field name="note" nolabel="1" colspan="2" />
+                </group>
+                <footer>
+                    <button string="Ok" class="btn-primary" special="cancel" />
+                </footer>
+            </form>
+        </field>
+    </record>
+</odoo>
diff --git a/intrastat_product/wizards/res_config_settings.py b/intrastat_product/wizards/res_config_settings.py
new file mode 100644
index 000000000..f48d6a7aa
--- /dev/null
+++ b/intrastat_product/wizards/res_config_settings.py
@@ -0,0 +1,28 @@
+# Copyright 2017-2020 Akretion (Alexis de Lattre <alexis.delattre@akretion.com>)
+# Copyright 2009-2020 Noviat (http://www.noviat.com)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo import fields, models
+
+
+class ResConfigSettings(models.TransientModel):
+    _inherit = "res.config.settings"
+
+    intrastat_arrivals = fields.Selection(
+        related="company_id.intrastat_arrivals", readonly=False
+    )
+    intrastat_dispatches = fields.Selection(
+        related="company_id.intrastat_dispatches", readonly=False
+    )
+    intrastat = fields.Char(related="company_id.intrastat")
+    intrastat_transport_id = fields.Many2one(
+        related="company_id.intrastat_transport_id", readonly=False
+    )
+    intrastat_region_id = fields.Many2one(
+        related="company_id.intrastat_region_id", readonly=False
+    )
+    intrastat_accessory_costs = fields.Boolean(
+        related="company_id.intrastat_accessory_costs", readonly=False
+    )
+    country_id = fields.Many2one(related="company_id.country_id")
+    # country_code is defined in the 'account' module
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 000000000..37b785ea4
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,2 @@
+# generated from manifests external_dependencies
+python-stdnum>=1.16


Test patch:
diff --git a/intrastat_product/tests/__init__.py b/intrastat_product/tests/__init__.py
new file mode 100644
index 000000000..a7ccefcbc
--- /dev/null
+++ b/intrastat_product/tests/__init__.py
@@ -0,0 +1,8 @@
+from . import common
+from . import common_purchase
+from . import common_sale
+from . import test_intrastat_product
+from . import test_brexit
+from . import test_company
+from . import test_purchase_order
+from . import test_sale_order
diff --git a/intrastat_product/tests/common.py b/intrastat_product/tests/common.py
new file mode 100644
index 000000000..05b7a25ad
--- /dev/null
+++ b/intrastat_product/tests/common.py
@@ -0,0 +1,214 @@
+# Copyright 2021 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+import xlrd
+from werkzeug.urls import url_encode
+
+from odoo.addons.intrastat_base.tests.common import IntrastatCommon
+
+
+class IntrastatProductCommon(IntrastatCommon):
+    @classmethod
+    def _init_products(cls):
+        # Create category - don't init intrastat values, do it in tests
+        vals = {
+            "name": "Robots",
+            "parent_id": cls.category_saleable.id,
+        }
+        cls.categ_robots = cls.category_obj.create(vals)
+
+        vals = {
+            "name": "C3PO",
+            "type": "consu",
+            "categ_id": cls.categ_robots.id,
+            "origin_country_id": cls.env.ref("base.us").id,
+            "weight": 300,
+            # Computer - C3PO is one of them
+            "hs_code_id": cls.hs_code_computer.id,
+            "list_price": 42,
+        }
+        cls.product_c3po = cls.product_template_obj.create(vals)
+
+    @classmethod
+    def _init_company(cls):
+        # Default transport for company is Road
+        cls.demo_company.intrastat_transport_id = cls.transport_road
+
+    @classmethod
+    def _init_fiscal_position(cls):
+        vals = {
+            "name": "Intrastat Fiscal Position",
+            "intrastat": "b2b",
+            "vat_required": True,
+        }
+        cls.position = cls.position_obj.create(vals)
+        vals_b2c = {
+            "name": "Intrastat Fiscal Position B2C",
+            "intrastat": "b2c",
+        }
+        cls.position_b2c = cls.position_obj.create(vals_b2c)
+
+    @classmethod
+    def _init_regions(cls):
+        # Create Region
+        cls._create_region()
+
+        vals = {
+            "code": "DE",
+            "name": "Germany",
+            "country_id": cls.env.ref("base.de").id,
+            "description": "Germany",
+        }
+        cls._create_region(vals)
+
+    @classmethod
+    def _init_transaction(cls):
+        vals = {
+            "code": "9X",
+            "company_id": cls.env.company.id,
+            "description": "Test 9X",
+        }
+        cls._create_transaction(vals)
+
+    @classmethod
+    def setUpClass(cls):
+        super().setUpClass()
+        cls.region_obj = cls.env["intrastat.region"]
+        cls.transaction_obj = cls.env["intrastat.transaction"]
+        cls.transport_mode_obj = cls.env["intrastat.transport_mode"]
+        cls.partner_obj = cls.env["res.partner"]
+        cls.category_saleable = cls.env.ref("product.product_category_1")
+        cls.category_obj = cls.env["product.category"]
+        cls.product_template_obj = cls.env["product.template"]
+        cls.declaration_obj = cls.env["intrastat.product.declaration"]
+        cls.position_obj = cls.env["account.fiscal.position"]
+        cls.hs_code_computer = cls.env.ref("product_harmonized_system.84715000")
+        cls.report_obj = cls.env["ir.actions.report"]
+        cls.xls_declaration = cls.env[
+            "report.intrastat_product.product_declaration_xls"
+        ]
+
+        cls.transport_rail = cls.env.ref("intrastat_product.intrastat_transport_2")
+        cls.transport_road = cls.env.ref("intrastat_product.intrastat_transport_3")
+
+        cls._init_regions()
+        cls._init_company()
+        cls._init_fiscal_position()
+        cls._init_products()
+        cls._init_transaction()
+
+    @classmethod
+    def _create_xls(cls, declaration=False):
+        """
+            Prepare the Excel report to be tested
+
+        :return: The Excel file
+        :rtype: bytes
+        """
+        report = cls.env.ref(
+            "intrastat_product.intrastat_product_xlsx_report"
+        ).with_context(active_ids=cls.declaration.ids)
+        report_name = report.report_name
+        cls.report = cls.report_obj._get_report_from_name(report_name)
+        datas = {
+            "context": {
+                "active_ids": [cls.declaration.id],
+            }
+        }
+        data = {}
+        encoded_data = "report/report_xlsx/" + report_name + "?" + url_encode(data)
+        datas["data"] = encoded_data
+        active_model = cls.declaration._name
+        if not declaration:
+            computation_lines = True
+        else:
+            computation_lines = False
+        file_data = cls.xls_declaration.with_context(
+            computation_lines=computation_lines, active_model=active_model
+        ).create_xlsx_report(None, datas)
+        return file_data
+
+    def check_xls(self, xls):
+        """
+            Check that the xls content correspond to computation/declaration
+            lines values
+
+        :param xls: the Excel file content
+        :type xls: bytes
+        :param declaration: By default, check computation lines, either declaration ones
+        :type declaration: bool, optional
+        """
+        book = xlrd.open_workbook(file_contents=xls)
+        # Get the template used to build the Excel file lines
+        template = self.xls_declaration._get_template(self.declaration)
+        # Get the declaration lines or the computation ones
+        to_test = [
+            (
+                book.sheet_by_index(0),
+                self.declaration.computation_line_ids,
+                self.declaration._xls_computation_line_fields(),
+            ),
+            (
+                book.sheet_by_index(1),
+                self.declaration.declaration_line_ids,
+                self.declaration._xls_declaration_line_fields(),
+            ),
+        ]
+        # Iterate on each row beginning on third one (two headers)
+        for sheet, lines, line_fields in to_test:
+            i = 0
+            for rx in range(3, sheet.nrows):
+                line = lines[i]
+                row = sheet.row(rx)
+                j = 0
+                dict_compare = dict()
+                for line_field in line_fields:
+                    column_spec = template.get(line_field)
+                    dict_compare.update(
+                        {row[j].value: column_spec.get("line").get("value")}
+                    )
+                    j += 1
+                for key, value in dict_compare.items():
+                    value_eval = self.xls_declaration._eval(value, {"line": line})
+                    self.assertEqual(key, value_eval)
+                i += 1
+
+    @classmethod
+    def _create_region(cls, vals=None):
+        values = {
+            "code": "2",
+            "country_id": cls.env.ref("base.be").id,
+            "company_id": cls.env.company.id,
+            "description": "Belgium Walloon Region",
+            "name": "Walloon Region",
+        }
+        if vals is not None:
+            values.update(vals)
+        cls.region = cls.region_obj.create(values)
+
+    @classmethod
+    def _create_transaction(cls, vals=None):
+        values = {
+            "code": "11",
+            "company_id": cls.env.company.id,
+            "description": "Sale / Purchase",
+        }
+        if vals is not None:
+            values.update(vals)
+        cls.transaction = cls.transaction_obj.create(values)
+
+    @classmethod
+    def _create_transport_mode(cls, vals=None):
+        values = {}
+        if vals is not None:
+            values.update(vals)
+        cls.transport_mode = cls.transport_mode_obj.create(values)
+
+    @classmethod
+    def _create_declaration(cls, vals=None):
+        values = {
+            "company_id": cls.env.company.id,
+            "declaration_type": "dispatches",
+        }
+        if vals is not None:
+            values.update(vals)
+        cls.declaration = cls.declaration_obj.create(values)
diff --git a/intrastat_product/tests/common_purchase.py b/intrastat_product/tests/common_purchase.py
new file mode 100644
index 000000000..cc2d0a3b6
--- /dev/null
+++ b/intrastat_product/tests/common_purchase.py
@@ -0,0 +1,81 @@
+# Copyright 2021 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from odoo.tests import Form
+
+from .common import IntrastatProductCommon
+
+
+class IntrastatPurchaseCommon(IntrastatProductCommon):
+    """
+    We define common flow:
+        - Supplier in Germany
+    """
+
+    def _get_expected_vals(self, line):
+        return {
+            "declaration_type": "arrivals",
+            "suppl_unit_qty": line.qty_received,
+            "hs_code_id": line.product_id.hs_code_id,
+            "product_origin_country_code": line.product_id.origin_country_id.code,
+            "amount_company_currency": line.price_subtotal,
+            "src_dest_country_code": line.partner_id.country_id.code,
+        }
+
+    def _check_line_values(self, final=False, declaration=None, purchase=None):
+        """
+        This method allows to test computation lines and declaration
+        lines values from original sale order line
+        """
+        if declaration is None:
+            declaration = self.declaration
+        if purchase is None:
+            purchase = self.purchase
+        for line in purchase.order_line:
+            expected_vals = self._get_expected_vals(line)
+            comp_line = declaration.computation_line_ids.filtered(
+                lambda x, line=line: x.product_id == line.product_id
+            )
+            self.assertTrue(
+                all(comp_line[key] == val for key, val in expected_vals.items())
+            )
+            if final:
+                decl_line = declaration.declaration_line_ids.filtered(
+                    lambda x, comp_line=comp_line: comp_line in x.computation_line_ids
+                )
+                self.assertTrue(
+                    all(decl_line[key] == val for key, val in expected_vals.items())
+                )
+
+    @classmethod
+    def _init_supplier(cls, vals=None):
+        values = {
+            "name": "DE Supplier",
+            "country_id": cls.env.ref("base.de").id,
+            "property_account_position_id": cls.position.id,
+        }
+        if vals is not None:
+            values.update(vals)
+        cls.supplier = cls.partner_obj.create(values)
+
+    @classmethod
+    def setUpClass(cls):
+        super().setUpClass()
+        cls.purchase_obj = cls.env["purchase.order"]
+        cls.move_obj = cls.env["account.move"]
+        cls._init_supplier()
+
+    @classmethod
+    def _create_purchase_order(cls, vals=None):
+        vals = {
+            "partner_id": cls.supplier.id,
+        }
+        purchase_new = cls.purchase_obj.new(vals)
+        purchase_new.onchange_partner_id()
+        purchase_vals = purchase_new._convert_to_write(purchase_new._cache)
+        cls.purchase = cls.purchase_obj.create(purchase_vals)
+        with Form(cls.purchase) as purchase_form:
+            with purchase_form.order_line.new() as line:
+                line.product_id = cls.product_c3po.product_variant_ids[0]
+                line.product_qty = 3.0
+                # Price should not be void - if no purchase pricelist
+                line.price_unit = 150.0
diff --git a/intrastat_product/tests/common_sale.py b/intrastat_product/tests/common_sale.py
new file mode 100644
index 000000000..9282ebe92
--- /dev/null
+++ b/intrastat_product/tests/common_sale.py
@@ -0,0 +1,79 @@
+# Copyright 2021 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from odoo.tests import Form
+
+from .common import IntrastatProductCommon
+
+
+class IntrastatSaleCommon(IntrastatProductCommon):
+    """
+    We define common flow:
+        - Customer in Netherlands
+    """
+
+    def _get_expected_vals(self, line):
+        return {
+            "declaration_type": "dispatches",
+            "suppl_unit_qty": line.qty_delivered,
+            "hs_code_id": line.product_id.hs_code_id,
+            "product_origin_country_code": line.product_id.origin_country_id.code,
+        }
+
+    def _check_line_values(self, final=False, declaration=None, sale=None):
+        """
+        This method allows to test computation lines and declaration
+        lines values from original sale order line
+        """
+        if declaration is None:
+            declaration = self.declaration
+        if sale is None:
+            sale = self.sale
+        for line in sale.order_line:
+            expected_vals = self._get_expected_vals(line)
+            comp_line = declaration.computation_line_ids.filtered(
+                lambda x, line=line: x.product_id == line.product_id
+            )
+            self.assertTrue(
+                all(comp_line[key] == val for key, val in expected_vals.items())
+            )
+            if final:
+                decl_line = declaration.declaration_line_ids.filtered(
+                    lambda x, comp_line=comp_line: comp_line in x.computation_line_ids
+                )
+                self.assertTrue(
+                    all(decl_line[key] == val for key, val in expected_vals.items())
+                )
+
+    @classmethod
+    def _init_customer(cls, vals=None):
+        values = {
+            "name": "Akretion France",
+            "country_id": cls.env.ref("base.fr").id,
+            "property_account_position_id": cls.position.id,
+            "vat": "FR86792377731",
+        }
+        if vals is not None:
+            values.update(vals)
+        cls.customer = cls.partner_obj.create(values)
+        values.pop("vat")
+        values["property_account_position_id"] = cls.position_b2c.id
+        cls.customer_no_vat = cls.partner_obj.create(values)
+
+    @classmethod
+    def setUpClass(cls):
+        super().setUpClass()
+        cls.sale_obj = cls.env["sale.order"]
+        cls._init_customer()
+
+    @classmethod
+    def _create_sale_order(cls, partner, vals=None):
+        vals = {
+            "partner_id": partner.id,
+        }
+        sale_new = cls.sale_obj.new(vals)
+        sale_vals = sale_new._convert_to_write(sale_new._cache)
+        cls.sale = cls.sale_obj.create(sale_vals)
+        with Form(cls.sale) as sale_form:
+            with sale_form.order_line.new() as line:
+                line.product_id = cls.product_c3po.product_variant_ids[0]
+                line.product_uom_qty = 3.0
diff --git a/intrastat_product/tests/test_brexit.py b/intrastat_product/tests/test_brexit.py
new file mode 100644
index 000000000..764b6cb50
--- /dev/null
+++ b/intrastat_product/tests/test_brexit.py
@@ -0,0 +1,110 @@
+# Copyright 2022 Noviat.
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from odoo.tests import Form, TransactionCase
+
+from .common import IntrastatProductCommon
+
+
+class TestIntrastatBrexit(IntrastatProductCommon, TransactionCase):
+    @classmethod
+    def setUpClass(cls):
+        super().setUpClass()
+        cls.inv_obj = cls.env["account.move"]
+        cls.hs_code_whiskey = cls.env["hs.code"].create(
+            {
+                "description": "Whiskey",
+                "local_code": "22083000",
+            }
+        )
+        cls.product_uk = cls.env["product.product"].create(
+            {
+                "name": "Bushmills Original",
+                "weight": 1.4,
+                "list_price": 30.0,
+                "standard_price": 15.0,
+                "origin_country_id": cls.env.ref("base.uk").id,
+                "hs_code_id": cls.hs_code_whiskey.id,
+            }
+        )
+        cls.partner_xi = cls.env["res.partner"].create(
+            {
+                "name": "Bushmills Distillery",
+                "country_id": cls.env.ref("base.uk").id,
+                "state_id": cls.env.ref("base.state_uk18").id,
+                "vat": "XI123456782",
+                "property_account_position_id": cls.position.id,
+            }
+        )
+
+    def test_brexit_sale(self):
+        inv_out_xi = self.inv_obj.with_context(default_move_type="out_invoice").create(
+            {
+                "partner_id": self.partner_xi.id,
+                "fiscal_position_id": self.position.id,
+            }
+        )
+        with Form(inv_out_xi) as inv_form:
+            with inv_form.invoice_line_ids.new() as ail:
+                ail.product_id = self.product_c3po.product_variant_ids[0]
+        inv_out_xi.action_post()
+
+        self._create_declaration(
+            {
+                "declaration_type": "dispatches",
+                "year": str(inv_out_xi.date.year),
+                "month": str(inv_out_xi.date.month).zfill(2),
+            }
+        )
+        self.declaration.action_gather()
+        self.declaration.draft2confirmed()
+        self.declaration.confirmed2done()
+        cline = self.declaration.computation_line_ids
+        dline = self.declaration.declaration_line_ids
+        self.assertEqual(cline.src_dest_country_code, "XI")
+        self.assertEqual(dline.src_dest_country_code, "XI")
+
+    def test_brexit_purchase(self):
+        inv_in_xi = self.inv_obj.with_context(default_move_type="in_invoice").create(
+            {
+                "partner_id": self.partner_xi.id,
+                "fiscal_position_id": self.position.id,
+            }
+        )
+        with Form(inv_in_xi) as inv_form:
+            with inv_form.invoice_line_ids.new() as ail:
+                ail.product_id = self.product_uk
+        inv_in_xi.invoice_date = inv_in_xi.date
+        inv_in_xi.action_post()
+
+        self._create_declaration(
+            {
+                "declaration_type": "arrivals",
+                "year": str(inv_in_xi.date.year),
+                "month": str(inv_in_xi.date.month).zfill(2),
+            }
+        )
+        self.declaration.action_gather()
+        self.declaration.draft2confirmed()
+        self.declaration.confirmed2done()
+        clines = self.declaration.computation_line_ids
+        cl_uk = clines.filtered(lambda r: r.product_id == self.product_uk)
+        dlines = self.declaration.declaration_line_ids
+        dl_uk = dlines.filtered(lambda r: r.computation_line_ids == cl_uk)
+        self.assertEqual(cl_uk.product_origin_country_code, "XU")
+        self.assertEqual(dl_uk.product_origin_country_code, "XU")
+
+    def test_brexit_invoice_intrastat_details(self):
+        inv_in_xi = self.inv_obj.with_context(default_move_type="in_invoice").create(
+            {
+                "partner_id": self.partner_xi.id,
+                "fiscal_position_id": self.position.id,
+            }
+        )
+        with Form(inv_in_xi) as inv_form:
+            with inv_form.invoice_line_ids.new() as ail:
+                ail.product_id = self.product_uk
+        inv_in_xi.invoice_date = inv_in_xi.date
+        inv_in_xi.compute_intrastat_lines()
+        ilines = inv_in_xi.intrastat_line_ids
+        self.assertEqual(ilines.product_origin_country_id, self.env.ref("base.uk"))
diff --git a/intrastat_product/tests/test_company.py b/intrastat_product/tests/test_company.py
new file mode 100644
index 000000000..0b7a4ef7d
--- /dev/null
+++ b/intrastat_product/tests/test_company.py
@@ -0,0 +1,40 @@
+# Copyright 2021 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from odoo.tests.common import TransactionCase
+
+from .common import IntrastatProductCommon
+
+
+class TestIntrastatCompany(IntrastatProductCommon):
+    """Tests for this module"""
+
+    def test_company_values(self):
+        # Exempt for arrivals and dispatches => exempt
+        self.demo_company.update(
+            {
+                "intrastat_arrivals": "exempt",
+                "intrastat_dispatches": "exempt",
+            }
+        )
+        self.assertEqual("exempt", self.demo_company.intrastat)
+
+        # Extended for arrivals or dispatches => extended
+        self.demo_company.update(
+            {
+                "intrastat_arrivals": "extended",
+            }
+        )
+        self.assertEqual("extended", self.demo_company.intrastat)
+
+        # standard for arrivals or dispatches => standard
+        self.demo_company.update(
+            {
+                "intrastat_arrivals": "exempt",
+                "intrastat_dispatches": "standard",
+            }
+        )
+        self.assertEqual("standard", self.demo_company.intrastat)
+
+
+class TestIntrastatProductCase(TestIntrastatCompany, TransactionCase):
+    """Test Intrastat Product"""
diff --git a/intrastat_product/tests/test_intrastat_product.py b/intrastat_product/tests/test_intrastat_product.py
new file mode 100644
index 000000000..0d47cccbe
--- /dev/null
+++ b/intrastat_product/tests/test_intrastat_product.py
@@ -0,0 +1,153 @@
+# Copyright 2021 ACSONE SA/NV
+# Copyright 2022 Tecnativa - Víctor Martínez
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from psycopg2 import IntegrityError
+
+from odoo.exceptions import UserError, ValidationError
+from odoo.tests import Form
+from odoo.tests.common import TransactionCase
+from odoo.tools import mute_logger
+
+from .common import IntrastatProductCommon
+
+
+class TestIntrastatProduct(IntrastatProductCommon):
+    """Tests for this module"""
+
+    @classmethod
+    def setUpClass(cls):
+        super().setUpClass()
+        cls.product = cls.env["product.product"].create(
+            {
+                "name": "Test product",
+                "hs_code_id": cls.env.ref("product_harmonized_system.84715000").id,
+                "origin_country_id": cls.env.ref("base.de").id,
+                "weight": 1.25,
+            }
+        )
+        cls.partner = cls.partner_obj.create(
+            {
+                "name": "Test partner",
+                "country_id": cls.env.ref("base.fr").id,
+                "invoice_intrastat_detail": True,
+            }
+        )
+        cls.env["account.journal"].create(
+            {"name": "Test sale journal", "type": "sale", "code": "TEST-sale"}
+        )
+        cls.report_obj = cls.env["ir.actions.report"]
+        cls.sale_order = cls._create_sale_order(cls)
+        cls.sale_order.action_confirm()
+        cls.sale_order.order_line.qty_delivered = 1
+        cls.invoice = cls.sale_order._create_invoices()
+
+    # Test duplicates
+    @mute_logger("odoo.sql_db")
+    def test_region(self):
+        with self.assertRaises(IntegrityError):
+            self._create_region()
+
+    @mute_logger("odoo.sql_db")
+    def test_transaction(self):
+        self._create_transaction()
+        with self.assertRaises(IntegrityError):
+            self._create_transaction()
+
+    @mute_logger("odoo.sql_db")
+    def test_transport_mode(self):
+        vals = {"code": 1, "name": "Sea"}
+        with self.assertRaises(IntegrityError):
+            self._create_transport_mode(vals)
+
+    def test_copy(self):
+        """
+        When copying declaration, the new one has an incremented revision
+        value.
+        """
+        vals = {"declaration_type": "dispatches"}
+        self._create_declaration(vals)
+        decl_copy = self.declaration.copy()
+        self.assertEqual(self.declaration.revision + 1, decl_copy.revision)
+
+    def test_declaration_manual_lines(self):
+        vals = {"declaration_type": "dispatches", "reporting_level": "extended"}
+        self._create_declaration(vals)
+        computation_line_form = Form(
+            self.env["intrastat.product.computation.line"].with_context(
+                default_parent_id=self.declaration.id
+            )
+        )
+        computation_line_form.src_dest_country_id = self.env.ref("base.fr")
+        computation_line_form.transaction_id = self.transaction
+        computation_line_form.hs_code_id = self.hs_code_computer
+        computation_line_form.region_code = "ZZ"
+        computation_line_form.product_origin_country_code = "BE"
+        computation_line_form.transport_id = self.env.ref(
+            "intrastat_product.intrastat_transport_3"
+        )
+        computation_line = computation_line_form.save()
+        self.assertEqual(computation_line.src_dest_country_code, "FR")
+        declaration_line_form = Form(
+            self.env["intrastat.product.declaration.line"].with_context(
+                default_parent_id=self.declaration.id
+            )
+        )
+        declaration_line_form.src_dest_country_code = "FR"
+        declaration_line = declaration_line_form.save()
+        self.assertEqual(declaration_line.src_dest_country_code, "FR")
+
+    def test_declaration_no_country(self):
+        self.demo_company.country_id = False
+        with self.assertRaises(ValidationError):
+            self._create_declaration()
+            self.declaration.flush()
+
+    def test_declaration_no_vat(self):
+        self.demo_company.partner_id.vat = False
+        with self.assertRaises(UserError):
+            self._create_declaration()
+            self.declaration._check_generate_xml()
+
+    def test_declaration_state(self):
+        self._create_declaration()
+        self.declaration.unlink()
+
+        self._create_declaration()
+        self.declaration.state = "done"
+        with self.assertRaises(UserError):
+            self.declaration.unlink()
+
+    def _create_sale_order(self):
+        order_form = Form(self.env["sale.order"])
+        order_form.partner_id = self.partner
+        with order_form.order_line.new() as line_form:
+            line_form.product_id = self.product
+        with order_form.order_line.new() as line_form:
+            line_form.product_id = self.product
+        return order_form.save()
+
+    def _test_invoice_report(self, weight):
+        """We need to check weight because if intrastat_line_ids already exist
+        the weight will be different because weight field in model is integer."""
+        res = self.report_obj._render(
+            "account.report_invoice_with_payments", self.invoice.ids
+        )
+        self.assertRegex(str(res[0]), self.product.hs_code_id.hs_code)
+        self.assertRegex(str(res[0]), self.product.origin_country_id.name)
+        res = list(self.invoice._get_intrastat_lines_info())
+        self.assertEqual(len(res), 1)
+        self.assertEqual(res[0]["product_id"], self.product)
+        self.assertEqual(res[0]["hs_code_id"], self.product.hs_code_id)
+        self.assertEqual(res[0]["origin_country_id"], self.product.origin_country_id)
+        self.assertEqual(res[0]["weight"], weight)
+
+    def test_invoice_report_without_intrastat_lines(self):
+        self._test_invoice_report(2.5)
+
+    def test_invoice_report_with_intrastat_lines(self):
+        self.invoice.compute_intrastat_lines()
+        self._test_invoice_report(2)
+
+
+class TestIntrastatProductCase(TestIntrastatProduct, TransactionCase):
+    """Test Intrastat Product"""
diff --git a/intrastat_product/tests/test_purchase_order.py b/intrastat_product/tests/test_purchase_order.py
new file mode 100644
index 000000000..f0356a47a
--- /dev/null
+++ b/intrastat_product/tests/test_purchase_order.py
@@ -0,0 +1,55 @@
+# Copyright 2021 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from freezegun import freeze_time
+
+from odoo import fields
+from odoo.tests.common import TransactionCase
+
+from .common_purchase import IntrastatPurchaseCommon
+
+
+class TestIntrastatProductPurchase(IntrastatPurchaseCommon):
+    """Tests for this module"""
+
+    def test_purchase_to_invoice_default(self):
+        date_order = "2021-09-01"
+        declaration_date = "2021-10-01"
+        with freeze_time(date_order):
+            self._create_purchase_order()
+        self.purchase.button_confirm()
+        self.purchase.picking_ids.button_validate()
+        self.assertEqual("done", self.purchase.picking_ids.state)
+
+        with freeze_time(date_order):
+            action = self.purchase.action_create_invoice()
+        invoice_id = action["res_id"]
+        invoice = self.move_obj.browse(invoice_id)
+
+        invoice.invoice_date = fields.Date.from_string(date_order)
+        invoice.action_post()
+
+        # Check if transport mode has been transmitted to invoice
+        # It should be None as not defined on sale order
+        self.assertFalse(
+            invoice.intrastat_transport_id,
+        )
+
+        vals = {
+            "declaration_type": "arrivals",
+        }
+        with freeze_time(declaration_date):
+            self._create_declaration(vals)
+        self.declaration.action_gather()
+
+        self._check_line_values()
+        self.declaration.draft2confirmed()
+        self.declaration.confirmed2done()
+        self._check_line_values(final=True)
+
+        # Check the Excel file
+        file_data = self._create_xls()
+        self.check_xls(file_data[0])
+
+
+class TestIntrastatProductPurchaseCase(TestIntrastatProductPurchase, TransactionCase):
+    """Test Intrastat Purchase"""
diff --git a/intrastat_product/tests/test_sale_order.py b/intrastat_product/tests/test_sale_order.py
new file mode 100644
index 000000000..205be214a
--- /dev/null
+++ b/intrastat_product/tests/test_sale_order.py
@@ -0,0 +1,112 @@
+# Copyright 2021 ACSONE SA/NV
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from freezegun import freeze_time
+
+from odoo.tests.common import TransactionCase
+
+from .common_sale import IntrastatSaleCommon
+
+
+class TestIntrastatProductSale(IntrastatSaleCommon):
+    """Tests for this module"""
+
+    def test_sale_to_invoice_default(self):
+        self._create_sale_order(self.customer)
+        self.sale.action_confirm()
+        self.sale.picking_ids.button_validate()
+        self.assertEqual("done", self.sale.picking_ids.state)
+
+        invoice = self.sale._create_invoices()
+        invoice.action_post()
+
+        # Check if transport mode has been transmitted to invoice
+        # It should be None as not defined on sale order
+        self.assertFalse(
+            invoice.intrastat_transport_id,
+        )
+
+    # Test specific transport set on sale to invoice
+    def test_sale_to_invoice(self):
+        self._create_sale_order(self.customer)
+        # Set intrastat transport mode to rail
+        self.sale.intrastat_transport_id = self.transport_rail
+        self.sale.action_confirm()
+        self.sale.picking_ids.button_validate()
+        self.assertEqual("done", self.sale.picking_ids.state)
+
+        invoice = self.sale._create_invoices()
+        invoice.action_post()
+
+        # Check if transport mode has been transmitted to invoice
+        self.assertEqual(
+            self.transport_rail,
+            invoice.intrastat_transport_id,
+        )
+
+    def test_sale_declaration(self):
+        date_order = "2021-09-01"
+        declaration_date = "2021-10-01"
+        with freeze_time(date_order):
+            self._create_sale_order(self.customer)
+        # Set intrastat transport mode to rail
+        self.sale.intrastat_transport_id = self.transport_rail
+        self.sale.action_confirm()
+        self.sale.picking_ids.button_validate()
+        self.assertEqual("done", self.sale.picking_ids.state)
+
+        with freeze_time(date_order):
+            invoice = self.sale._create_invoices()
+            invoice.action_post()
+
+        # Check if transport mode has been transmitted to invoice
+        self.assertEqual(
+            self.transport_rail,
+            invoice.intrastat_transport_id,
+        )
+        vals = {
+            "declaration_type": "dispatches",
+        }
+        with freeze_time(declaration_date):
+            self._create_declaration(vals)
+        self.declaration.action_gather()
+
+        self._check_line_values()
+        self.declaration.draft2confirmed()
+        self.declaration.confirmed2done()
+        self._check_line_values(final=True)
+
+        # Check the Excel file
+        file_data = self._create_xls()
+        self.check_xls(file_data[0])
+
+    def test_sale_declaration_b2c_no_vat(self):
+        date_order = "2021-09-01"
+        declaration_date = "2021-10-01"
+        with freeze_time(date_order):
+            self._create_sale_order(self.customer_no_vat)
+        # Set intrastat transport mode to rail
+        self.sale.intrastat_transport_id = self.transport_rail
+        self.sale.action_confirm()
+        self.sale.picking_ids.button_validate()
+        self.assertEqual("done", self.sale.picking_ids.state)
+
+        with freeze_time(date_order):
+            invoice = self.sale._create_invoices()
+            invoice.action_post()
+
+        # Check if transport mode has been transmitted to invoice
+        self.assertEqual(
+            self.transport_rail,
+            invoice.intrastat_transport_id,
+        )
+        vals = {
+            "declaration_type": "dispatches",
+        }
+        with freeze_time(declaration_date):
+            self._create_declaration(vals)
+        self.declaration.action_gather()
+        self.assertFalse(self.declaration.note)
+
+
+class TestIntrastatProductSaleCase(TestIntrastatProductSale, TransactionCase):
+    """Test Intrastat Sale"""