diff --git a/.isort.cfg b/.isort.cfg index 0b12f63..ce6837f 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -9,4 +9,4 @@ line_length=88 known_odoo=odoo known_odoo_addons=odoo.addons sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER -known_third_party=lxml,setuptools +known_third_party=dateutil,lxml,setuptools diff --git a/.pylintrc-mandatory b/.pylintrc-mandatory index 7635cbb..26fe6ae 100644 --- a/.pylintrc-mandatory +++ b/.pylintrc-mandatory @@ -39,7 +39,6 @@ enable=anomalous-backslash-in-string, method-required-super, method-search, missing-import-error, - missing-manifest-dependency, openerp-exception-warning, pointless-statement, pointless-string-statement, diff --git a/intrastat_base/demo/intrastat_demo.xml b/intrastat_base/demo/intrastat_demo.xml index d5354c1..f8adbb7 100644 --- a/intrastat_base/demo/intrastat_demo.xml +++ b/intrastat_base/demo/intrastat_demo.xml @@ -17,7 +17,7 @@ Shipping costs - SHIP + SHIP_S service 30 diff --git a/intrastat_product/README.rst b/intrastat_product/README.rst new file mode 100644 index 0000000..92ef742 --- /dev/null +++ b/intrastat_product/README.rst @@ -0,0 +1,128 @@ +================= +Intrastat Product +================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/12.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-12-0/intrastat-extrastat-12-0-intrastat_product + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/227/12.0 + :alt: Try me on Runbot + +|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. + +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-block:: 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. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* brain-tec AG +* Akretion +* Noviat + +Contributors +~~~~~~~~~~~~ + +* Alexis de Lattre, Akretion +* Luc De Meyer, Noviat + +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 `_ 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 0000000..bf588bc --- /dev/null +++ b/intrastat_product/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import report diff --git a/intrastat_product/__manifest__.py b/intrastat_product/__manifest__.py new file mode 100644 index 0000000..8b79805 --- /dev/null +++ b/intrastat_product/__manifest__.py @@ -0,0 +1,41 @@ +# Copyright 2011-2017 Akretion (http://www.akretion.com) +# Copyright 2009-2020 Noviat (http://www.noviat.com) +# Copyright 2018 brain-tec AG (http://www.braintec-group.com) +# @author Alexis de Lattre +# @author Luc de Meyer +# @author Kumar Aberer + +{ + "name": "Intrastat Product", + "version": "13.0.1.0.0", + "category": "Intrastat", + "license": "AGPL-3", + "summary": "Base module for Intrastat Product", + "author": "brain-tec AG, Akretion, Noviat, " "Odoo Community Association (OCA)", + "depends": [ + "intrastat_base", + "product_harmonized_system", + "sale_stock", + "purchase_stock", + "report_xlsx_helper", + ], + "excludes": ["account_intrastat"], + "data": [ + "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/account_move.xml", + "views/sale_order.xml", + "views/stock_warehouse.xml", + "security/intrastat_security.xml", + "security/ir.model.access.csv", + "data/intrastat_transport_mode.xml", + "data/intrastat_unit.xml", + ], + "demo": ["demo/intrastat_demo.xml"], + "installable": True, +} diff --git a/intrastat_product/data/intrastat_transport_mode.xml b/intrastat_product/data/intrastat_transport_mode.xml new file mode 100644 index 0000000..bfab36e --- /dev/null +++ b/intrastat_product/data/intrastat_transport_mode.xml @@ -0,0 +1,50 @@ + + + + + 1 + Sea + Sea Transport (including wagons, motor vehicles, trailers, semi-trailers and lighters on board of a ship) + + + 2 + Rail + Railway transport (including lorries on railway wagons) + + + 3 + Road + Road Transport + + + 4 + Air + Air Transport + + + 5 + Post + Postal consignments + + + 7 + Fixed installations + Fixed transport installations (e.g. pipelines, high-tension cables) + + + 8 + Inland waterway + Inland waterway transport + + + 9 + Own propulsion + Own propulsion (imported or exported means of transport crossing the border under their own power, e.g. aircraft, lorries, boats, etc.) + + + + + + + + diff --git a/intrastat_product/data/intrastat_unit.xml b/intrastat_product/data/intrastat_unit.xml new file mode 100644 index 0000000..6d54164 --- /dev/null +++ b/intrastat_product/data/intrastat_unit.xml @@ -0,0 +1,123 @@ + + + + + + + c/k + Carats - 1 metric carat = 2 × 10exp(–4) kg + + + ce/el + Number of cells + + + ct/l + Carrying capacity in tonnes + + + g + Gram + + + + gi F/S + Gram of fissile isotopes + + + kg H2O2 + Kilogram of hydrogen peroxide + + + kg K2O + Kilogram of potassium oxide + + + kg KOH + Kilogram of potassium hydroxide (caustic potash) + + + kg met.am. + Kilogram of methylamines + + + kg N + Kilogram of nitrogen + + + kg NaOH + Kilogram of sodium hydroxide (caustic soda) + + + kg/net eda + Kilogram drained net weight + + + kg P2O5 + Kilogram of diphosphorus pentaoxide + + + kg 90 pct sdt + Kilogram of substance 90 % dry + + + kg U + Kilogram of uranium + + + 1000 kWh + Thousand kilowatt hours + + + l + Litre + + + + 1000 l + Thousand litres + + + l alc. 100 pct + Litre pure (100 %) alcohol + + + m + Metre + + + + m2 + Square metre + + + m3 + Cubic metre + + + 1000 m3 + Thousand cubic metres + + + pa + Number of pairs + + + items + Number of items + + + + 100 items + Hundred items + + + 1000 items + Thousand items + + + TJ + Terajoule (gross calorific value) + + + diff --git a/intrastat_product/demo/intrastat_demo.xml b/intrastat_product/demo/intrastat_demo.xml new file mode 100644 index 0000000..dd85dae --- /dev/null +++ b/intrastat_product/demo/intrastat_demo.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + extended + extended + + + + + diff --git a/intrastat_product/i18n/fr.po b/intrastat_product/i18n/fr.po new file mode 100644 index 0000000..2b81407 --- /dev/null +++ b/intrastat_product/i18n/fr.po @@ -0,0 +1,1177 @@ +# 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: 2018-12-29 10:27+0000\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 +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "01" +msgstr "01" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "02" +msgstr "02" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "03" +msgstr "03" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "04" +msgstr "04" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "05" +msgstr "05" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "06" +msgstr "06" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "07" +msgstr "07" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "08" +msgstr "08" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "09" +msgstr "09" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "10" +msgstr "10" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "11" +msgstr "11" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +#: selection:l10n.fr.intrastat.product.declaration,month:0 +msgid "12" +msgstr "12" + +#. module: intrastat_product +#: sql_constraint:intrastat.product.declaration:0 +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 devriez mettre à jour cette DEB ou modifier son numéro de révision." + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line_amount_accessory_cost_company_currency +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_amount_accessory_cost_company_currency +msgid "Accessory Costs" +msgstr "Frais accessoires" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_action +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_action +msgid "Action" +msgstr "Action" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_unit_active +msgid "Active" +msgstr "Actif" + +#. 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:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line_amount_accessory_cost_company_currency +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_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 "Montant dans la monnaie 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." + +#. 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 +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_computation_line_amount_company_currency +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_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 en monnaie société à inscrire dans la DEB. Montant en monnaie société = montant dans la devise de la facture converti à la date de la facture." + +#. module: intrastat_product +#: 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:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +msgid "Arrivals" +msgstr "Introductions" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +msgid "Back to Draft" +msgstr "Remettre en brouillon" + +#. 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 +#: sql_constraint:intrastat.region:0 +#: sql_constraint:intrastat.transaction:0 +#: sql_constraint:intrastat.transport_mode:0 +msgid "Code must be unique." +msgstr "Le code doit être unique." + +#. module: intrastat_product +#: model: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:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_company_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_company_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_company_id +#: model: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_declaration_company_country_code +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_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 +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_company_currency_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_company_currency_id +msgid "Company currency" +msgstr "Monnaie de la société" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line_computation_line_ids +msgid "Computation Lines" +msgstr "Lignes de transaction" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:262 +#, 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é." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:277 +#, 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é." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:311 +#, 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'." + +#. 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_product_declaration_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_l10n_fr_intrastat_product_computation_line_src_dest_country_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_src_dest_country_id +msgid "Country" +msgstr "Pays" + +#. module: intrastat_product +#: 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_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_product_origin_country_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_product_origin_country_id +msgid "Country of Origin of the Product" +msgstr "Pays d'origine de l'article" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line_src_dest_country_id +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line_src_dest_country_id +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_computation_line_src_dest_country_id +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_src_dest_country_id +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 +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line_product_origin_country_id +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_computation_line_product_origin_country_id +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_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_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_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_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_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 +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_currency_id +msgid "Currency" +msgstr "Devise" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +msgid "Date" +msgstr "Date" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form +msgid "Declaration" +msgstr "DEB" + +#. 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 DEB" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +msgid "Declaration Lines" +msgstr "Lignes de DEB" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:30 +#, python-format +msgid "Declaration for Arrivals" +msgstr "DEB introduction" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:32 +#, python-format +msgid "Declaration for Dispatches" +msgstr "DEB expédition" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_res_company_intrastat_incoterm_id +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings_intrastat_incoterm_id +msgid "Default Incoterm for Intrastat" +msgstr "Incoterm par défaut pour la DEB" + +#. 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_transaction_out_invoice +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings_intrastat_transaction_out_invoice +msgid "Default Intrastat Transaction For Customer Invoice" +msgstr "Transaction DEB par défaut pour les factures client" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_res_company_intrastat_transaction_in_invoice +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings_intrastat_transaction_in_invoice +msgid "Default Intrastat Transaction For Supplier Invoices" +msgstr "Transaction DEB par défaut pour les factures fournisseur" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_res_company_intrastat_transaction_in_refund +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings_intrastat_transaction_in_refund +msgid "Default Intrastat Transaction For Supplier Refunds" +msgstr "Transaction DEB par défaut pour les avoirs client" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_res_company_intrastat_transaction_out_refund +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings_intrastat_transaction_out_refund +msgid "Default Intrastat Transaction for Customer Refunds" +msgstr "Transaction DEB par défaut pour les avoirs fournisseur" + +#. 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:ir.ui.view,arch_db:intrastat_product.invoice_form +msgid "Destination Country" +msgstr "Pays destination" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.invoice_supplier_form +msgid "Destination Region" +msgstr "Région destination" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_account_invoice_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 +#: 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:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +msgid "Dispatches" +msgstr "Expéditions" + +#. module: intrastat_product +#: 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_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 "Afficher le nom" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,state:0 +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +#: selection:l10n.fr.intrastat.product.declaration,state:0 +msgid "Done" +msgstr "Terminé" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,state:0 +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +#: selection:l10n.fr.intrastat.product.declaration,state:0 +msgid "Draft" +msgstr "Brouillon" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:39 +#, python-format +msgid "Extended" +msgstr "Détaillée" + +#. module: intrastat_product +#: 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 +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_amount_company_currency +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_amount_company_currency +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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:725 +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +#, python-format +msgid "Generate Declaration Lines" +msgstr "Générer les lignes de DEB" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:613 +#: model: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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:748 +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +#, python-format +msgid "Generate XML Declaration File" +msgstr "Générer le fichier XML de la DEB" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:645 +#, python-format +msgid "Generate lines from invoices: results" +msgstr "Génération des lignes à partir des factures: résultats" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:211 +#, python-format +msgid "Go to company configuration screen" +msgstr "Aller à la page de configuration" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search +#: model: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: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_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_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 +#: 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 +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_incoterm_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_incoterm_id +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 +#: model:ir.model.fields,help:intrastat_product.field_res_company_intrastat_incoterm_id +#: model:ir.model.fields,help:intrastat_product.field_res_config_settings_intrastat_incoterm_id +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." + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice_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 +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_hs_code_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_hs_code_id +msgid "Intrastat Code" +msgstr "Code pour la DEB" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/hs_code.py:26 +#, python-format +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." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/hs_code.py:21 +#, python-format +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'." + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice_intrastat_country +msgid "Intrastat Country" +msgstr "Pays pour la DEB" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice_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 "DEB" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form +msgid "Intrastat Declaration Line" +msgstr "Ligne de DEB" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_tree +msgid "Intrastat Declaration Lines" +msgstr "Lignes de DEB" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_graph +msgid "Intrastat Product" +msgstr "DEB" + +#. 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 DEB" + +#. module: intrastat_product +#: 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 +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +msgid "Intrastat Product Declaration" +msgstr "DEB" + +#. 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 DEB" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_tree +msgid "Intrastat Product Declarations" +msgstr "DEBs" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration +msgid "Intrastat Product Report Base Object" +msgstr "Intrastat Product Report Base Object" + +#. module: intrastat_product +#: 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_intrastat_product_declaration_line_region_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_region_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_region_id +#: model:ir.model.fields,field_description:intrastat_product.field_stock_warehouse_region_id +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_form +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_tree +msgid "Intrastat Region" +msgstr "Région pour la DEB" + +#. 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 pour la DEB" + +#. 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 +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_computation_line_intrastat_unit_id +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_intrastat_unit_id +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_unit_form +msgid "Intrastat Supplementary Unit" +msgstr "Unité de mesure supplémentaire pour la DEB" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_intrastat_unit +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_unit_tree +msgid "Intrastat Supplementary Units" +msgstr "Unités de mesure supplémentaire pour la DEB" + +#. module: intrastat_product +#: 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 +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_transaction_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_transaction_id +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form +msgid "Intrastat Transaction" +msgstr "Transaction DEB" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice_intrastat_transaction_id +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_form +msgid "Intrastat Transaction Type" +msgstr "Type de transaction DEB" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_tree +msgid "Intrastat Transaction Types" +msgstr "Types de transaction DEB" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_intrastat_transport_mode +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice_intrastat_transport_id +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_form +msgid "Intrastat Transport Mode" +msgstr "Mode de transport pour la DEB" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_tree +msgid "Intrastat Transportat Modes" +msgstr "Modes de transport pour la DEB" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_account_invoice_intrastat_transaction_id +msgid "Intrastat nature of transaction" +msgstr "Nature de la transaction pour la DEB" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:164 +#, 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 +#: model:ir.model,name:intrastat_product.model_account_invoice +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line_invoice_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_invoice_id +msgid "Invoice" +msgstr "Facture" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_account_invoice_line +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line_invoice_line_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_invoice_line_id +msgid "Invoice Line" +msgstr "Ligne de facture" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form +#: model: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_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_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_intrastat_product_computation_line_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_product_declaration_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_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 modification par" + +#. module: intrastat_product +#: 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_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_region_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 modification le" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:521 +#, python-format +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." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:294 +#, python-format +msgid "Missing weight on product %s." +msgstr "Poids manquant sur l'article %s." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:250 +#, python-format +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'." + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_month +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_month +msgid "Month" +msgstr "Mois" + +#. 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: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 +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_computation_line_weight +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_weight +msgid "Net weight in Kg" +msgstr "Poids net en Kg" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:758 +#, python-format +msgid "No XML File has been generated." +msgstr "Fichier XML non généré." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:632 +#, 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_l10n_fr_intrastat_product_declaration_note +#: model: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_num_decl_lines +msgid "Number of Declaration Lines" +msgstr "Nombre de lignes de déclaration" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.invoice_supplier_form +msgid "Origin Country" +msgstr "Pays d'origine" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.invoice_form +msgid "Origin Region" +msgstr "Région d'origine" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_account_invoice_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 la DEB." + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice_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_invoice_src_dest_region_id +msgid "Origin/Destination Region" +msgstr "Région d'origine/destination" + +#. 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 +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_year_month +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_year_month +msgid "Period" +msgstr "Période" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:254 +#, python-format +msgid "Please adjust this line manually." +msgstr "Ligne à finaliser manuellement." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:266 +#, python-format +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'" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:297 +#, python-format +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." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:281 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:315 +#, python-format +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" + +#. 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 +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line_product_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_product_id +msgid "Product" +msgstr "Article" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_tree +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_tree +msgid "Product C/O" +msgstr "Pays ori. article" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_sale_order +msgid "Quotation" +msgstr "Devis" + +#. 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:ir.model.fields,field_description:intrastat_product.field_intrastat_unit_uom_id +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search +msgid "Regular UoM" +msgstr "UdM normale" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form +msgid "Related Transactions" +msgstr "Transactions associées" + +#. 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_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_l10n_fr_intrastat_product_computation_line_reporting_level +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_reporting_level +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_reporting_level +msgid "Reporting Level" +msgstr "Niveau d'obligation" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_revision +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_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: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.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +msgid "Search Intrastat Product Declarations" +msgstr "Search Intrastat Product Declarations" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search +msgid "Search Intrastat Supplementary Units" +msgstr "Search Intrastat Supplementary Units" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search +msgid "Search Intrastat Transaction Types" +msgstr "Search Intrastat Transaction Types" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_search +msgid "Search Intrastat Transport Modes" +msgstr "Search Intrastat Transport Modes" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line_type +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line_type +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_type +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_computation_line_type +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_type +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_type +msgid "Select the declaration type." +msgstr "Sélectionnez le type de déclaration." + +#. 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 pour la DEB" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:38 +#, python-format +msgid "Standard" +msgstr "Simplifié" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_state +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_state +msgid "State" +msgstr "État" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_state +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_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 paramètres passent en lecture seule." + +#. module: intrastat_product +#: 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 +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_intrastat_unit_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_intrastat_unit_id +msgid "Suppl. Unit" +msgstr "Unité suppl." + +#. module: intrastat_product +#: 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 +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_suppl_unit_qty +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_suppl_unit_qty +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 +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_computation_line_suppl_unit_qty +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_suppl_unit_qty +msgid "Supplementary Units Quantity" +msgstr "Quantité exprimée en unité supplémentaire" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:633 +#, python-format +msgid "The Declaration Action has been set to 'nihil'." +msgstr "L'action de la déclaration a été mise à 'néant'." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:386 +#, 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é ; faites-le au préalable." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:375 +#, 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é ; faites-le au préalable." + +#. 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 la DEB" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_total_amount +msgid "Total Amount" +msgstr "Montant total" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_tree +msgid "Total amount" +msgstr "Montant total" + +#. module: intrastat_product +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form +msgid "Transaction" +msgstr "Transaction" + +#. 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.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_tree +#: model:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +msgid "Transactions" +msgstr "Opérations" + +#. module: intrastat_product +#: 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_l10n_fr_intrastat_product_computation_line_transport_id +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_transport_id +#: model:ir.model.fields,field_description:intrastat_product.field_sale_order_intrastat_transport_id +msgid "Transport Mode" +msgstr "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:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line_type +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line_type +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_type +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_type +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_type +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_type +#: model: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_company_country_code +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_company_country_code +msgid "Used in views and methods of localization modules." +msgstr "Used in views and methods of localization modules." + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_revision +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_revision +msgid "Used to keep track of changes" +msgstr "Used to keep track of changes" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line_valid +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_valid +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_valid +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_valid +msgid "Valid" +msgstr "Valide" + +#. 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_computation_line_weight +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line_weight +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_computation_line_weight +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_intrastat_product_declaration_line_weight +msgid "Weight" +msgstr "Poids" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_year +#: model:ir.model.fields,field_description:intrastat_product.field_l10n_fr_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 +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_year_month +msgid "Year and month of the declaration." +msgstr "Année et mois de la DEB." + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_note +#: model:ir.model.fields,help:intrastat_product.field_l10n_fr_intrastat_product_declaration_note +msgid "You can add some comments here if you want." +msgstr "Vous pouvez ajouter des commentaires ici si vous le voulez." + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:181 +#, python-format +msgid "You must set the country of the company!" +msgstr "Vous devez configurer le pays de la société !" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_res_config_settings +msgid "res.config.settings" +msgstr "res.config.settings" + diff --git a/intrastat_product/i18n/intrastat_product.pot b/intrastat_product/i18n/intrastat_product.pot new file mode 100644 index 0000000..ce36ddf --- /dev/null +++ b/intrastat_product/i18n/intrastat_product.pot @@ -0,0 +1,1310 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * intrastat_product +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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 +#: selection:intrastat.product.declaration,month:0 +msgid "01" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "02" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "03" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "04" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "05" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "06" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "07" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "08" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "09" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "10" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "11" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,month:0 +msgid "12" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +msgid "Intrastat Product Declaration " +msgstr "" + +#. module: intrastat_product +#: sql_constraint:intrastat.product.declaration:0 +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 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:91 +#: 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_unit__active +msgid "Active" +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: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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:139 +#, python-format +msgid "Append" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search +msgid "Archived" +msgstr "" + +#. module: intrastat_product +#: 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 +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_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +msgid "Back to Draft" +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 +#: sql_constraint:intrastat.region:0 +#: sql_constraint:intrastat.transaction:0 +#: sql_constraint:intrastat.transport_mode:0 +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_declaration__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 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:226 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:237 +#: 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:ir.model,name:intrastat_product.model_res_config_settings +msgid "Config Settings" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:244 +#, python-format +msgid "Conversion from Intrastat Supplementary Unit '%s' to Unit of Measure is not implemented yet." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:259 +#, python-format +msgid "Conversion from unit of measure '%s' to '%s' is not implemented yet." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:293 +#, python-format +msgid "Conversion from unit of measure '%s' to 'Kg' is not implemented yet. It is needed for product '%s'." +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_product_declaration_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 +msgid "Country" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__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_id +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__product_origin_country_id +msgid "Country of Origin of the Product" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:66 +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__src_dest_country_id +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_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 +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_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_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_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_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_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 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:228 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:239 +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +#, python-format +msgid "Declaration Lines" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:124 +#, python-format +msgid "Declaration for Arrivals" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:126 +#, python-format +msgid "Declaration for Dispatches" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_incoterm_id +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_incoterm_id +msgid "Default Incoterm for Intrastat" +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_transaction_out_invoice +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_transaction_out_invoice +msgid "Default Intrastat Transaction For Customer Invoice" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_transaction_in_invoice +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_transaction_in_invoice +msgid "Default Intrastat Transaction For Supplier Invoices" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_transaction_in_refund +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_transaction_in_refund +msgid "Default Intrastat Transaction For Supplier Refunds" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_res_company__intrastat_transaction_out_refund +#: model:ir.model.fields,field_description:intrastat_product.field_res_config_settings__intrastat_transaction_out_refund +msgid "Default Intrastat Transaction for Customer Refunds" +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.invoice_form +msgid "Destination Country" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.invoice_supplier_form +msgid "Destination Region" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_account_invoice__src_dest_country_id +msgid "Destination country for dispatches. Origin country for arrivals." +msgstr "" + +#. module: intrastat_product +#: 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 +msgid "Dispatches" +msgstr "" + +#. module: intrastat_product +#: 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_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 +#: model:ir.model.fields,field_description:intrastat_product.field_report_intrastat_product_product_declaration_xls__display_name +msgid "Display Name" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,state:0 +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +msgid "Done" +msgstr "" + +#. module: intrastat_product +#: selection:intrastat.product.declaration,state:0 +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +msgid "Draft" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +msgid "Excel Export" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:133 +#, python-format +msgid "Extended" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:78 +#: 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_channel_ids +msgid "Followers (Channels)" +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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:708 +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +#, python-format +msgid "Generate Declaration Lines" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:597 +#: 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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:730 +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +#, python-format +msgid "Generate XML Declaration File" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:629 +#, python-format +msgid "Generate lines from invoices: results" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:193 +#, 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: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_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 +#: model:ir.model.fields,field_description:intrastat_product.field_report_intrastat_product_product_declaration_xls__id +msgid "ID" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_unread +msgid "If checked new messages require your attention." +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 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:157 +#: 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 +#: model:ir.model.fields,help:intrastat_product.field_res_company__intrastat_incoterm_id +#: model:ir.model.fields,help:intrastat_product.field_res_config_settings__intrastat_incoterm_id +msgid "International Commercial Terms are a series of predefined commercial terms used in international transactions." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:54 +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice_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 +#: code:addons/intrastat_product/models/hs_code.py:26 +#, python-format +msgid "Intrastat Codes should contain 8 digits. This is not the case for Intrastat Code '%s' which has %d digits." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/hs_code.py:21 +#, python-format +msgid "Intrastat Codes should only contain digits. This is not the case for code '%s'." +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice__intrastat_country +msgid "Intrastat Country" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice__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_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_form +msgid "Intrastat Declaration Line" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_line_view_tree +msgid "Intrastat Declaration Lines" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_graph +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_pivot +msgid "Intrastat Product" +msgstr "" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_intrastat_product_computation_line +msgid "Intrastat Product Computataion Lines" +msgstr "" + +#. module: intrastat_product +#: 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.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 +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_form +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 +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_tree +msgid "Intrastat Product Declarations" +msgstr "" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_intrastat_product_declaration +msgid "Intrastat Product Report Base Object" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:177 +#: 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_intrastat_product_declaration_line__region_id +#: model:ir.model.fields,field_description:intrastat_product.field_stock_warehouse__region_id +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_form +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_region_view_tree +#, python-format +msgid "Intrastat Region" +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: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 +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_form +msgid "Intrastat Supplementary Unit" +msgstr "" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_intrastat_unit +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_tree +msgid "Intrastat Supplementary Units" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:105 +#: 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 +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_computation_line_view_form +#, python-format +msgid "Intrastat Transaction" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice__intrastat_transaction_id +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_form +msgid "Intrastat Transaction Type" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_tree +msgid "Intrastat Transaction Types" +msgstr "" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_intrastat_transport_mode +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice__intrastat_transport_id +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_form +msgid "Intrastat Transport Mode" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_tree +msgid "Intrastat Transportat Modes" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_account_invoice__intrastat_transaction_id +msgid "Intrastat nature of transaction" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:170 +#, 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 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:187 +#: model:ir.model,name:intrastat_product.model_account_invoice +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_id +#, python-format +msgid "Invoice" +msgstr "" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_account_invoice_line +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__invoice_line_id +msgid "Invoice Line" +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_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_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_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 +#: model:ir.model.fields,field_description:intrastat_product.field_report_intrastat_product_product_declaration_xls____last_update +msgid "Last Modified on" +msgstr "" + +#. module: intrastat_product +#: 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_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_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_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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:506 +#, python-format +msgid "Missing H.S. code on product %s. This product is present in invoice %s." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:232 +#, python-format +msgid "Missing unit of measure on the line with %d product(s) '%s' on invoice '%s'." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:276 +#, python-format +msgid "Missing weight on product %s." +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__month +msgid "Month" +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_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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:140 +#, python-format +msgid "Nihil" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:240 +#, python-format +msgid "No" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:740 +#, python-format +msgid "No XML File has been generated." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:616 +#, 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_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 error" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_needaction_counter +msgid "Number of messages which requires an 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:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__message_unread_counter +msgid "Number of unread messages" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.invoice_supplier_form +msgid "Origin Country" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.invoice_form +msgid "Origin Region" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_account_invoice__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_invoice__src_dest_country_id +msgid "Origin/Destination Country" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_account_invoice__src_dest_region_id +msgid "Origin/Destination Region" +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 +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__year_month +msgid "Period" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:236 +#, python-format +msgid "Please adjust this line manually." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:248 +#, python-format +msgid "Please correct the Intrastat Supplementary Unit settings and regenerate the lines or adjust the lines with Intrastat Code '%s' manually" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:279 +#, python-format +msgid "Please correct the product record and regenerate the lines or adjust the impacted lines manually" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:263 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:297 +#, python-format +msgid "Please correct the unit of measure settings and regenerate the lines or adjust the impacted lines manually" +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 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:31 +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__product_id +#, python-format +msgid "Product" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:42 +#: 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 +#: 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: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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:138 +#, python-format +msgid "Replace" +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__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 "Sale 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_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_search +msgid "Search Intrastat Product Declarations" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_unit_search +msgid "Search Intrastat Supplementary Units" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transaction_mode_search +msgid "Search Intrastat Transaction Types" +msgstr "" + +#. module: intrastat_product +#: model_terms:ir.ui.view,arch_db:intrastat_product.intrastat_transport_mode_search +msgid "Search Intrastat Transport Modes" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_computation_line__type +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__type +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration_line__type +msgid "Select the declaration type." +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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:132 +#, 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 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:146 +#: 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 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:130 +#: 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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:617 +#, python-format +msgid "The Declaration Action has been set to 'nihil'." +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_res_config_settings__country_code +msgid "The ISO country code in two chars. \n" +"You can use this field for quick search." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:370 +#, python-format +msgid "The default Incoterm of the Company is not set, please configure it first." +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:356 +#, 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_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_terms:ir.ui.view,arch_db:intrastat_product.intrastat_product_declaration_view_tree +msgid "Total 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.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_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_view_form +msgid "Transactions" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:167 +#: 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 +#: 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:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__type +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__type +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration_line__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,field_description:intrastat_product.field_intrastat_product_declaration__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: intrastat_product +#: model:ir.model.fields,help:intrastat_product.field_intrastat_product_declaration__company_country_code +msgid "Used in views and methods of localization modules." +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 +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_computation_line__valid +#: model:ir.model.fields,field_description:intrastat_product.field_intrastat_product_declaration__valid +msgid "Valid" +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 +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:116 +#: 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 +#, python-format +msgid "Weight" +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 +#: code:addons/intrastat_product/models/intrastat_product_declaration.py:148 +#, python-format +msgid "You must set company's country !" +msgstr "" + +#. module: intrastat_product +#: code:addons/intrastat_product/report/intrastat_product_report_xls.py:240 +#, python-format +msgid "for period %s" +msgstr "" + +#. module: intrastat_product +#: model:ir.model,name:intrastat_product.model_report_intrastat_product_product_declaration_xls +msgid "report.intrastat_product.product_declaration_xls" +msgstr "" + diff --git a/intrastat_product/models/__init__.py b/intrastat_product/models/__init__.py new file mode 100644 index 0000000..f2e2317 --- /dev/null +++ b/intrastat_product/models/__init__.py @@ -0,0 +1,11 @@ +from . import res_company +from . import res_config_settings +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 0000000..5576b0a --- /dev/null +++ b/intrastat_product/models/account_move.py @@ -0,0 +1,75 @@ +# Copyright 2011-2017 Akretion France (http://www.akretion.com) +# Copyright 2009-2020 Noviat (http://www.noviat.com) +# @author Alexis de Lattre +# @author Luc de Meyer + +from odoo import 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", + track_visibility="onchange", + help="Intrastat nature of transaction", + ) + 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_intrastat_country", + store=True, + compute_sudo=True, + help="Destination country for dispatches. Origin country for " "arrivals.", + ) + intrastat_country = fields.Boolean( + compute="_compute_intrastat_country", + string="Intrastat Country", + store=True, + compute_sudo=True, + ) + src_dest_region_id = fields.Many2one( + comodel_name="intrastat.region", + string="Origin/Destination Region", + default=lambda self: self._default_src_dest_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" + ) + + @api.depends("partner_shipping_id.country_id", "partner_id.country_id") + def _compute_intrastat_country(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 + inv.intrastat_country = country.intrastat + + @api.model + def _default_src_dest_region_id(self): + return self.env.company.intrastat_region_id + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + hs_code_id = fields.Many2one( + comodel_name="hs.code", string="Intrastat Code", ondelete="restrict" + ) + + @api.onchange("product_id") + def intrastat_product_id_change(self): + if self.product_id: + hs_code = self.product_id.get_hs_code_recursively() + self.hs_code_id = hs_code and hs_code.id or False diff --git a/intrastat_product/models/hs_code.py b/intrastat_product/models/hs_code.py new file mode 100644 index 0000000..91a82ed --- /dev/null +++ b/intrastat_product/models/hs_code.py @@ -0,0 +1,36 @@ +# Copyright 2011-2017 Akretion (http://www.akretion.com) +# Copyright 2009-2018 Noviat (http://www.noviat.com) +# @author Alexis de Lattre +# @author Luc de Meyer + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class HSCode(models.Model): + _inherit = "hs.code" + + intrastat_unit_id = fields.Many2one( + comodel_name="intrastat.unit", string="Intrastat Supplementary Unit" + ) + + @api.constrains("local_code") + def _hs_code(self): + if self.company_id.country_id.intrastat: + if not self.local_code.isdigit(): + raise ValidationError( + _( + "Intrastat Codes should only contain digits. " + "This is not the case for code '%s'." + ) + % self.local_code + ) + if len(self.local_code) != 8: + raise ValidationError( + _( + "Intrastat Codes should " + "contain 8 digits. This is not the case for " + "Intrastat Code '%s' which has %d digits." + ) + % (self.local_code, len(self.local_code)) + ) diff --git a/intrastat_product/models/intrastat_product_declaration.py b/intrastat_product/models/intrastat_product_declaration.py new file mode 100644 index 0000000..7661389 --- /dev/null +++ b/intrastat_product/models/intrastat_product_declaration.py @@ -0,0 +1,1040 @@ +# Copyright 2011-2017 Akretion France (http://www.akretion.com) +# Copyright 2009-2020 Noviat (http://www.noviat.com) +# @author Alexis de Lattre +# @author Luc de Meyer + +import logging +from datetime import date, datetime + +from dateutil.relativedelta import relativedelta + +from odoo import _, api, fields, models +from odoo.exceptions import RedirectWarning, UserError, ValidationError + +_logger = logging.getLogger(__name__) + + +class IntrastatProductDeclaration(models.Model): + _name = "intrastat.product.declaration" + _description = "Intrastat Product Report Base Object" + _rec_name = "year_month" + _inherit = ["mail.thread", "intrastat.common"] + _order = "year_month desc, type, revision" + _sql_constraints = [ + ( + "date_uniq", + "unique(year_month, company_id, 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(IntrastatProductDeclaration, self).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).rjust(2, "0")} + ) + return res + + company_id = fields.Many2one( + comodel_name="res.company", + string="Company", + readonly=True, + default=lambda self: self._default_company_id(), + ) + company_country_code = fields.Char( + compute="_compute_company_country_code", + string="Company Country Code", + readonly=True, + store=True, + help="Used in views and methods of localization modules.", + ) + year = fields.Char( + string="Year", required=True, states={"done": [("readonly", 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"), + ], + string="Month", + required=True, + states={"done": [("readonly", True)]}, + ) + year_month = fields.Char( + compute="_compute_year_month", + string="Period", + readonly=True, + track_visibility="onchange", + store=True, + help="Year and month of the declaration.", + ) + type = fields.Selection( + selection="_get_type", + string="Type", + required=True, + states={"done": [("readonly", True)]}, + track_visibility="onchange", + help="Select the declaration type.", + ) + action = fields.Selection( + selection="_get_action", + string="Action", + required=True, + default="replace", + states={"done": [("readonly", True)]}, + track_visibility="onchange", + ) + revision = fields.Integer( + string="Revision", + default=1, + states={"done": [("readonly", True)]}, + 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", + states={"done": [("readonly", True)]}, + ) + declaration_line_ids = fields.One2many( + comodel_name="intrastat.product.declaration.line", + inverse_name="parent_id", + string="Intrastat Product Declaration Lines", + states={"done": [("readonly", True)]}, + ) + num_decl_lines = fields.Integer( + compute="_compute_numbers", + string="Number of Declaration Lines", + store=True, + track_visibility="onchange", + ) + 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" + ) + state = fields.Selection( + selection=[("draft", "Draft"), ("done", "Done")], + string="State", + readonly=True, + track_visibility="onchange", + copy=False, + default="draft", + help="State of the declaration. When the state is set to 'Done', " + "the parameters become read-only.", + ) + note = fields.Text( + string="Notes", help="You can add some comments here if you want." + ) + reporting_level = fields.Selection( + selection="_get_reporting_level", + string="Reporting Level", + states={"done": [("readonly", True)]}, + ) + valid = fields.Boolean(compute="_compute_check_validity", string="Valid") + + @api.model + def _default_company_id(self): + return self.env.company + + @api.model + def _get_type(self): + res = [] + company = self.env.user.company_id + arrivals = company.intrastat_arrivals + dispatches = company.intrastat_dispatches + if arrivals != "exempt": + res.append(("arrivals", _("Declaration for Arrivals"))) + if dispatches != "exempt": + res.append(("dispatches", _("Declaration for 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("company_id") + def _compute_company_country_code(self): + for this in self: + if this.company_id: + if not this.company_id.country_id: + raise ValidationError(_("You must set company's country !")) + this.company_country_code = this.company_id.country_id.code.lower() + + @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.depends("month") + def _compute_check_validity(self): + """ TO DO: logic based upon computation lines """ + for this in self: + this.valid = True + + @api.model + @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.onchange("type") + def _onchange_type(self): + if self.type == "arrivals": + self.reporting_level = ( + self.company_id.intrastat_arrivals == "extended" + and "extended" + or "standard" + ) + if self.type == "dispatches": + self.reporting_level = ( + self.company_id.intrastat_dispatches == "extended" + and "extended" + or "standard" + ) + + def copy(self, default=None): + self.ensure_one() + default = default or {} + default["revision"] = self.revision + 1 + return super(IntrastatProductDeclaration, self).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 _get_partner_country(self, inv_line): + country = ( + inv_line.move_id.src_dest_country_id + or inv_line.move_id.partner_id.country_id + ) + if not country.intrastat: + country = False + elif country == self.company_id.country_id: + country = False + return country + + def _get_intrastat_transaction(self, inv_line): + invoice = inv_line.move_id + if invoice.intrastat_transaction_id: + return invoice.intrastat_transaction_id + else: + company = invoice.company_id + if invoice.type == "out_invoice": + return company.intrastat_transaction_out_invoice + elif invoice.type == "out_refund": + return company.intrastat_transaction_out_refund + elif invoice.type == "in_invoice": + return company.intrastat_transaction_in_invoice + elif invoice.type == "in_refund": + return company.intrastat_transaction_in_refund + + def _get_weight_and_supplunits(self, inv_line, hs_code): + line_qty = inv_line.quantity + product = inv_line.product_id + invoice = inv_line.move_id + intrastat_unit_id = hs_code.intrastat_unit_id + source_uom = inv_line.product_uom_id + weight_uom_categ = self._get_uom_refs("weight_uom_categ") + kg_uom = self._get_uom_refs("kg_uom") + pce_uom_categ = self._get_uom_refs("pce_uom_categ") + pce_uom = self._get_uom_refs("pce_uom") + weight = suppl_unit_qty = 0.0 + + if not source_uom: + note = "\n" + _( + "Missing unit of measure on the line with %d " + "product(s) '%s' on invoice '%s'." + ) % (line_qty, product.name_get()[0][1], invoice.number) + note += "\n" + _("Please adjust this line manually.") + self._note += note + return weight, suppl_unit_qty + + if intrastat_unit_id: + target_uom = intrastat_unit_id.uom_id + if not target_uom: + note = ( + "\n" + + _( + "Conversion from Intrastat Supplementary Unit '%s' to " + "Unit of Measure is not implemented yet." + ) + % intrastat_unit_id.name + ) + note += ( + "\n" + + _( + "Please correct the Intrastat Supplementary Unit " + "settings and regenerate the lines or adjust the lines " + "with Intrastat Code '%s' manually" + ) + % hs_code.display_name + ) + self._note += note + 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: + note = "\n" + _( + "Conversion from unit of measure '%s' to '%s' " + "is not implemented yet." + ) % (source_uom.name, target_uom.name) + note += "\n" + _( + "Please correct the unit of measure settings and " + "regenerate the lines or adjust the impacted " + "lines manually" + ) + self._note += note + 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 == pce_uom_categ: + if not product.weight: # re-create weight_net ? + note = ( + "\n" + _("Missing weight on product %s.") % product.name_get()[0][1] + ) + note += "\n" + _( + "Please correct the product record and regenerate " + "the lines or adjust the impacted lines manually" + ) + self._note += note + return weight, suppl_unit_qty + if source_uom == pce_uom: + weight = product.weight * line_qty # product.weight_net + else: + # Here, I suppose that, on the product, the + # weight is per PCE and not per uom_id + # product.weight_net + weight = product.weight * source_uom._compute_quantity( + line_qty, pce_uom + ) + else: + note = "\n" + _( + "Conversion from unit of measure '%s' to 'Kg' " + "is not implemented yet. It is needed for product '%s'." + ) % (source_uom.name, product.name_get()[0][1]) + note += "\n" + _( + "Please correct the unit of measure settings and " + "regenerate the lines or adjust the impacted lines " + "manually" + ) + self._note += note + return weight, suppl_unit_qty + + return weight, suppl_unit_qty + + def _get_amount(self, inv_line): + invoice = inv_line.move_id + amount = invoice.currency_id._convert( + inv_line.price_subtotal, + self.company_id.currency_id, + self.company_id, + invoice.date, + ) + return amount + + def _get_region(self, inv_line): + """ + 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 = False + inv_type = inv_line.move_id.type + if inv_type in ("in_invoice", "in_refund"): + po_lines = self.env["purchase.order.line"].search( + [("invoice_lines", "in", inv_line.id)] + ) + if po_lines: + if po_lines[0].move_ids: + region = ( + po_lines[0].move_ids[0].location_dest_id.get_intrastat_region() + ) + elif inv_type in ("out_invoice", "out_refund"): + so_lines = self.env["sale.order.line"].search( + [("invoice_lines", "in", inv_line.id)] + ) + if so_lines: + so = so_lines[0].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): + 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): + 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): + return inv_line.product_id.origin_country_id + + def _update_computation_line_vals(self, inv_line, line_vals): + """ placeholder for localization modules """ + pass + + 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 + """ + 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_country", "=", True), + ("company_id", "=", self.company_id.id), + ] + 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): + """ placeholder for localization modules """ + pass + + def _gather_invoices(self): + + lines = [] + accessory_costs = self.company_id.intrastat_accessory_costs + + self._gather_invoices_init() + domain = self._prepare_invoice_domain() + invoices = self.env["account.move"].search(domain) + + 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 + for inv_line in invoice.invoice_line_ids: + + 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_invoice, + ) + total_inv_accessory_costs_cc += acost + + continue + + if not inv_line.quantity: + _logger.info( + "Skipping invoice line %s qty %s " + "of invoice %s. Reason: qty = 0" + % (inv_line.name, inv_line.quantity, invoice.number) + ) + continue + + partner_country = self._get_partner_country(inv_line) + if not partner_country: + _logger.info( + "Skipping invoice line %s qty %s " + "of invoice %s. Reason: no partner_country" + % (inv_line.name, inv_line.quantity, invoice.number) + ) + continue + + if any( + [tax.exclude_from_intrastat_if_present for tax in inv_line.tax_ids] + ): + _logger.info( + "Skipping invoice line %s " + "qty %s of invoice %s. Reason: " + "tax.exclude_from_intrastat_if_present" + % (inv_line.name, inv_line.quantity, invoice.number) + ) + continue + + if inv_line.hs_code_id: + hs_code = inv_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: + note = "\n" + _( + "Missing H.S. code on product %s. " + "This product is present in invoice %s." + ) % ( + inv_line.product_id.name_get()[0][1], + inv_line.move_id.name, + ) + self._note += note + continue + else: + _logger.info( + "Skipping invoice line %s qty %s " + "of invoice %s. Reason: no product nor hs_code" + % (inv_line.name, inv_line.quantity, invoice.number) + ) + continue + + intrastat_transaction = self._get_intrastat_transaction(inv_line) + + weight, suppl_unit_qty = self._get_weight_and_supplunits( + inv_line, hs_code + ) + total_inv_weight += weight + + amount_company_currency = self._get_amount(inv_line) + total_inv_product_cc += amount_company_currency + + product_origin_country = self._get_product_origin_country(inv_line) + + region = self._get_region(inv_line) + + 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_id": region and region.id or False, + } + + # extended declaration + if self._extended: + transport = self._get_transport(inv_line) + line_vals.update({"transport_id": transport.id}) + + self._update_computation_line_vals(inv_line, line_vals) + + 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 _get_uom_refs(self, ref): + uom_refs = { + "weight_uom_categ": self.env.ref("uom.product_uom_categ_kgm"), + "kg_uom": self.env.ref("uom.product_uom_kgm"), + "pce_uom_categ": self.env.ref("uom.product_uom_categ_unit"), + "pce_uom": self.env.ref("uom.product_uom_unit"), + } + return uom_refs[ref] + + def action_gather(self): + self.ensure_one() + self.message_post(body=_("Generate Lines from Invoices")) + self._check_generate_lines() + self._note = "" + if ( + self.type == "arrivals" and self.company_id.intrastat_arrivals == "extended" + ) or ( + self.type == "dispatches" + and self.company_id.intrastat_dispatches == "extended" + ): + self._extended = True + else: + self._extended = False + + self.computation_line_ids.unlink() + self.declaration_line_ids.unlink() + lines = self._gather_invoices() + + if not lines: + self.action = "nihil" + note = ( + "\n" + + _("No records found for the selected period !") + + "\n" + + _("The Declaration Action has been set to 'nihil'.") + ) + self._note += note + else: + self.write({"computation_line_ids": [(0, 0, x) for x in lines]}) + + if self._note: + note_header = ( + "\n\n>>> " + + fields.Datetime.to_string( + fields.Datetime.context_timestamp(self, datetime.now()) + ) + + "\n" + ) + self.note = note_header + self._note + (self.note or "") + result_view = self.env.ref("intrastat_base.intrastat_result_view_form") + return { + "name": _("Generate lines from invoices: results"), + "view_type": "form", + "view_mode": "form", + "res_model": "intrastat.result.view", + "view_id": result_view.id, + "target": "new", + "context": dict(self._context, note=self._note), + "type": "ir.actions.act_window", + } + + return True + + @api.model + def _group_line_hashcode_fields(self, computation_line): + return { + "country": computation_line.src_dest_country_id.id or False, + "hs_code_id": computation_line.hs_code_id.id or False, + "intrastat_unit": computation_line.intrastat_unit_id.id or False, + "transaction": computation_line.transaction_id.id or False, + "transport": computation_line.transport_id.id or False, + "region": computation_line.region_id.id or False, + "product_origin_country": computation_line.product_origin_country_id.id + or False, + } + + def group_line_hashcode(self, computation_line): + hc_fields = self._group_line_hashcode_fields(computation_line) + hashcode = "-".join([str(f) for f in hc_fields.values()]) + return hashcode + + @api.model + def _prepare_grouped_fields(self, computation_line, fields_to_sum): + vals = { + "src_dest_country_id": computation_line.src_dest_country_id.id, + "intrastat_unit_id": computation_line.intrastat_unit_id.id, + "hs_code_id": computation_line.hs_code_id.id, + "transaction_id": computation_line.transaction_id.id, + "transport_id": computation_line.transport_id.id, + "region_id": computation_line.region_id.id, + "parent_id": computation_line.parent_id.id, + "product_origin_country_id": computation_line.product_origin_country_id.id, + "amount_company_currency": 0.0, + } + 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 + + @api.model + def _prepare_declaration_line(self, computation_lines): + fields_to_sum = self._fields_to_sum() + vals = self._prepare_grouped_fields(computation_lines[0], fields_to_sum) + for computation_line in computation_lines: + 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"] + ) + # round, otherwise odoo with truncate (6.7 -> 6... instead of 7 !) + for field in fields_to_sum: + vals[field] = int(round(vals[field])) + if not vals["weight"]: + vals["weight"] = 1 + vals["amount_company_currency"] = int(round(vals["amount_company_currency"])) + return vals + + def generate_declaration(self): + """ generate declaration lines """ + self.ensure_one() + assert self.valid, "Computation lines are not valid" + self.message_post(body=_("Generate Declaration Lines")) + # Delete existing declaration lines + self.declaration_line_ids.unlink() + # Regenerate declaration lines from computation lines + dl_group = {} + for cl in self.computation_line_ids: + hashcode = self.group_line_hashcode(cl) + if hashcode in dl_group: + dl_group[hashcode].append(cl) + else: + dl_group[hashcode] = [cl] + ipdl = self.declaration_line_ids + for cl_lines in list(dl_group.values()): + vals = self._prepare_declaration_line(cl_lines) + declaration_line = ipdl.create(vals) + for cl in cl_lines: + cl.write({"declaration_line_id": declaration_line.id}) + return True + + def generate_xml(self): + """ generate the INTRASTAT Declaration XML file """ + self.ensure_one() + self.message_post(body=_("Generate XML Declaration File")) + self._check_generate_xml() + self._unlink_attachments() + xml_string = self._generate_xml() + if xml_string: + attach_id = self._attach_xml_file( + xml_string, "{}_{}".format(self.type, self.revision) + ) + return self._open_attach_view(attach_id) + else: + raise UserError(_("No XML File has been generated.")) + + def create_xls(self): + if self.env.context.get("computation_lines"): + report_file = "instrastat_transactions" + else: + report_file = "instrastat_declaration_lines" + return { + "type": "ir.actions.report", + "report_type": "xlsx", + "report_name": "intrastat_product.product_declaration_xls", + "context": dict(self.env.context, report_file=report_file), + "data": {"dynamic_report": True}, + } + + @api.model + def _xls_computation_line_fields(self): + """ + Update list in custom module to add/drop columns or change order + """ + return [ + "product", + "product_origin_country", + "hs_code", + "src_dest_country", + "amount_company_currency", + "accessory_cost", + "transaction", + "weight", + "suppl_unit_qty", + "suppl_unit", + "transport", + "invoice", + ] + + @api.model + def _xls_declaration_line_fields(self): + """ + Update list in custom module to add/drop columns or change order + """ + return [ + "hs_code", + "src_dest_country", + "amount_company_currency", + "transaction", + "weight", + "suppl_unit_qty", + "suppl_unit", + "transport", + ] + + @api.model + def _xls_template(self): + """ + Placeholder for excel report template updates + + """ + return {} + + def done(self): + self.write({"state": "done"}) + + def back2draft(self): + self.write({"state": "draft"}) + + +class IntrastatProductComputationLine(models.Model): + _name = "intrastat.product.computation.line" + _description = "Intrastat Product Computataion 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" + ) + type = fields.Selection(related="parent_id.type") + reporting_level = fields.Selection(related="parent_id.reporting_level") + valid = fields.Boolean(compute="_compute_check_validity", string="Valid") + 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" + ) + 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", + domain=[("intrastat", "=", True)], + ) + 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( + string="Weight", 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" + ) + region_id = fields.Many2one("intrastat.region", string="Intrastat Region") + # extended declaration + incoterm_id = fields.Many2one("account.incoterms", string="Incoterm") + transport_id = fields.Many2one("intrastat.transport_mode", string="Transport Mode") + 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 ____'", + ) + + @api.depends("transport_id") + def _compute_check_validity(self): + """ TO DO: logic based upon fields """ + for this in self: + this.valid = True + + # TODO: product_id is a readonly related field 'invoice_line_id.product_id' + # so the onchange is non-sense. Either we convert product_id to a regular + # field or we keep it a related field and we remove this onchange + @api.onchange("product_id") + def _onchange_product(self): + self.weight = 0.0 + self.suppl_unit_qty = 0.0 + self.intrastat_code_id = False + self.intrastat_unit_id = False + if self.product_id: + self.intrastat_code_id = self.product_id.intrastat_id + self.intrastat_unit_id = self.product_id.intrastat_id.intrastat_unit_id + if not self.intrastat_unit_id: + self.weight = self.product_id.weight + + +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, + ) + company_id = fields.Many2one(related="parent_id.company_id") + company_currency_id = fields.Many2one( + related="company_id.currency_id", string="Company currency" + ) + type = fields.Selection(related="parent_id.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_id = fields.Many2one( + "res.country", + string="Country", + help="Country of Origin/Destination", + domain=[("intrastat", "=", True)], + ) + 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(string="Weight", 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" + ) + region_id = fields.Many2one("intrastat.region", string="Intrastat Region") + # extended declaration + incoterm_id = fields.Many2one("account.incoterms", string="Incoterm") + transport_id = fields.Many2one("intrastat.transport_mode", string="Transport Mode") + 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 ____'", + ) diff --git a/intrastat_product/models/intrastat_region.py b/intrastat_product/models/intrastat_region.py new file mode 100644 index 0000000..648db55 --- /dev/null +++ b/intrastat_product/models/intrastat_region.py @@ -0,0 +1,32 @@ +# Copyright 2009-2020 Noviat nv/sa (www.noviat.com). +# @author Luc de Meyer + +from odoo import api, 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(string="Code", required=True) + country_id = fields.Many2one( + comodel_name="res.country", string="Country", required=True + ) + name = fields.Char(string="Name", translate=True) + description = fields.Char(string="Description") + company_id = fields.Many2one( + comodel_name="res.company", + string="Company", + default=lambda self: self._default_company_id(), + ) + + @api.model + def _default_company_id(self): + return self.env.company diff --git a/intrastat_product/models/intrastat_transaction.py b/intrastat_product/models/intrastat_transaction.py new file mode 100644 index 0000000..7dfbbae --- /dev/null +++ b/intrastat_product/models/intrastat_transaction.py @@ -0,0 +1,42 @@ +# Copyright 2011-2017 Akretion France (http://www.akretion.com) +# Copyright 2009-2020 Noviat (http://www.noviat.com) +# @author Alexis de Lattre +# @author Luc de Meyer + +from odoo import api, fields, models + + +class IntrastatTransaction(models.Model): + _name = "intrastat.transaction" + _description = "Intrastat Transaction" + _order = "code" + _sql_constraints = [ + ( + "intrastat_transaction_code_unique", + "UNIQUE(code, company_id)", + "Code must be unique.", + ) + ] + + code = fields.Char(string="Code", required=True) + description = fields.Text(string="Description") + company_id = fields.Many2one( + comodel_name="res.company", + string="Company", + default=lambda self: self._default_company_id(), + ) + + @api.model + def _default_company_id(self): + return self.env.company + + @api.depends("code", "description") + def name_get(self): + res = [] + for this in self: + name = this.code + if this.description: + name += " " + this.description + name = len(name) > 55 and name[:55] + "..." or name + res.append((this.id, name)) + return res diff --git a/intrastat_product/models/intrastat_transport_mode.py b/intrastat_product/models/intrastat_transport_mode.py new file mode 100644 index 0000000..1d816b9 --- /dev/null +++ b/intrastat_product/models/intrastat_transport_mode.py @@ -0,0 +1,27 @@ +# Copyright 2011-2017 Akretion (http://www.akretion.com) +# Copyright 2009-2019 Noviat (http://www.noviat.com) +# @author Alexis de Lattre +# @author Luc de Meyer + +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(string="Code", required=True) + name = fields.Char(string="Name", required=True, translate=True) + description = fields.Char(string="Description", translate=True) + + @api.depends("name", "code") + def name_get(self): + res = [] + for mode in self: + name = "{}. {}".format(mode.code, mode.name) + res.append((mode.id, name)) + return res diff --git a/intrastat_product/models/intrastat_unit.py b/intrastat_product/models/intrastat_unit.py new file mode 100644 index 0000000..60b298c --- /dev/null +++ b/intrastat_product/models/intrastat_unit.py @@ -0,0 +1,21 @@ +# Copyright 2011-2017 Akretion (http://www.akretion.com) +# Copyright 2009-2018 Noviat (http://www.noviat.com) +# @author Alexis de Lattre +# @author Luc de Meyer + +from odoo import fields, models + + +class IntrastatUnit(models.Model): + _name = "intrastat.unit" + _description = "Intrastat Supplementary Units" + + name = fields.Char(string="Name", required=True) + description = fields.Char(string="Description", 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) diff --git a/intrastat_product/models/res_company.py b/intrastat_product/models/res_company.py new file mode 100644 index 0000000..14e3fa7 --- /dev/null +++ b/intrastat_product/models/res_company.py @@ -0,0 +1,88 @@ +# Copyright 2011-2017 Akretion (http://www.akretion.com) +# Copyright 2009-2020 Noviat (http://www.noviat.com) +# @author Alexis de Lattre +# @author Luc de Meyer + +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, + readonly=True, + compute="_compute_intrastat", + ) + intrastat_region_id = fields.Many2one( + comodel_name="intrastat.region", string="Default Intrastat Region" + ) + intrastat_transaction_out_invoice = fields.Many2one( + comodel_name="intrastat.transaction", + string="Default Intrastat Transaction For Customer Invoice", + ) + intrastat_transaction_out_refund = fields.Many2one( + comodel_name="intrastat.transaction", + string="Default Intrastat Transaction for Customer Refunds", + ) + intrastat_transaction_in_invoice = fields.Many2one( + comodel_name="intrastat.transaction", + string="Default Intrastat Transaction For Supplier Invoices", + ) + intrastat_transaction_in_refund = fields.Many2one( + comodel_name="intrastat.transaction", + string="Default Intrastat Transaction For Supplier Refunds", + ) + 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_config_settings.py b/intrastat_product/models/res_config_settings.py new file mode 100644 index 0000000..cac16a3 --- /dev/null +++ b/intrastat_product/models/res_config_settings.py @@ -0,0 +1,40 @@ +# Copyright 2017 Akretion (Alexis de Lattre ) +# 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_transaction_out_invoice = fields.Many2one( + related="company_id.intrastat_transaction_out_invoice", readonly=False + ) + intrastat_transaction_out_refund = fields.Many2one( + related="company_id.intrastat_transaction_out_refund", readonly=False + ) + intrastat_transaction_in_invoice = fields.Many2one( + related="company_id.intrastat_transaction_in_invoice", readonly=False + ) + intrastat_transaction_in_refund = fields.Many2one( + related="company_id.intrastat_transaction_in_refund", 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 = fields.Char(related="company_id.country_id.code") diff --git a/intrastat_product/models/sale_order.py b/intrastat_product/models/sale_order.py new file mode 100644 index 0000000..eebbeb4 --- /dev/null +++ b/intrastat_product/models/sale_order.py @@ -0,0 +1,27 @@ +# Copyright 2010-2019 Akretion France (http://www.akretion.com) +# @author Alexis de Lattre +# 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(SaleOrder, self)._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 0000000..7846e07 --- /dev/null +++ b/intrastat_product/models/stock_warehouse.py @@ -0,0 +1,27 @@ +# Copyright 2009-2018 Noviat nv/sa (www.noviat.com). +# @author Alexis de Lattre +# @author Luc de Meyer + +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() + locations = self.search([("id", "parent_of", self.id)]) + warehouses = self.env["stock.warehouse"].search( + [("lot_stock_id", "in", locations.ids), ("region_id", "!=", False)] + ) + if warehouses: + return warehouses[0].region_id + return None diff --git a/intrastat_product/readme/CONTRIBUTORS.rst b/intrastat_product/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..51e1656 --- /dev/null +++ b/intrastat_product/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Alexis de Lattre, Akretion +* Luc De Meyer, Noviat diff --git a/intrastat_product/readme/DESCRIPTION.rst b/intrastat_product/readme/DESCRIPTION.rst new file mode 100644 index 0000000..1e413dc --- /dev/null +++ b/intrastat_product/readme/DESCRIPTION.rst @@ -0,0 +1,11 @@ +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.rst b/intrastat_product/readme/INSTALL.rst new file mode 100644 index 0000000..5b11a6a --- /dev/null +++ b/intrastat_product/readme/INSTALL.rst @@ -0,0 +1 @@ +This module is NOT compatible with the *account_intrastat* module from Odoo Enterprise. diff --git a/intrastat_product/readme/USAGE.rst b/intrastat_product/readme/USAGE.rst new file mode 100644 index 0000000..66ec809 --- /dev/null +++ b/intrastat_product/readme/USAGE.rst @@ -0,0 +1,33 @@ +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-block:: 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. diff --git a/intrastat_product/report/__init__.py b/intrastat_product/report/__init__.py new file mode 100644 index 0000000..94b3dbb --- /dev/null +++ b/intrastat_product/report/__init__.py @@ -0,0 +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 0000000..7664dd9 --- /dev/null +++ b/intrastat_product/report/intrastat_product_report_xls.py @@ -0,0 +1,237 @@ +# Copyright 2009-2020 Noviat +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import logging + +from odoo import models +from odoo.tools.translate import _, translate + +_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 _(self, src): + lang = self.env.context.get("lang", "en_US") + val = translate(self.env.cr, IR_TRANSLATION_NAME, "report", lang, src) or src + return val + + def _get_template(self, declaration): + + template = { + "product": { + "header": {"type": "string", "value": self._("Product")}, + "line": { + "value": self._render("line.product_id and line.product_id.name") + }, + "width": 36, + }, + "product_origin_country": { + "header": {"type": "string", "value": self._("Product C/O")}, + "line": { + "type": "string", + "value": self._render("line.product_origin_country_id.name or ''"), + }, + "width": 28, + }, + "hs_code": { + "header": {"type": "string", "value": self._("Intrastat Code")}, + "line": { + "type": "string", + "value": self._render("line.hs_code_id.local_code"), + }, + "width": 14, + }, + "src_dest_country": { + "header": { + "type": "string", + "value": self._("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": self._("Fiscal Value"), + "format": self.format_theader_yellow_right, + }, + "line": { + "type": "number", + "value": self._render("line.amount_company_currency"), + "format": self.format_tcell_amount_right, + }, + "width": 18, + }, + "accessory_cost": { + "header": { + "type": "string", + "value": self._("Accessory Costs"), + "format": self.format_theader_yellow_right, + }, + "line": { + "type": "number", + "value": self._render( + "line.amount_accessory_cost_company_currency" + ), + "format": self.format_tcell_amount_right, + }, + "width": 18, + }, + "transaction": { + "header": {"type": "string", "value": self._("Intrastat Transaction")}, + "line": {"value": self._render("line.transaction_id.display_name")}, + "width": 36, + }, + "weight": { + "header": { + "type": "string", + "value": self._("Weight"), + "format": self.format_theader_yellow_right, + }, + "line": { + "type": "number", + "value": self._render("line.weight"), + "format": self.format_tcell_amount_right, + }, + "width": 18, + }, + "suppl_unit_qty": { + "header": { + "type": "string", + "value": self._("Suppl. Unit Qty"), + "format": self.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": self.format_tcell_amount_right, + }, + "width": 18, + }, + "suppl_unit": { + "header": {"type": "string", "value": self._("Suppl. Unit")}, + "line": {"value": self._render("line.intrastat_unit_id.name or ''")}, + "width": 14, + }, + "incoterm": { + "header": {"type": "string", "value": self._("Incoterm")}, + "line": {"value": self._render("line.incoterm_id.name or ''")}, + "width": 14, + }, + "transport": { + "header": {"type": "string", "value": self._("Transport Mode")}, + "line": {"value": self._render("line.transport_id.name or ''")}, + "width": 14, + }, + "region": { + "header": {"type": "string", "value": self._("Intrastat Region")}, + "line": {"value": self._render("line.region_id.name or ''")}, + "width": 28, + }, + "invoice": { + "header": {"type": "string", "value": self._("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, declaration): + template = self._get_template(declaration) + if self.env.context.get("computation_lines"): + wl = declaration._xls_computation_line_fields() + report = "computation" + else: + wl = declaration._xls_declaration_line_fields() + report = "declaration" + + title = self._get_title(declaration, report, title_format="normal") + title_short = self._get_title(declaration, report, title_format="short") + sheet_name = title_short[:31].replace("/", "-") + + params = { + "ws_name": sheet_name, + "generate_ws_method": "_intrastat_report", + "title": title, + "wanted_list": wl, + "col_specs": template, + } + return [params] + + def _get_title(self, declaration, report, title_format="normal"): + title = declaration.year_month + if title_format == "normal": + if report == "computation": + title += " : " + _("Computation Lines") + else: + title += " : " + _("Declaration Lines") + return title + + 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, self.format_left_bold) + + def _intrastat_report(self, workbook, ws, ws_params, data, declaration): + + ws.set_landscape() + ws.fit_to_pages(1, 0) + ws.set_header(self.xls_headers["standard"]) + ws.set_footer(self.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 self.env.context.get("computation_lines"): + report = "computation" + lines = declaration.computation_line_ids + else: + report = "declaration" + lines = declaration.declaration_line_ids + + 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=self.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=self.format_tcell_left, + ) diff --git a/intrastat_product/security/intrastat_security.xml b/intrastat_product/security/intrastat_security.xml new file mode 100644 index 0000000..edae4dd --- /dev/null +++ b/intrastat_product/security/intrastat_security.xml @@ -0,0 +1,22 @@ + + + + + Intrastat Transaction Company rule + + ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])] + + + + Intrastat Region Company rule + + ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])] + + + + Intrastat Product Declaration Company rule + + ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])] + + + diff --git a/intrastat_product/security/ir.model.access.csv b/intrastat_product/security/ir.model.access.csv new file mode 100644 index 0000000..bd1ca7c --- /dev/null +++ b/intrastat_product/security/ir.model.access.csv @@ -0,0 +1,13 @@ +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 everybody,model_intrastat_unit,,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 everybody,model_intrastat_transaction,,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 everybody,model_intrastat_transport_mode,,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,model_intrastat_region,,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_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_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_declaration_line,Full access on Intrastat Product Declaration Lines to Accountant,model_intrastat_product_declaration_line,account.group_account_user,1,1,1,1 diff --git a/intrastat_product/static/description/icon.png b/intrastat_product/static/description/icon.png new file mode 100644 index 0000000..3a0328b 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 0000000..6312b6b --- /dev/null +++ b/intrastat_product/static/description/index.html @@ -0,0 +1,467 @@ + + + + + + +Intrastat Product + + + +
+

Intrastat Product

+ + +

Beta License: AGPL-3 OCA/intrastat-extrastat Translate me on Weblate Try me on Runbot

+

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

+ +
+

Installation

+

This module is NOT compatible with the account_intrastat module from Odoo Enterprise.

+
+
+

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:

    +
    +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.

    +
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • brain-tec AG
  • +
  • Akretion
  • +
  • Noviat
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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 project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/intrastat_product/views/account_move.xml b/intrastat_product/views/account_move.xml new file mode 100644 index 0000000..9f28158 --- /dev/null +++ b/intrastat_product/views/account_move.xml @@ -0,0 +1,24 @@ + + + + + intrastat.invoice.form + account.move + + + + + + + + + + + + + + + + diff --git a/intrastat_product/views/hs_code.xml b/intrastat_product/views/hs_code.xml new file mode 100644 index 0000000..a48d6c1 --- /dev/null +++ b/intrastat_product/views/hs_code.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + intrastat.hs.code.tree + hs.code + + + + + + + + + + + intrastat.hs.code.form + hs.code + + + + + + + + + diff --git a/intrastat_product/views/intrastat_product_declaration.xml b/intrastat_product/views/intrastat_product_declaration.xml new file mode 100644 index 0000000..095f14d --- /dev/null +++ b/intrastat_product/views/intrastat_product_declaration.xml @@ -0,0 +1,277 @@ + + + + + intrastat.product.declaration.form + intrastat.product.declaration + +
+
+
+ +
+

+ Intrastat Product Declaration + +

+
+ + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ +
+
+ + + +
+ + + +
+
+
+ + +
+
+
+
+ + + intrastat.product.declaration.tree + intrastat.product.declaration + + + + + + + + + + + + + + + intrastat.product.declaration.search + intrastat.product.declaration + + + + + + + + + + + + + + + + intrastat.product.declaration.graph + intrastat.product.declaration + + + + + + + + + + + intrastat.product.declaration.pivot + intrastat.product.declaration + + + + + + + + + + + + + + intrastat.product.computation.line.form + intrastat.product.computation.line + +
+ + + + + + + + + + + + + +
+
+
+ + + intrastat.product.computation.line.tree + intrastat.product.computation.line + + + + + + + + + + + + + + + + + + + + + + + + intrastat.product.declaration.line.form + intrastat.product.declaration.line + +
+ + + + + + + + + + + +
+
+
+ + + intrastat.product.declaration.line.tree + intrastat.product.declaration.line + + + + + + + + + + + + + + + + + + + + + +
diff --git a/intrastat_product/views/intrastat_region.xml b/intrastat_product/views/intrastat_region.xml new file mode 100644 index 0000000..648209f --- /dev/null +++ b/intrastat_product/views/intrastat_region.xml @@ -0,0 +1,44 @@ + + + + + intrastat.region.form + intrastat.region + +
+ + + + + + + +
+
+
+ + + intrastat.region.tree + intrastat.region + + + + + + + + + + + + + Intrastat Regions + intrastat.region + tree,form + + + + +
diff --git a/intrastat_product/views/intrastat_transaction.xml b/intrastat_product/views/intrastat_transaction.xml new file mode 100644 index 0000000..c1c319d --- /dev/null +++ b/intrastat_product/views/intrastat_transaction.xml @@ -0,0 +1,65 @@ + + + + + + + + intrastat.transaction_form + intrastat.transaction + +
+ + + + + +
+
+
+ + + intrastat.transaction_tree + intrastat.transaction + + + + + + + + + + + intrastat.transaction.mode.search + intrastat.transaction + + + + + + + + + + + + Transaction Types + intrastat.transaction + tree,form + + + + +
diff --git a/intrastat_product/views/intrastat_transport_mode.xml b/intrastat_product/views/intrastat_transport_mode.xml new file mode 100644 index 0000000..6398a82 --- /dev/null +++ b/intrastat_product/views/intrastat_transport_mode.xml @@ -0,0 +1,61 @@ + + + + + + + + intrastat.transport.mode.form + intrastat.transport_mode + +
+ + + + + +
+
+
+ + + intrastat.transport.mode.tree + intrastat.transport_mode + + + + + + + + + + + intrastat.transport.mode.search + intrastat.transport_mode + + + + + + + + + Transport Modes + intrastat.transport_mode + tree,form + + + + +
diff --git a/intrastat_product/views/intrastat_unit.xml b/intrastat_product/views/intrastat_unit.xml new file mode 100644 index 0000000..073b7ca --- /dev/null +++ b/intrastat_product/views/intrastat_unit.xml @@ -0,0 +1,71 @@ + + + + + + + + intrastat.unit.form + intrastat.unit + +
+ + + + + + + + +
+
+ + + intrastat.unit.tree + intrastat.unit + + + + + + + + + + + intrastat.unit.search + intrastat.unit + + + + + + + + + + + + + + Supplementary Units + intrastat.unit + tree,form + + + + +
diff --git a/intrastat_product/views/res_config_settings.xml b/intrastat_product/views/res_config_settings.xml new file mode 100644 index 0000000..f548e2b --- /dev/null +++ b/intrastat_product/views/res_config_settings.xml @@ -0,0 +1,78 @@ + + + + + + intrastat.account.config.settings.form + res.config.settings + + + + + + + + +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+
+ + + + + + + diff --git a/intrastat_product/views/sale_order.xml b/intrastat_product/views/sale_order.xml new file mode 100644 index 0000000..4e3a5cd --- /dev/null +++ b/intrastat_product/views/sale_order.xml @@ -0,0 +1,20 @@ + + + + + + intrastat.sale.order.form + sale.order + + + + + + + + + + + diff --git a/intrastat_product/views/stock_warehouse.xml b/intrastat_product/views/stock_warehouse.xml new file mode 100644 index 0000000..f9b1825 --- /dev/null +++ b/intrastat_product/views/stock_warehouse.xml @@ -0,0 +1,15 @@ + + + + + intrastat.stock.warehouse.form + stock.warehouse + + + + + + + + + diff --git a/intrastat_product_generic/README.rst b/intrastat_product_generic/README.rst new file mode 100644 index 0000000..4c2c184 --- /dev/null +++ b/intrastat_product_generic/README.rst @@ -0,0 +1,74 @@ +===================================== +Generic Intrastat Product Declaration +===================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/12.0/intrastat_product_generic + :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-12-0/intrastat-extrastat-12-0-intrastat_product_generic + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/227/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module adds a menu entry for a Generic Intrastat Product Declaration. +This is useful to cover countries for which there is no localization module. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Noviat + +Contributors +~~~~~~~~~~~~ + +* Luc De Meyer + +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 `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/intrastat_product_generic/__init__.py b/intrastat_product_generic/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/intrastat_product_generic/__manifest__.py b/intrastat_product_generic/__manifest__.py new file mode 100644 index 0000000..7a136d1 --- /dev/null +++ b/intrastat_product_generic/__manifest__.py @@ -0,0 +1,14 @@ +# Copyright 2009-2020 Noviat. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Generic Intrastat Product Declaration", + "version": "13.0.1.0.0", + "category": "Accounting & Finance", + "website": "https://github.com/OCA/intrastat", + "author": "Noviat," "Odoo Community Association (OCA)", + "license": "AGPL-3", + "installable": True, + "depends": ["intrastat_product"], + "data": ["security/intrastat_security.xml", "views/intrastat_product.xml"], +} diff --git a/intrastat_product_generic/i18n/intrastat_product_generic.pot b/intrastat_product_generic/i18n/intrastat_product_generic.pot new file mode 100644 index 0000000..2cab963 --- /dev/null +++ b/intrastat_product_generic/i18n/intrastat_product_generic.pot @@ -0,0 +1,22 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * intrastat_product_generic +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.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_generic +#: model:ir.actions.act_window,name:intrastat_product_generic.intrastat_product_declaration_action_generic +#: model:ir.ui.menu,name:intrastat_product_generic.intrastat_product_declaration_menu_generic +#: model:res.groups,name:intrastat_product_generic.group_intrastat_product_generic +msgid "Generic Intrastat Product Declaration" +msgstr "" + diff --git a/intrastat_product_generic/readme/CONTRIBUTORS.rst b/intrastat_product_generic/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..044d1a0 --- /dev/null +++ b/intrastat_product_generic/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Luc De Meyer diff --git a/intrastat_product_generic/readme/DESCRIPTION.rst b/intrastat_product_generic/readme/DESCRIPTION.rst new file mode 100644 index 0000000..22680af --- /dev/null +++ b/intrastat_product_generic/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module adds a menu entry for a Generic Intrastat Product Declaration. +This is useful to cover countries for which there is no localization module. diff --git a/intrastat_product_generic/security/intrastat_security.xml b/intrastat_product_generic/security/intrastat_security.xml new file mode 100644 index 0000000..5948c81 --- /dev/null +++ b/intrastat_product_generic/security/intrastat_security.xml @@ -0,0 +1,12 @@ + + + + + Generic Intrastat Product Declaration + + + + + + + diff --git a/intrastat_product_generic/static/description/icon.png b/intrastat_product_generic/static/description/icon.png new file mode 100644 index 0000000..3a0328b Binary files /dev/null and b/intrastat_product_generic/static/description/icon.png differ diff --git a/intrastat_product_generic/static/description/index.html b/intrastat_product_generic/static/description/index.html new file mode 100644 index 0000000..0134a71 --- /dev/null +++ b/intrastat_product_generic/static/description/index.html @@ -0,0 +1,420 @@ + + + + + + +Generic Intrastat Product Declaration + + + +
+

Generic Intrastat Product Declaration

+ + +

Beta License: AGPL-3 OCA/intrastat-extrastat Translate me on Weblate Try me on Runbot

+

This module adds a menu entry for a Generic Intrastat Product Declaration. +This is useful to cover countries for which there is no localization module.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Noviat
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

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 project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/intrastat_product_generic/views/intrastat_product.xml b/intrastat_product_generic/views/intrastat_product.xml new file mode 100644 index 0000000..91d46f8 --- /dev/null +++ b/intrastat_product_generic/views/intrastat_product.xml @@ -0,0 +1,16 @@ + + + + + Generic Intrastat Product Declaration + intrastat.product.declaration + tree,form,graph,pivot + {'generic_intrastat_product_declaration': 1} + + + + + diff --git a/oca_dependencies.txt b/oca_dependencies.txt new file mode 100644 index 0000000..6da85e0 --- /dev/null +++ b/oca_dependencies.txt @@ -0,0 +1 @@ +reporting-engine