From 4bcc8c9546bf4be8163ff715ba45e4d120d22a29 Mon Sep 17 00:00:00 2001 From: Lara Baggio Date: Thu, 6 Jun 2019 15:25:29 +0200 Subject: [PATCH 01/61] porting l10n_it_intrastat to 11 --- l10n_it_intrastat_statement/__init__.py | 12 + l10n_it_intrastat_statement/__manifest__.py | 62 + l10n_it_intrastat_statement/data/sequence.xml | 14 + l10n_it_intrastat_statement/i18n/it.po | 1107 +++++++++ .../models/__init__.py | 12 + l10n_it_intrastat_statement/models/config.py | 18 + .../models/intrastat.py | 2181 +++++++++++++++++ .../security/ir.model.access.csv | 11 + .../security/rules.xml | 11 + .../static/description/icon.png | Bin 0 -> 6821 bytes l10n_it_intrastat_statement/views/config.xml | 19 + .../views/intrastat.xml | 539 ++++ .../wizard/__init__.py | 10 + .../wizard/export_file.py | 56 + .../wizard/export_file_view.xml | 48 + 15 files changed, 4100 insertions(+) create mode 100644 l10n_it_intrastat_statement/__init__.py create mode 100644 l10n_it_intrastat_statement/__manifest__.py create mode 100644 l10n_it_intrastat_statement/data/sequence.xml create mode 100644 l10n_it_intrastat_statement/i18n/it.po create mode 100644 l10n_it_intrastat_statement/models/__init__.py create mode 100644 l10n_it_intrastat_statement/models/config.py create mode 100644 l10n_it_intrastat_statement/models/intrastat.py create mode 100644 l10n_it_intrastat_statement/security/ir.model.access.csv create mode 100644 l10n_it_intrastat_statement/security/rules.xml create mode 100644 l10n_it_intrastat_statement/static/description/icon.png create mode 100644 l10n_it_intrastat_statement/views/config.xml create mode 100644 l10n_it_intrastat_statement/views/intrastat.xml create mode 100644 l10n_it_intrastat_statement/wizard/__init__.py create mode 100644 l10n_it_intrastat_statement/wizard/export_file.py create mode 100644 l10n_it_intrastat_statement/wizard/export_file_view.xml diff --git a/l10n_it_intrastat_statement/__init__.py b/l10n_it_intrastat_statement/__init__.py new file mode 100644 index 000000000000..ccec88119861 --- /dev/null +++ b/l10n_it_intrastat_statement/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# +# Author: Alessandro Camilli (a.camilli@openforce.it) +# Copyright (C) 2015 +# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it +# Openforce di Camilli Alessandro - www.openforce.it +# + + +from . import models +from . import wizard + diff --git a/l10n_it_intrastat_statement/__manifest__.py b/l10n_it_intrastat_statement/__manifest__.py new file mode 100644 index 000000000000..bf66f787d060 --- /dev/null +++ b/l10n_it_intrastat_statement/__manifest__.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +# +# Author: Alessandro Camilli (a.camilli@openforce.it) +# Copyright (C) 2015 +# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it +# Openforce di Camilli Alessandro - www.openforce.it +# LinkIt Srl () +# +# Odoo Proprietary License v1.0 +# +# This software and associated files (the "Software") may only be used +# (executed, modified, executed after modifications) if you have purchased a +# valid license from the authors, typically via Odoo Apps, or if you have +# received a written agreement from the authors of the Software +# +# You may develop Odoo modules that use the Software as a library (typically by +# depending on it, importing it and using its resources), but without copying +# any source code or material from the Software. You may distribute those +# modules under the license of your choice, provided that this license is +# compatible with the terms of the Odoo Proprietary License (For example: +# LGPL, MIT, or proprietary licenses similar to this one). +# +# It is forbidden to publish, distribute, sublicense, or sell copies of the +# Software or modified copies of the Software. +# +# The above copyright notice and this permission notice must be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +{ + 'name': 'Account - Intrastat Declaration', + 'version': '10.0.1.0.0', + 'category': 'Account', + 'description': """ + Intrastat Declaration and export file. + """, + 'author': 'Openforce di Alessandro Camilli per Apulia Software srl' + ', Lara Baggio per Link IT srl', + 'website': 'http://apuliasoftware.it/', + 'license': 'Other proprietary', + "depends": [ + 'l10n_it_intrastat', + ], + "data": [ + 'data/sequence.xml', + 'security/ir.model.access.csv', + 'security/rules.xml', + 'wizard/export_file_view.xml', + 'views/config.xml', + 'views/intrastat.xml', + ], + "demo": [], + "installable": True +} + diff --git a/l10n_it_intrastat_statement/data/sequence.xml b/l10n_it_intrastat_statement/data/sequence.xml new file mode 100644 index 000000000000..8ae5dc94f31b --- /dev/null +++ b/l10n_it_intrastat_statement/data/sequence.xml @@ -0,0 +1,14 @@ + + + + + + + Intrastat Statement Sequence + intrastat.statement.sequence + + + + + + \ No newline at end of file diff --git a/l10n_it_intrastat_statement/i18n/it.po b/l10n_it_intrastat_statement/i18n/it.po new file mode 100644 index 000000000000..0c3fbb57d332 --- /dev/null +++ b/l10n_it_intrastat_statement/i18n/it.po @@ -0,0 +1,1107 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_it_intrastat_statement +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-06 08:56+0000\n" +"PO-Revision-Date: 2017-12-06 08:56+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: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement +msgid "Account INTRASTAT - Statement" +msgstr "Dichiarazione Intrastat" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section1 +msgid "Account INTRASTAT - Statement - Purchase Section 1" +msgstr "Dichiarazione Intrastat - Acquisti sez. 1" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section2 +msgid "Account INTRASTAT - Statement - Purchase Section 2" +msgstr "Dichiarazione Intrastat - Acquisti sez. 2" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section3 +msgid "Account INTRASTAT - Statement - Purchase Section 3" +msgstr "Dichiarazione Intrastat - Acquisti sez. 3" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section4 +msgid "Account INTRASTAT - Statement - Purchase Section 4" +msgstr "Dichiarazione Intrastat - Acquisti sez. 4" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section1 +msgid "Account INTRASTAT - Statement - Sale Section 1" +msgstr "Dichiarazione Intrastat - Vendite sez. 1" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section2 +msgid "Account INTRASTAT - Statement - Sale Section 2" +msgstr "Dichiarazione Intrastat - Vendite sez. 2" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section3 +msgid "Account INTRASTAT - Statement - Sale Section 3" +msgstr "Dichiarazione Intrastat - Vendite sez. 3" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section4 +msgid "Account INTRASTAT - Statement - Sale Section 4" +msgstr "Dichiarazione Intrastat - Vendite sez. 4" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,payment_method:0 +#: selection:account.intrastat.statement.purchase.section4,payment_method:0 +#: selection:account.intrastat.statement.sale.section3,payment_method:0 +#: selection:account.intrastat.statement.sale.section4,payment_method:0 +msgid "Accreditation" +msgstr "Accredito" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_additional_units +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_additional_units +msgid "Additional Units" +msgstr "Unità supplementari" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_additional_units_required +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_additional_units_required +msgid "Additional Units Required" +msgstr "Unità Aggiuntive Obbligatorie" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_additional_units_uom +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_additional_units_uom +msgid "Additional Units UOM" +msgstr "Unità di misura aggiuntive" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_type_data:0 +msgid "All (Fiscal and Statistic" +msgstr "Tutte (Fiscali e statistici)" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_amount_currency +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_amount_currency +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_amount_currency +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_amount_currency +msgid "Amount Currency" +msgstr "Importo valuta" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_amount_euro +msgid "Amount Euro" +msgstr "Importo in Euro" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Cancel" +msgstr "Annulla" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,content_type:0 +msgid "Change Period in quarterly: only first and second month operations" +msgstr "Cambio di periodicità - le operazioni riepilogate nell’elenco trimestrale sono riferite al primo e al secondo mese" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,content_type:0 +msgid "Change Period in quarterly: only first month operations" +msgstr "Cambio di periodicità - le operazioni riepilogate nell’elenco trimestrale sono riferite solo al primo mese" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,special_cases:0 +msgid "Change VAT or Close Activity" +msgstr "Cessazione di attività o variazione della partita IVA" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Close" +msgstr "Chiudi" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_intrastat_code_type +msgid "Code Type" +msgstr "Tipo codice" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_res_company +msgid "Companies" +msgstr "Aziende" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_company_id +msgid "Company" +msgstr "Azienda" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_content_type +msgid "Content Type" +msgstr "Contenuto degli elenchi" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_country_partner_id +msgid "Country Customer" +msgstr "Nazione acquirente" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_country_destination_id +msgid "Country Destination" +msgstr "Nazione destinazione" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_country_good_origin_id +msgid "Country Good Origin" +msgstr "Nazione Origine Merce" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_country_origin_id +msgid "Country Origin" +msgstr "Nazione origine" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_country_partner_id +msgid "Country Partner" +msgstr "Nazione Partner" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_country_payment_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_country_payment_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_country_payment_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_country_payment_id +msgid "Country Payment" +msgstr "Nazione pagamento" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_create_date +msgid "Created on" +msgstr "Creato il" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_custom_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_custom_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_custom_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_res_company_intrastat_custom_id +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_custom_view_form +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_custom_view_tree +msgid "Custom" +msgstr "Sezione doganale" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_intrastat_type_data +msgid "Data Type" +msgstr "Tipo dati" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_delivery_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_delivery_code_id +msgid "Delivery" +msgstr "Consegna" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_display_name +msgid "Display Name" +msgstr "Nome Visualizzato" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Export Complete" +msgstr "Esportazione Completata" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Export File" +msgstr "Export File" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/wizard/export_file.py:47 +#: model:ir.actions.act_window,name:l10n_it_intrastat_statement.action_wizard_wizard_account_intrastat_export_file +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +#, python-format +msgid "Export Intrastat File" +msgstr "Export Intrastat File" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Export acquisti.cee" +msgstr "Export acquisti.cee" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Export cessioni.cee" +msgstr "Export cessioni.cee" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Export file invio" +msgstr "Export file invio" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_data +msgid "File" +msgstr "File" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_name +msgid "File Name" +msgstr "Nome File" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,special_cases:0 +msgid "First Statement" +msgstr "Primo elenco presentato" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,special_cases:0 +msgid "First Statement in Change VAT or Close Activity" +msgstr "Primo elenco presentato da un soggetto che, nel periodo di riferimento ha, contestualmente, cessato l’attività oppure ha variato la propria partita IVA riferite solo al primo mese" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_type_data:0 +msgid "Fiscal" +msgstr "Fiscale" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_code_type:0 +msgid "Good" +msgstr "Merce" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Goods Purchase - Section 1" +msgstr "Acquisti Merci - Section 1" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Goods Refund - Section 2" +msgstr "Rettifica Merci - Section 2" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Goods Refund Purchase - Section 2" +msgstr "Rettifica Merci - Section 2" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Goods Sale - Section 1" +msgstr "Vendita Merci - Section 1" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Group By" +msgstr "Raggruppa per" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Here is the exported file:" +msgstr "Ecco il file esportato:" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_id +msgid "ID" +msgstr "ID" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_tree_view +msgid "INTRASTAT Statement" +msgstr "INTRASTAT Dichiarazione" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,supply_method:0 +#: selection:account.intrastat.statement.purchase.section4,supply_method:0 +#: selection:account.intrastat.statement.sale.section3,supply_method:0 +#: selection:account.intrastat.statement.sale.section4,supply_method:0 +msgid "Instant" +msgstr "istantanea" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_intrastat_code_id +msgid "Intrastat Code Good" +msgstr "Intrastat Nomenclatura Merce" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_intrastat_code_id +msgid "Intrastat Code Service" +msgstr "Intrastat Nomenclatura Servizi" + +#. module: l10n_it_intrastat_statement +#: model:ir.actions.act_window,name:l10n_it_intrastat_statement.account_intrastat_statement_action +#: model:ir.ui.menu,name:l10n_it_intrastat_statement.menu_account_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Intrastat Statements" +msgstr "Dichiarazioni Intrastat" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_id +msgid "Invoice" +msgstr "Fattura" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_invoice_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_date +msgid "Invoice Date" +msgstr "Data fattura" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_invoice_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_number +msgid "Invoice Number" +msgstr "Numero Fattura" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:927 +#, python-format +msgid "Invoice and refund in the same period with refound > invoice for partner %s" +msgstr "Fatture e nota credito nello stesso periodo con rettifica > valore fattura per il partner %s" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4___last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_write_uid +msgid "Last Updated by" +msgstr "Ultima modifica di" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_write_date +msgid "Last Updated on" +msgstr "Ultima modifica il" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2118 +#, python-format +msgid "Missing Country Payment on Purchase Section 4" +msgstr "Manca Paese pagamento su Acquisti Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1490 +#, python-format +msgid "Missing Country Payment on Sale Section 4" +msgstr "Manca Paese pagamento su Vendite Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2106 +#, python-format +msgid "Missing Invoice data on Purchase Section 4" +msgstr "Manca data fattura su Acquisti Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1478 +#, python-format +msgid "Missing Invoice data on Sale Section 4" +msgstr "Manca data fattura su Vendite Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1831 +#, python-format +msgid "Missing Month Ref Variation on Purchase Section 2" +msgstr "Manca il mese di riferimento nella varazione degli acquisti nella sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1227 +#, python-format +msgid "Missing Month Ref Variation on Sale Section 2" +msgstr "Manca il mese di riferimento nella varazione delle vendite nella sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2114 +#, python-format +msgid "Missing Payment method on Purchase Section 4" +msgstr "Manca metodo di pagamento su Acquisti Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1486 +#, python-format +msgid "Missing Payment method on Sale Section 4" +msgstr "Manca metodo di pagamento su Vendite Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2102 +#, python-format +msgid "Missing Progressive to modity on Purchase Section 4" +msgstr "Manca progressivo da modificare su Acquisti Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1474 +#, python-format +msgid "Missing Progressive to modity on Sale Section 4" +msgstr "Manca progressivo da modificare su Vendite Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1835 +#, python-format +msgid "Missing Quarterly Ref Variation on Purchase Section 2" +msgstr "Manca il trimestre di riferimento nella varazione degli acquisti nella sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1231 +#, python-format +msgid "Missing Quarterly Ref Variation on Sale Section 2" +msgstr "Manca il trimestre di riferimento nella varazione delle vendite nella sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1826 +#, python-format +msgid "Missing Sign Variation on Purchase Section 2" +msgstr "Manca il segno nella variazione degli acquisti sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1222 +#, python-format +msgid "Missing Sign Variation on Sale Section 2" +msgstr "Manca il segno nella variazione nelle vendite sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2110 +#, python-format +msgid "Missing Supply method on Purchase Section 4" +msgstr "Manca Modalità di erogazione su Acquisti sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1482 +#, python-format +msgid "Missing Supply method on Sale Section 4" +msgstr "Manca Modalità di erogazione su Vendite sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1675 +#, python-format +msgid "Missing Vat code for %s in Purchase Section 1" +msgstr "Missing Vat code for %s in Purchase Section 1" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1817 +#, python-format +msgid "Missing Vat code for %s in Purchase Section 2" +msgstr "Manca codice IVA per %s in Acquisti Sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1953 +#, python-format +msgid "Missing Vat code for %s in Purchase Section 3" +msgstr "Manca codice IVA per %s in Acquisti Sezione 3" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2085 +#, python-format +msgid "Missing Vat code for %s in Purchase Section 4" +msgstr "Manca codice IVA per %s in Acquisti Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1079 +#, python-format +msgid "Missing Vat code for %s in Sale Section 1" +msgstr "Manca codice IVA per %s in Vendite Sezione 1" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1213 +#, python-format +msgid "Missing Vat code for %s in Sale Section 2" +msgstr "Manca codice IVA per %s in Vendite Sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1336 +#, python-format +msgid "Missing Vat code for %s in Sale Section 3" +msgstr "Manca codice IVA per %s in Vendite Sezione 3" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1457 +#, python-format +msgid "Missing Vat code for %s in Sale Section 4" +msgstr "Manca codice IVA per %s in Vendite Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1822 +#, python-format +msgid "Missing Year Ref on Purchase Section 2" +msgstr "Manca l'anno di rifermento nella variazione degli acquisti sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2090 +#, python-format +msgid "Missing Year Ref on Purchase Section 4" +msgstr "Manca l'anno di rifermento nella variazione degli acquisti sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1218 +#, python-format +msgid "Missing Year Ref on Sale Section 2" +msgstr "Manca l'anno di rifermento nella variazione delle vendite sezione 2" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1462 +#, python-format +msgid "Missing Year Ref on Sale Section 4" +msgstr "Manca l'anno di rifermento nella variazione delle vendite sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2094 +#, python-format +msgid "Missing custom on Purchase Section 4" +msgstr "Manca sezione doganale su Acquisti Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1466 +#, python-format +msgid "Missing custom on Sale Section 4" +msgstr "Manca sezione doganale su Vendite Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2098 +#, python-format +msgid "Missing protocol on Purchase Section 4" +msgstr "Manca Protocollo in Acquisti Sezione 4" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1470 +#, python-format +msgid "Missing protocol on Sale Section 4" +msgstr "Manca Protocollo in Vendite Sezione 4" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,period_type:0 +msgid "Month" +msgstr "Mese" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_month +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_month +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_month +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_month +msgid "Month Ref of Refund" +msgstr "Mese di riferimento del riepilogo da rettificare" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_name_delegate +msgid "Name delegate" +msgstr "Name delegate" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,special_cases:0 +msgid "None of the above cases" +msgstr "Nessuno dei casi precedenti" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,content_type:0 +msgid "Normal Period" +msgstr "Periodo Normale" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:683 +#, python-format +msgid "Nothing to export" +msgstr "Nulla da esportare" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_number +msgid "Number" +msgstr "Numero" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_operation_amount +msgid "Operation Amount" +msgstr "Importo Operazioni" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_operation_number +msgid "Operation Nr" +msgstr "Nr Operazioni" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,payment_method:0 +#: selection:account.intrastat.statement.purchase.section4,payment_method:0 +#: selection:account.intrastat.statement.sale.section3,payment_method:0 +#: selection:account.intrastat.statement.sale.section4,payment_method:0 +msgid "Other" +msgstr "Altro" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_partner_id +msgid "Partner" +msgstr "Partner" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1517 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2145 +#, python-format +msgid "Partner without Country" +msgstr "Partner senza nazione" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_payment_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_payment_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_payment_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_payment_method +msgid "Payment Method" +msgstr "Metodo di pagamento" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_period_number +msgid "Period" +msgstr "Periodo" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:962 +#, python-format +msgid "Period Not Valid! Range accepted: from 1 to 12" +msgstr "Periodo non valido! (Solo da 1 to 12 )" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:966 +#, python-format +msgid "Period Not Valid! Range accepted: from 1 to 4" +msgstr "Periodo non valido! (solo da 1 a 4)" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_period_type +msgid "Period Type" +msgstr "Tipo periodo" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_sequence +msgid "Progressive" +msgstr "Progressive" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_progressive_to_modify +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_progressive_to_modify_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_progressive_to_modify +msgid "Progressive to Modify" +msgstr "Progressivo della sezione 3 da rettificare" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_protocol +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_protocol +msgid "Protocol number" +msgstr "Protocollo della dichiarazione da rettificare" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_province_destination_id +msgid "Province Destination" +msgstr "Provincia di Destinazione" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_province_origin_id +msgid "Province Origin" +msgstr "Provincia di Origine" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Purchase" +msgstr "Acquisti" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_ids +msgid "Purchase - Section 1" +msgstr "Acquisti - Sezione 1" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_ids +msgid "Purchase - Section 2" +msgstr "Acquisti - Sezione 2" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_ids +msgid "Purchase - Section 3" +msgstr "Acquisti - Sezione 3" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_ids +msgid "Purchase - Section 4" +msgstr "Acquisti - Sezione 4" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,period_type:0 +msgid "Quarterly" +msgstr "Trimestre" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_quarterly +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_quarterly +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_quarterly +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_quarterly +msgid "Quarterly Ref of Refund" +msgstr "Trimestre di riferimento del riepilogo da rettificare" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Recompute" +msgstr "Ricalcola" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,supply_method:0 +#: selection:account.intrastat.statement.purchase.section4,supply_method:0 +#: selection:account.intrastat.statement.sale.section3,supply_method:0 +#: selection:account.intrastat.statement.sale.section4,supply_method:0 +msgid "Repeatedly" +msgstr "A più riprese" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Sale" +msgstr "Vendite" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_ids +msgid "Sale - Section 1" +msgstr "Vendite - Sezione 1" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_ids +msgid "Sale - Section 2" +msgstr "Vendite - Sezione 2" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_ids +msgid "Sale - Section 3" +msgstr "Vendite - Sezione 3" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_ids +msgid "Sale - Section 4" +msgstr "Vendite - Sezione 4" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_code_type:0 +msgid "Service" +msgstr "Servizio" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Services Purchase - Section 3" +msgstr "Servizi Acquisti - Sezione 3" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Services Refund - Section 4" +msgstr "Rettifica Servizi - Sezioni 4" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Services Refund Purchase - Section 4" +msgstr "Rettifica Servizi - Sezione 4" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Services Sale - Section 3" +msgstr "Vendita Servizi - Sezione 3" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_sign_variation +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_sign_variation +msgid "Sign Variation" +msgstr "Segno Variazione" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_special_cases +msgid "Special Cases" +msgstr "Casi Speciali" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_state +msgid "State" +msgstr "Stato" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_statement_id +msgid "Statement" +msgstr "Dichiarazione" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_statement_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_statement_sequence +msgid "Statement Sequence" +msgstr "Statement Sequence" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:693 +#, python-format +msgid "Statement without lines" +msgstr "Statement without lines" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_type_data:0 +msgid "Statistic" +msgstr "Statistico" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_statistic_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_statistic_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_statistic_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_statistic_amount_euro +msgid "Statistic Amount Euro" +msgstr "Importo statistico Euro" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_date +msgid "Submission Date" +msgstr "Data Presentazione" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_supply_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_supply_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_supply_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_supply_method +msgid "Supply Method" +msgstr "Metodo di Approvvigionamento" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section1 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section2 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section3 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section4 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section1 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section2 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section3 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section4 +msgid "Total" +msgstr "Totale" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_transation_nature_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_transation_nature_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_transation_nature_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_transation_nature_id +msgid "Transation Nature" +msgstr "Natura transazione" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,payment_method:0 +#: selection:account.intrastat.statement.purchase.section4,payment_method:0 +#: selection:account.intrastat.statement.sale.section3,payment_method:0 +#: selection:account.intrastat.statement.sale.section4,payment_method:0 +msgid "Transfer" +msgstr "Transfer" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_transport_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_transport_code_id +msgid "Transport" +msgstr "Transporto" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,help:l10n_it_intrastat_statement.field_account_intrastat_statement_period_number +msgid "Values accepted: - Month : From 1 to 12 - Quarterly: From 1 to 4" +msgstr "Valori validi: -Mese: da 1 a 12 - Trimestre: da 1 a 4" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_vat_code +msgid "Vat Code Customer" +msgstr "Codice IVA Cliente" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_vat_code +msgid "Vat Code Partner" +msgstr "Codice IVA Partner" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_vat_delegate +msgid "Vat delegate" +msgstr "P.IVA delegato" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_vat_taxpayer +msgid "Vat taxpayer" +msgstr "P.IVA contribuente" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_weight_kg +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_weight_kg +msgid "Weight kg" +msgstr "Peso kg" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_fiscalyear +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Year" +msgstr "Anno" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_year_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_year_id +msgid "Year Ref of Refund" +msgstr "Anno Rif. rettifica" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_year_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_year_id +msgid "Year Ref of Variation" +msgstr "Anno Rif. di rettifica" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_export_file +msgid "account.intrastat.export.file" +msgstr "account.intrastat.export.file" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.export.file,state:0 +msgid "choose" +msgstr "choose" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.export.file,state:0 +msgid "get" +msgstr "get" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "or" +msgstr "o" + diff --git a/l10n_it_intrastat_statement/models/__init__.py b/l10n_it_intrastat_statement/models/__init__.py new file mode 100644 index 000000000000..28fbc1acf9e7 --- /dev/null +++ b/l10n_it_intrastat_statement/models/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# +# Author: Apruzzese Francesco (f.apruzzese@apuliasoftware.it) +# Copyright (C) 2015 +# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it +# Openforce di Camilli Alessandro - www.openforce.it +# + + +from . import config +from . import intrastat + diff --git a/l10n_it_intrastat_statement/models/config.py b/l10n_it_intrastat_statement/models/config.py new file mode 100644 index 000000000000..51d0ea2f0d0e --- /dev/null +++ b/l10n_it_intrastat_statement/models/config.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# +# Author: Alessandro Camilli (a.camilli@openforce.it) +# Copyright (C) 2015 +# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it +# Openforce di Camilli Alessandro - www.openforce.it +# + +from openerp import models, fields, api + + +class res_company(models.Model): + _inherit = 'res.company' + + intrastat_custom_id = fields.Many2one( + 'account.intrastat.custom', string='Custom' + ) + diff --git a/l10n_it_intrastat_statement/models/intrastat.py b/l10n_it_intrastat_statement/models/intrastat.py new file mode 100644 index 000000000000..80d8fee69576 --- /dev/null +++ b/l10n_it_intrastat_statement/models/intrastat.py @@ -0,0 +1,2181 @@ +# -*- coding: utf-8 -*- +# +# Author: Alessandro Camilli (a.camilli@openforce.it) +# Copyright (C) 2015 +# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it +# Openforce di Camilli Alessandro - www.openforce.it +# + + +from openerp import models, fields, api, _ +import openerp.addons.decimal_precision as dp +from openerp.exceptions import except_orm, ValidationError +from datetime import datetime, date, timedelta + + +class account_intrastat_statement(models.Model): + _name = 'account.intrastat.statement' + _description = 'Account INTRASTAT - Statement' + + @api.model + def _default_company(self): + company_id = self._context.get('company_id', + self.env.user.company_id.id) + return company_id + + @api.model + def _default_company_vat(self): + company_id = self._context.get( + 'company_id', self.env.user.company_id.id) + if company_id: + vat = self.company_id.partner_id.vat \ + and self.company_id.partner_id.vat[2:] or False + return vat + else: + return False + + @api.model + def _default_vat_delegate(self): + company_id = self.env.user.company_id + if company_id: + return company_id.intrastat_delegated_vat + else: + return False + + @api.model + def _default_name_delegate(self): + company_id = self.env.user.company_id + if company_id: + return company_id.intrastat_delegated_name + else: + return False + + @api.model + def _default_custom(self): + company_id = self.env.user.company_id + if company_id: + return company_id.intrastat_custom_id + + def round_min_amount(self, amount, company=None): + if company is None: + company = self.company_id + if amount < company.intrastat_min_amount: + return company.intrastat_min_amount + else: + return amount + + @api.one + @api.depends('sale_section1_ids.amount_euro') + def _compute_amount_sale_s1(self): + self.sale_section1_operation_number = len(self.sale_section1_ids) + self.sale_section1_operation_amount = sum( + line.amount_euro for line in self.sale_section1_ids) + + @api.one + @api.depends('sale_section2_ids.amount_euro') + def _compute_amount_sale_s2(self): + self.sale_section2_operation_number = len(self.sale_section2_ids) + amount_total = 0 + for line in self.sale_section2_ids: + if line.sign_variation == '-': + amount_total -= line.amount_euro + else: + amount_total += line.amount_euro + self.sale_section2_operation_amount = amount_total + + @api.one + @api.depends('sale_section3_ids.amount_euro') + def _compute_amount_sale_s3(self): + self.sale_section3_operation_number = len(self.sale_section3_ids) + self.sale_section3_operation_amount = sum( + line.amount_euro for line in self.sale_section3_ids) + + @api.one + @api.depends('sale_section4_ids.amount_euro') + def _compute_amount_sale_s4(self): + self.sale_section4_operation_number = len(self.sale_section4_ids) + self.sale_section4_operation_amount = sum( + line.amount_euro for line in self.sale_section4_ids) + + @api.one + @api.depends('purchase_section1_ids.amount_euro') + def _compute_amount_purchase_s1(self): + self.purchase_section1_operation_number = len( + self.purchase_section1_ids) + self.purchase_section1_operation_amount = sum( + line.amount_euro for line in self.purchase_section1_ids) + + @api.one + @api.depends('purchase_section2_ids.amount_euro') + def _compute_amount_purchase_s2(self): + self.purchase_section2_operation_number = len( + self.purchase_section2_ids) + amount_total = 0 + for line in self.purchase_section2_ids: + if line.sign_variation == '-': + amount_total -= line.amount_euro + else: + amount_total += line.amount_euro + self.purchase_section2_operation_amount = amount_total + + @api.one + @api.depends('purchase_section3_ids.amount_euro') + def _compute_amount_purchase_s3(self): + self.purchase_section3_operation_number = len( + self.purchase_section3_ids) + self.purchase_section3_operation_amount = sum( + line.amount_euro for line in self.purchase_section3_ids) + + @api.one + @api.depends('purchase_section4_ids.amount_euro') + def _compute_amount_purchase_s4(self): + self.purchase_section4_operation_number = len( + self.purchase_section4_ids) + self.purchase_section4_operation_amount = sum( + line.amount_euro for line in self.purchase_section4_ids) + + @api.model + def _compute_progressive(self): + ''' + Assign univoque progressive to statement + TODO: why not a sequence? + ''' + # From last statement + st = self.search([], order='number', limit=1) + if st: + return st.number+1 + else: + return 1 + + @api.model + def recompute_sequence_lines(self): + sections = [self.sale_section1_ids, + self.sale_section2_ids, + self.sale_section3_ids, + self.sale_section4_ids, + self.purchase_section1_ids, + self.purchase_section2_ids, + self.purchase_section3_ids, + self.purchase_section4_ids] + for section in sections: + sequence = 1 + for line in section: + line.sequence = sequence + sequence += 1 + + @api.model + def _get_sequence(self): + return self.env['ir.sequence'].get('intrastat.statement.sequence') + + number = fields.Integer( + string='Number', default=_compute_progressive) + date = fields.Date( + string='Submission Date', default=fields.Date.today(), required=True) + company_id = fields.Many2one( + 'res.company', string='Company', default=_default_company, + required=True) + vat_taxpayer = fields.Char( + string='Vat taxpayer', required=True, default=_default_company_vat) + vat_delegate = fields.Char(string='Vat delegate', + default=_default_vat_delegate) + name_delegate = fields.Char(string='Name delegate', + default=_default_name_delegate) + fiscalyear = fields.Integer(string='Year', required=True) + period_type = fields.Selection([ + ('M', 'Month'), + ('T', 'Quarterly'), + ], 'Period Type', required=True) + period_number = fields.Integer( + string='Period', + help="Values accepted:\ + - Month : From 1 to 12 \ + - Quarterly: From 1 to 4", required=True) + content_type = fields.Selection([ + ('0', 'Normal Period'), + ('8', 'Change Period in quarterly: only first month operations'), + ('9', 'Change Period in quarterly: only first and second month \ + operations'), + ], 'Content Type', required=True, default="0") + special_cases = fields.Selection([ + ('7', 'First Statement'), + ('8', 'Change VAT or Close Activity'), + ('9', 'First Statement in Change VAT or Close Activity'), + ('0', 'None of the above cases'), + ], 'Special Cases', required=True, default="0") + custom_id = fields.Many2one( + 'account.intrastat.custom', string='Custom', required=True, + default=_default_custom) + sale = fields.Boolean(string='Sale', default=True) + purchase = fields.Boolean(string='Purchase', default=True) + + intrastat_type_data = fields.Selection([ + ('all', 'All (Fiscal and Statistic'), + ('fiscal', 'Fiscal'), + ('statistic', 'Statistic'), + ], 'Data Type', required=True, default='all') + intrastat_code_type = fields.Selection([ + ('service', 'Service'), + ('good', 'Good') + ], 'Code Type', required=True, default='good') + + sale_statement_sequence = fields.Integer( + string='Statement Sequence', + default=_get_sequence) + sale_section1_ids = fields.One2many( + 'account.intrastat.statement.sale.section1', + 'statement_id', string='Sale - Section 1') + sale_section1_operation_number = fields.Integer( + string='Operation Nr', store=True, readonly=True, + compute='_compute_amount_sale_s1') + sale_section1_operation_amount = fields.Integer( + string='Operation Amount', store=True, readonly=True, + compute='_compute_amount_sale_s1') + sale_section2_ids = fields.One2many( + 'account.intrastat.statement.sale.section2', + 'statement_id', string='Sale - Section 2') + sale_section2_operation_number = fields.Integer( + string='Operation Nr', store=True, readonly=True, + compute='_compute_amount_sale_s2') + sale_section2_operation_amount = fields.Integer( + string='Operation Amount', store=True, readonly=True, + compute='_compute_amount_sale_s2') + sale_section3_ids = fields.One2many( + 'account.intrastat.statement.sale.section3', + 'statement_id', string='Sale - Section 3') + sale_section3_operation_number = fields.Integer( + string='Operation Nr', store=True, readonly=True, + compute='_compute_amount_sale_s3') + sale_section3_operation_amount = fields.Integer( + string='Operation Amount', store=True, readonly=True, + compute='_compute_amount_sale_s3') + sale_section4_ids = fields.One2many( + 'account.intrastat.statement.sale.section4', + 'statement_id', string='Sale - Section 4') + sale_section4_operation_number = fields.Integer( + string='Operation Nr', store=True, readonly=True, + compute='_compute_amount_sale_s4') + sale_section4_operation_amount = fields.Integer( + string='Operation Amount', store=True, readonly=True, + compute='_compute_amount_sale_s4') + + purchase_statement_sequence = fields.Integer( + string='Statement Sequence', + default=_get_sequence) + purchase_section1_ids = fields.One2many( + 'account.intrastat.statement.purchase.section1', + 'statement_id', string='Purchase - Section 1') + purchase_section1_operation_number = fields.Integer( + string='Operation Nr', store=True, readonly=True, + compute='_compute_amount_purchase_s1') + purchase_section1_operation_amount = fields.Integer( + string='Operation Amount', store=True, readonly=True, + compute='_compute_amount_purchase_s1') + purchase_section2_ids = fields.One2many( + 'account.intrastat.statement.purchase.section2', + 'statement_id', string='Purchase - Section 2') + purchase_section2_operation_number = fields.Integer( + string='Operation Nr', store=True, readonly=True, + compute='_compute_amount_purchase_s2') + purchase_section2_operation_amount = fields.Integer( + string='Operation Amount', store=True, readonly=True, + compute='_compute_amount_purchase_s2') + purchase_section3_ids = fields.One2many( + 'account.intrastat.statement.purchase.section3', + 'statement_id', string='Purchase - Section 3') + purchase_section3_operation_number = fields.Integer( + string='Operation Nr', store=True, readonly=True, + compute='_compute_amount_purchase_s3') + purchase_section3_operation_amount = fields.Integer( + string='Operation Amount', store=True, readonly=True, + compute='_compute_amount_purchase_s3') + purchase_section4_ids = fields.One2many( + 'account.intrastat.statement.purchase.section4', + 'statement_id', string='Purchase - Section 4') + purchase_section4_operation_number = fields.Integer( + string='Operation Nr', store=True, readonly=True, + compute='_compute_amount_purchase_s4') + purchase_section4_operation_amount = fields.Integer( + string='Operation Amount', store=True, readonly=True, + compute='_compute_amount_purchase_s4') + + + @api.model + def create(self, vals): + statement = super(account_intrastat_statement, self).create(vals) + statement._normalize_statement() + return statement; + + + @api.multi + def write(self, vals): + res = super(account_intrastat_statement, self).write(vals) + self._normalize_statement() + self.recompute_sequence_lines() + return res; + + @api.model + def _get_period_ref(self, invoice_line): + res = { + 'year_id' : False, + 'quarterly' : False, + 'month' : False + } + #if not period: + # return res + # Year - Period replaced with "Accounting Date" in invoice + # date.year + #invoice_line.invoice.date + #invoice_date = datetime.strptime(self.invoice.date, '%Y-%m-%d') + res.update({'year_id' : self.fiscalyear}) + # res.update({'year_id' : invoice_date.year}) + # Accounting > Configuration > Settings > Fiscal Year Last Day + day = self.env.user.company_id.fiscalyear_last_day + month = self.env.user.company_id.fiscalyear_last_month + date_obj = date(self.fiscalyear, month, day) + #date_obj = datetime.strptime(period.date_start, '%Y-%m-%d') + # Monht/quaterly + if self.period_number == 'T': + if date_obj.month in [1,2,3]: + res.update({'quarterly' : 1}) + elif date_obj.month in [4,5,6]: + res.update({'quarterly' : 2}) + elif date_obj.month in [7,8,9]: + res.update({'quarterly' : 3}) + elif date_obj.month in [10,11,12]: + res.update({'quarterly' : 4}) + else: + res.update({'month' : date_obj.month}) + + return res + + @api.one + def _normalize_statement(self): + # Unlink lines sale/purchase sections + if not self.sale: + self.with_context(unlink_section='sale')._unlink_sections() + if not self.purchase: + self.with_context(unlink_section='purchase')._unlink_sections() + return True + + + @api.one + def _unlink_sections(self): + # Unlink lines sale/purchase sections + section_to_unlink = self.env.context.get('unlink_section', 'all') + # sale + if section_to_unlink in ['all', 'sale']: + for line in self.sale_section1_ids: + line.unlink() + for line in self.sale_section2_ids: + line.unlink() + for line in self.sale_section3_ids: + line.unlink() + for line in self.sale_section4_ids: + line.unlink() + # purchase + if section_to_unlink in ['all', 'purchase']: + for line in self.purchase_section1_ids: + line.unlink() + for line in self.purchase_section2_ids: + line.unlink() + for line in self.purchase_section3_ids: + line.unlink() + for line in self.purchase_section4_ids: + line.unlink() + return True + + + @api.model + def _get_progressive_interchange(self): + prg = 0 + domain = [('date', '=', self.date)] + for st in self.search(domain): + prg += 1 + if st.id == self.id: + break + return prg + + + @api.model + def _get_file_name(self): + ''' + Format UA code + %m + %d + ''' + # Calcolo progressivo interchange + prg = self._get_progressive_interchange() + file_name = '' + date_obj = datetime.strptime(self.date, '%Y-%m-%d') + if self.env.context.get('export_filename'): + file_name = self.env.context.get('export_filename') + elif self.company_id.intrastat_export_file_name: + file_name = self.company_id.intrastat_export_file_name + else: + file_name = '%s%s%s.%s%s' % (self.company_id.intrastat_ua_code + or '', + '{:2s}'.format(str(date_obj.month).zfill(2)), + '{:2s}'.format(str(date_obj.day).zfill(2)), + 'I', # doc intrastat + '{:2s}'.format(str(prg).zfill(2)) + ) + return file_name + + + @api.model + def _prepare_export_head(self): + rcd = '' + intrastat_ua_code = '' + # Codice utente abilitato (mittente) + if self.company_id.intrastat_ua_code: + intrastat_ua_code = self.company_id.intrastat_ua_code + # if not self.company_id.intrastat_ua_code: + # raise ValidationError( + # _('Missing Intrasta UA code : see company configuration')) + rcd += '{:4s}'.format(intrastat_ua_code) + # Riservato a SDA + rcd += '{:12s}'.format("") + # Nome del flusso + rcd += '{:12s}'.format(self._get_file_name()) + # Riservato a SDA + rcd += '{:12s}'.format("") + # Codice sezione doganale presso la quale si effettua l'operazione + rcd += '{:6s}'.format(self.custom_id.code or '') + # Riservato a SDA + rcd += '{:4s}'.format("") + # Codice fiscale o numero partita IVA o codice spedizioniere del + # richiedente (utente autorizzato) + rcd += '{:16s}'.format(self.vat_taxpayer.replace(' ', '')) + #Progressivo sede utente autorizzato + prg = self._get_progressive_interchange() + rcd += '{:3s}'.format(str(prg).zfill(3)) + # Riservato a SDA + rcd += '{:1s}'.format("") + # Numero di record presenti nel flusso + tot_lines = self.sale_section1_operation_number +\ + self.sale_section2_operation_number +\ + self.sale_section3_operation_number +\ + self.sale_section4_operation_number +\ + self.purchase_section1_operation_number +\ + self.purchase_section2_operation_number +\ + self.purchase_section3_operation_number +\ + self.purchase_section4_operation_number +\ + 1 # this rec + # ... Add frontispiece sale + if self.sale_section1_operation_number\ + or self.sale_section2_operation_number\ + or self.sale_section3_operation_number\ + or self.sale_section4_operation_number: + tot_lines += 1 + # ... Add frontispiece purchase + if self.purchase_section1_operation_number\ + or self.purchase_section2_operation_number\ + or self.purchase_section3_operation_number\ + or self.purchase_section4_operation_number: + tot_lines += 1 + rcd += '{:5s}'.format(str(tot_lines).zfill(5)) + # ... new line + rcd += "\r" # + rcd += "\n" # + + return rcd + + @api.model + def _prepare_export_prefix(self, type='sale'): + ''' + Type: C=Sale A=Purchase + ''' + prefix = '' + # Campo fisso: “EUROX” + prefix += 'EUROX' + # Partita IVA del presentatore o delegato + if self.vat_delegate: + prefix += '{:11s}'.format(self.vat_delegate) + else: + prefix += '{:11s}'.format(self.vat_taxpayer) + # Numero progressivo dell’elenco + if type == 'sale': + prefix += '{:6s}'.format(\ + str(self.sale_statement_sequence).zfill(6)) + else: + prefix += '{:6s}'.format(\ + str(self.purchase_statement_sequence).zfill(6)) + return prefix + + @api.model + def _format_negative_number_frontispiece(self, number): + if number >= 0: + return str(number) + # interchange last values with p for 0, q for 1 ...and y for 9 + interchange = ['p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y'] + last_char = str(number)[-1:] + number = list(str(number * -1)) + # change last number + number[len(number)-1] = interchange[int(last_char)] + return ''.join(number) + + @api.model + def _prepare_export_frontispiece(self, type): + rcd = self._prepare_export_prefix(type) + rcd += '{:1s}'.format("0") + rcd += '{:5s}'.format("".zfill(5)) + # Tipo riepilogo: A = acquisti C = cessioni + if type == 'purchase': + rcd += '{:1s}'.format("A") + else: + rcd += '{:1s}'.format("C") + # Anno + day = self.env.user.company_id.fiscalyear_last_day + month = self.env.user.company_id.fiscalyear_last_month + date_start_year = date(self.fiscalyear, month, day) + #date_start_year = datetime.strptime(self.fiscalyear_id.date_start, + # '%Y-%m-%d') + rcd += '{:2s}'.format(str(date_start_year.year)[2:]) + # Periodicità + rcd += '{:1s}'.format(self.period_type) + # Periodo + rcd += '{:2s}'.format(str(self.period_number).zfill(2)) + # Partita IVA del contribuentè + rcd += '{:11s}'.format(self.vat_taxpayer) + # Contenuto degli elenchì + rcd += '{:1s}'.format(self.content_type) + # Casi particolari riferiti al soggetto obbligatò + rcd += '{:1s}'.format(self.special_cases) + # Partita IVA del soggetto delegato + rcd += '{:11s}'.format(self.vat_delegate or "".zfill(11)) + # Numero e importo dettagli della sezione 1 + if type == "purchase": + rcd += '{:5s}'.format( + str(self.purchase_section1_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.purchase_section1_operation_amount).zfill(13)) + else: + rcd += '{:5s}'.format( + str(self.sale_section1_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.sale_section1_operation_amount).zfill(13)) + # Numero dettagli della sezione 2 + if type == "purchase": + rcd += '{:5s}'.format( + str(self.purchase_section2_operation_number).zfill(5)) + amount_format = self._format_negative_number_frontispiece( + self.purchase_section2_operation_amount) + rcd += '{:13s}'.format( + str(amount_format).zfill(13)) + else: + rcd += '{:5s}'.format( + str(self.sale_section2_operation_number).zfill(5)) + amount_format = self._format_negative_number_frontispiece( + self.sale_section2_operation_amount) + rcd += '{:13s}'.format( + str(amount_format).zfill(13)) + # Numero dettagli della sezione 3 + if type == "purchase": + rcd += '{:5s}'.format( + str(self.purchase_section3_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.purchase_section3_operation_amount).zfill(13)) + else: + rcd += '{:5s}'.format( + str(self.sale_section3_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.sale_section3_operation_amount).zfill(13)) + # Numero dettagli della sezione 4 + if type == "purchase": + rcd += '{:5s}'.format( + str(self.purchase_section4_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.purchase_section4_operation_amount).zfill(13)) + else: + rcd += '{:5s}'.format( + str(self.sale_section4_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.sale_section4_operation_amount).zfill(13)) + # ... new line + rcd += "\r" + rcd += "\n" + return rcd + + @api.model + def generate_file_export(self): + file_content = '' + # Head + if not self.env.context.get('export_without_head'): + rec_head = self._prepare_export_head() + file_content += rec_head + content_sale = self.env.context.get('sale') + content_purchase = self.env.context.get('purchase') + # Purchase + if (self.purchase_section1_operation_number or + self.purchase_section2_operation_number or + self.purchase_section3_operation_number or + self.purchase_section4_operation_number) and content_purchase: + # frontispiece + rec_frontispiece = self._prepare_export_frontispiece("purchase") + file_content += rec_frontispiece + # Section 1 + for line in self.purchase_section1_ids: + rcd = self._prepare_export_prefix("purchase") + rcd += '{:1s}'.format("1") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 2 + for line in self.purchase_section2_ids: + rcd = self._prepare_export_prefix("purchase") + rcd += '{:1s}'.format("2") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 3 + for line in self.purchase_section3_ids: + rcd = self._prepare_export_prefix("purchase") + rcd += '{:1s}'.format("3") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 4 + for line in self.purchase_section4_ids: + rcd = self._prepare_export_prefix("purchase") + rcd += '{:1s}'.format("4") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + + # Sale + if (self.sale_section1_operation_number or + self.sale_section2_operation_number or + self.sale_section3_operation_number or + self.sale_section4_operation_number) and content_sale: + # frontispiece + rec_frontispiece = self._prepare_export_frontispiece("sale") + file_content += rec_frontispiece + # Section 1 + for line in self.sale_section1_ids: + rcd = self._prepare_export_prefix("sale") + rcd += '{:1s}'.format("1") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 2 + for line in self.sale_section2_ids: + rcd = self._prepare_export_prefix("sale") + rcd += '{:1s}'.format("2") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 3 + for line in self.sale_section3_ids: + rcd = self._prepare_export_prefix("sale") + rcd += '{:1s}'.format("3") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 4 + for line in self.sale_section4_ids: + rcd = self._prepare_export_prefix("sale") + rcd += '{:1s}'.format("4") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + + # Validtation data + if not file_content: + raise ValidationError( + _('Nothing to export')) + if not self.sale_section1_ids \ + and not self.sale_section2_ids\ + and not self.sale_section3_ids\ + and not self.sale_section4_ids\ + and not self.purchase_section1_ids\ + and not self.purchase_section2_ids\ + and not self.purchase_section3_ids\ + and not self.purchase_section4_ids: + raise ValidationError( + _('Statement without lines')) + + return file_content + + @api.one + def compute_statement(self): + # Unlink existing lines + self._unlink_sections() + # Setting period + period_statement_ids = [] + + #date_start_year = datetime.strptime(self.fiscalyear_id.date_start, + # '%Y-%m-%d') + day = self.env.user.company_id.fiscalyear_last_day + month = self.env.user.company_id.fiscalyear_last_month + date_start_year = date(self.fiscalyear, month, day) + if self.period_type == 'M': + period_date_start = datetime(date_start_year.year, + self.period_number, + 1) + # Last date of month + if not self.period_number == 12: + period_date_work = datetime(date_start_year.year, + self.period_number + 1, + 1) + period_date_stop = period_date_work - timedelta(days = 1) + else: + period_date_stop = datetime(date_start_year.year, 12, 31) + # Period compentence + #=================================================================== + # period_statement_ids.append( + # self.env['account.period'].find(period_date_start).id) + #=================================================================== + else: + if self.period_number == 1: + period_date_start = datetime(date_start_year.year, 1, 1) + period_date_medium = datetime(date_start_year.year, 2, 1) + period_date_stop = datetime(date_start_year.year, 3, 31) + elif self.period_number == 2: + period_date_start = datetime(date_start_year.year, 4, 1) + period_date_medium = datetime(date_start_year.year, 5, 1) + period_date_stop = datetime(date_start_year.year, 6, 30) + elif self.period_number == 3: + period_date_start = datetime(date_start_year.year, 7, 1) + period_date_medium = datetime(date_start_year.year, 8, 1) + period_date_stop = datetime(date_start_year.year, 9, 30) + elif self.period_number == 4: + period_date_start = datetime(date_start_year.year, 10, 1) + period_date_medium = datetime(date_start_year.year, 11, 1) + period_date_stop = datetime(date_start_year.year, 12, 31) + # Period compentence + #=================================================================== + # period_statement_ids.append( + # self.env['account.period'].find(period_date_start).id) + # period_statement_ids.append( + # self.env['account.period'].find(period_date_medium).id) + # period_statement_ids.append( + # self.env['account.period'].find(period_date_stop).id) + #=================================================================== + # Search intrastat lines + domain = [('move_id.date', '>=', period_date_start), + ('move_id.date', '<=', period_date_stop), + ('intrastat', '=', True)] + # ... sale - purchase + inv_type = [] + if self.sale: + inv_type += ['out_invoice', 'out_refund'] + if self.purchase: + inv_type += ['in_invoice', 'in_refund'] + domain.append(('type', 'in', inv_type)) + + statement_lines_sale_s1 = [] + statement_lines_sale_s2 = [] + statement_lines_sale_s3 = [] + statement_lines_sale_s4 = [] + statement_lines_purchase_s1 = [] + statement_lines_purchase_s2 = [] + statement_lines_purchase_s3 = [] + statement_lines_purchase_s4 = [] + + for inv in self.env['account.invoice'].search(domain): + for inv_intra_line in inv.intrastat_line_ids: + # Sale - Section 1 + if inv_intra_line.statement_section == 'sale_s1': + st_line = \ + self.env['account.intrastat.statement.sale.section1']\ + ._prepare_statement_line(inv_intra_line) + if st_line: + if len(statement_lines_sale_s1): + st_line['sequence'] = \ + len(statement_lines_sale_s1) +1 + else: + st_line['sequence'] = 1 + statement_lines_sale_s1.append((0, 0, st_line)) + # Sale - Section 2 + elif inv_intra_line.statement_section == 'sale_s2': + st_line = \ + self.env['account.intrastat.statement.sale.section2']\ + ._prepare_statement_line(inv_intra_line) + if st_line: + if len(statement_lines_sale_s2): + st_line['sequence'] = \ + len(statement_lines_sale_s2) +1 + else: + st_line['sequence'] = 1 + statement_lines_sale_s2.append((0, 0, st_line)) + # Sale - Section 3 + elif inv_intra_line.statement_section == 'sale_s3': + st_line = \ + self.env['account.intrastat.statement.sale.section3']\ + ._prepare_statement_line(inv_intra_line) + if st_line: + if len(statement_lines_sale_s3): + st_line['sequence'] = \ + len(statement_lines_sale_s3) +1 + else: + st_line['sequence'] = 1 + statement_lines_sale_s3.append((0, 0, st_line)) + # Sale - Section 4 + elif inv_intra_line.statement_section == 'sale_s4': + st_line = \ + self.env['account.intrastat.statement.sale.section4']\ + ._prepare_statement_line(inv_intra_line) + if st_line: + if len(statement_lines_sale_s4): + st_line['sequence'] = \ + len(statement_lines_sale_s4) +1 + else: + st_line['sequence'] = 1 + statement_lines_sale_s4.append((0, 0, st_line)) + # Purchase - Section 1 + elif inv_intra_line.statement_section == 'purchase_s1': + st_line = \ + self.env[ + 'account.intrastat.statement.purchase.section1']\ + ._prepare_statement_line(inv_intra_line) + if st_line: + if len(statement_lines_purchase_s1): + st_line['sequence'] = \ + len(statement_lines_purchase_s1) +1 + else: + st_line['sequence'] = 1 + statement_lines_purchase_s1.append((0, 0, st_line)) + # Purchase - Section 2 + elif inv_intra_line.statement_section == 'purchase_s2': + st_line = \ + self.env[ + 'account.intrastat.statement.purchase.section2']\ + ._prepare_statement_line(inv_intra_line) + if st_line: + if len(statement_lines_purchase_s2): + st_line['sequence'] = \ + len(statement_lines_purchase_s2) +1 + else: + st_line['sequence'] = 1 + statement_lines_purchase_s2.append((0, 0, st_line)) + # Purchase - Section 3 + elif inv_intra_line.statement_section == 'purchase_s3': + st_line = \ + self.env[ + 'account.intrastat.statement.purchase.section3']\ + ._prepare_statement_line(inv_intra_line) + if st_line: + if len(statement_lines_purchase_s3): + st_line['sequence'] = \ + len(statement_lines_purchase_s3) +1 + else: + st_line['sequence'] = 1 + statement_lines_purchase_s3.append((0, 0, st_line)) + # Purchase - Section 4 + elif inv_intra_line.statement_section == 'purchase_s4': + st_line = \ + self.env[ + 'account.intrastat.statement.purchase.section4']\ + ._prepare_statement_line(inv_intra_line) + if st_line: + if len(statement_lines_purchase_s4): + st_line['sequence'] = \ + len(statement_lines_purchase_s4) +1 + else: + st_line['sequence'] = 1 + statement_lines_purchase_s4.append((0, 0, st_line)) + self.write({ + 'sale_section1_ids' : statement_lines_sale_s1, + 'sale_section2_ids' : statement_lines_sale_s2, + 'sale_section3_ids' : statement_lines_sale_s3, + 'sale_section4_ids' : statement_lines_sale_s4, + 'purchase_section1_ids' : statement_lines_purchase_s1, + 'purchase_section2_ids' : statement_lines_purchase_s2, + 'purchase_section3_ids' : statement_lines_purchase_s3, + 'purchase_section4_ids' : statement_lines_purchase_s4, + }) + + # Group refund to sale lines if they have the same period of ref + for line in self.sale_section2_ids: + to_ref_obj = self.env['account.intrastat.statement.sale.section1'] + self.refund_line(line, to_ref_obj) + for line in self.sale_section4_ids: + to_ref_obj = self.env['account.intrastat.statement.sale.section3'] + self.refund_line(line, to_ref_obj) + for line in self.purchase_section2_ids: + to_ref_obj = \ + self.env['account.intrastat.statement.purchase.section1'] + self.refund_line(line, to_ref_obj) + for line in self.purchase_section4_ids: + to_ref_obj = \ + self.env['account.intrastat.statement.purchase.section3'] + self.refund_line(line, to_ref_obj) + + return True + + @api.model + def refund_line(self, line, to_ref_obj): + ''' + Refund line into sale if period ref si the same of the statemnt + ''' + to_refund = False + if line.year_id.id == self.fiscalyear: + if self.period_type == 'M' \ + and line.month == self.period_number: + to_refund = True + + if self.period_type == 'T' \ + and line.quarterly == self.period_number: + to_refund = True + # Execute refund + if to_refund: + domain = [('statement_id', '=', self.id), + ('partner_id', '=', line.partner_id.id), + ('intrastat_code_id', '=', line.intrastat_code_id.id), + ('amount_euro', '>=', line.amount_euro)] + line_to_refund = to_ref_obj.search(domain, limit=1) + if line_to_refund: + if line_to_refund.amount_euro < line.amount_euro: + raise ValidationError( + _('Invoice and refund in the same period with' + ' refund > invoice for partner %s') + % line.partner_id.name) + val = { + 'amount_euro' : line_to_refund.amount_euro \ + - line.amount_euro + } + if 'statistic_amount_euro' in line_to_refund: + val['statistic_amount_euro'] = \ + line_to_refund.statistic_amount_euro \ + - line.statistic_amount_euro + if 'amount_currency' in line_to_refund: + val['amount_currency'] = line_to_refund.amount_currency \ + - line.amount_currency + + line_to_refund.write(val) + line.unlink() + + + @api.onchange('company_id') + def change_company_id(self): + self.vat_taxpayer = self.company_id.partner_id.vat \ + and self.company_id.partner_id.vat[2:] or False + self.vat_delegate = self.company_id.intrastat_delegated_vat \ + or False + + @api.onchange('period_number') + @api.constrains('period_type', 'period_number') + def change_period_number(self): + ''' + Interval Control + ''' + if self.period_type == 'M'\ + and (self.period_number < 1 or self.period_number > 12): + raise ValidationError( + _('Period Not Valid! Range accepted: from 1 to 12')) + if self.period_type == 'T'\ + and (self.period_number < 1 or self.period_number > 4): + raise ValidationError( + _('Period Not Valid! Range accepted: from 1 to 4')) + + +class account_intrastat_statement_sale_section1(models.Model): + _name = 'account.intrastat.statement.sale.section1' + _description = 'Account INTRASTAT - Statement - Sale Section 1' + + statement_id = fields.Many2one( + 'account.intrastat.statement', string='Statement', + readonly=True, ondelete="cascade") + sequence = fields.Integer(string='Progressive') + partner_id = fields.Many2one('res.partner', string='Partner') + country_partner_id = fields.Many2one('res.country', + string='Country Customer') + vat_code = fields.Char(string='Vat Code Customer') + amount_euro = fields.Integer(string='Amount Euro', + digits=dp.get_precision('Account')) + transation_nature_id = fields.Many2one( + 'account.intrastat.transation.nature', string='Transation Nature') + intrastat_code_id = fields.Many2one('report.intrastat.code', + string='Intrastat Code Good') + weight_kg = fields.Integer(string='Weight kg') + additional_units = fields.Integer(string='Additional Units') + additional_units_required = fields.Boolean( + string='Additional Units Required', store=True, + related='intrastat_code_id.additional_unit_required') + additional_units_uom = fields.Char(string='Additional Units UOM', + readonly=True, related="intrastat_code_id.additional_unit_uom_id.name") + statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', + digits=dp.get_precision('Account')) + delivery_code_id = fields.Many2one('stock.incoterms', + string='Delivery') + transport_code_id = fields.Many2one('account.intrastat.transport', + string='Transport') + country_destination_id = fields.Many2one('res.country', + string='Country Destination') + province_origin_id = fields.Many2one('res.country.state', + string='Province Origin') + invoice_id = fields.Many2one('account.invoice', + string='Invoice', readonly=True) + + @api.onchange('partner_id') + def change_partner_id(self): + if self.partner_id: + data = self.env['account.invoice.intrastat'].\ + _get_partner_data(self.partner_id) + self.country_partner_id = data['country_partner_id'] + self.vat_code = data['vat_code'] + self.country_destination_id = data['country_destination_id'] + + @api.onchange('weight_kg') + def change_weight_kg(self): + if self.statement_id.company_id.intrastat_additional_unit_from == \ + 'weight': + self.additional_units = self.weight_kg + + @api.model + def _prepare_statement_line(self, inv_intra_line): + company_id = self._context.get( + 'company_id', self.env.user.company_id) + res = { + 'invoice_id' : inv_intra_line.invoice_id.id or False, + 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'vat_code': + inv_intra_line.invoice_id.partner_id.vat \ + and inv_intra_line.invoice_id.partner_id.vat[2:] \ + or False, + 'amount_euro': self.statement_id.round_min_amount(round( + inv_intra_line.amount_euro) or 0, company_id), + 'transation_nature_id': ( + inv_intra_line.transation_nature_id and + inv_intra_line.transation_nature_id.id) or ( + company_id.intrastat_sale_transation_nature_id and + company_id.intrastat_sale_transation_nature_id.id) or + False, + 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, + 'weight_kg': round(inv_intra_line.weight_kg) or 0, + 'additional_units': + inv_intra_line.additional_units and + round(inv_intra_line.additional_units) or 0, + 'statistic_amount_euro': + self.statement_id.round_min_amount( + round(inv_intra_line.statistic_amount_euro) or + (company_id.intrastat_sale_statistic_amount and + round(inv_intra_line.amount_euro)) or 0, company_id), + 'delivery_code_id': ( + inv_intra_line.delivery_code_id and + inv_intra_line.delivery_code_id.id) or ( + company_id.intrastat_sale_delivery_code_id and + company_id.intrastat_sale_delivery_code_id.id) or False, + 'transport_code_id': ( + inv_intra_line.transport_code_id and + inv_intra_line.transport_code_id.id) or ( + company_id.intrastat_sale_transport_code_id and + company_id.intrastat_sale_transport_code_id.id) or False, + 'country_destination_id': ( + inv_intra_line.country_destination_id and + inv_intra_line.country_destination_id.id) or False, + 'province_origin_id': ( + inv_intra_line.province_origin_id and + inv_intra_line.province_origin_id.id) or + (company_id.intrastat_sale_province_origin_id and + company_id.intrastat_sale_province_origin_id.id) or False, + } + return res + + @api.model + def _prepare_export_line(self): + # Controls + # .. Vat code + if not self.vat_code: + raise ValidationError( + _('Missing Vat code for %s in Sale Section 1') + % (self.partner_id.name,)) + + rcd = '' + # Codice dello Stato membro dell’acquirente + self.country_partner_id.with_context(control_ISO_code=True).\ + intrastat_validate() + rcd += '{:2s}'.format(self.country_partner_id.code or '') + # Codice IVA dell’acquirente + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Codice della natura della transazione + rcd += '{:1s}'.format( + self.transation_nature_id and self.transation_nature_id.code or '') + # Codice della nomenclatura combinata della merce + rcd += '{:8s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + # Massa netta in chilogrammi + rcd += '{:10s}'.format(str(self.weight_kg).zfill(10)) + # Quantità espressa nell'unità di misura supplementare + rcd += '{:10s}'.format(str(self.additional_units).zfill(10)) + # Valore statistico in euro + rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) + # Codice delle condizioni di consegna + rcd += '{:1s}'.format( + self.delivery_code_id and self.delivery_code_id.code[:1] or '') + # Codice del modo di trasporto + rcd += '{:1s}'.format( + self.transport_code_id and str(self.transport_code_id.code) or '') + # Codice del paese di destinazione + rcd += '{:2s}'.format( + self.country_destination_id and self.country_destination_id.code \ + or '') + # Codice del paese di origine della merce + rcd += '{:2s}'.format( + self.province_origin_id and self.province_origin_id.code or '') + # ... new line + rcd += "\r" # + rcd += "\n" # + + return rcd + + +class account_intrastat_statement_sale_section2(models.Model): + _name = 'account.intrastat.statement.sale.section2' + _description = 'Account INTRASTAT - Statement - Sale Section 2' + + statement_id = fields.Many2one('account.intrastat.statement', + string='Statement', + readonly=True, + ondelete="cascade") + sequence = fields.Integer(string='Progressive') + month = fields.Integer(string='Month Ref of Refund') + quarterly = fields.Integer(string='Quarterly Ref of Refund') + year_id = fields.Integer(string='Year Ref of Refund') + partner_id = fields.Many2one('res.partner', string='Partner') + country_partner_id = fields.Many2one('res.country', + string='Country Partner') + vat_code = fields.Char(string='Vat Code Customer') + sign_variation = fields.Selection([ + ('+', '+'), + ('-', '-'), + ], 'Sign Variation') + amount_euro = fields.Integer(string='Amount Euro', + digits=dp.get_precision('Account')) + transation_nature_id = fields.Many2one( + 'account.intrastat.transation.nature', string='Transation Nature') + intrastat_code_id = fields.Many2one('report.intrastat.code', + string='Intrastat Code Good') + statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', + digits=dp.get_precision('Account')) + invoice_id = fields.Many2one('account.invoice', string='Invoice', + readonly=True) + + @api.onchange('partner_id') + def change_partner_id(self): + if self.partner_id: + data = self.env['account.invoice.intrastat'].\ + _get_partner_data(self.partner_id) + self.country_partner_id = data['country_partner_id'] + self.vat_code = data['vat_code'] + + @api.model + def _prepare_statement_line(self, inv_intra_line): + company_id = self._context.get( + 'company_id', self.env.user.company_id) + # sign_variation + sign_variation = False + if inv_intra_line.invoice_id.type in ['out_refund']: + sign_variation = '-' + # Period Ref + #======================================================================= + # ref_period = self.statement_id._get_period_ref( + # inv_intra_line.invoice_id.intrastat_refund_period_id) + #======================================================================= + ref_period = self.statement_id._get_period_ref( + inv_intra_line.invoice_id) + res = { + 'invoice_id' : inv_intra_line.invoice_id.id or False, + 'month' : ref_period and ref_period['month'] or False, + 'quarterly' : ref_period and ref_period['quarterly'] or False, + 'year_id' : ref_period and ref_period['year_id'] or False, + 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'vat_code': + inv_intra_line.invoice_id.partner_id.vat \ + and inv_intra_line.invoice_id.partner_id.vat[2:] \ + or False, + 'amount_euro': self.statement_id.round_min_amount( + round(inv_intra_line.amount_euro) or 0, company_id), + 'sign_variation': sign_variation, + 'transation_nature_id': ( + inv_intra_line.transation_nature_id and + inv_intra_line.transation_nature_id.id) or ( + company_id.intrastat_sale_transation_nature_id and + company_id.intrastat_sale_transation_nature_id.id) or + False, + 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, + 'statistic_amount_euro': + self.statement_id.round_min_amount( + round(inv_intra_line.statistic_amount_euro) or + ( + company_id.intrastat_sale_statistic_amount and + round(inv_intra_line.amount_euro)) or 0, company_id), + } + return res + + @api.model + def _prepare_export_line(self): + # Controls + # .. Vat code + if not self.vat_code: + raise ValidationError( + _('Missing Vat code for %s in Sale Section 2') + % (self.partner_id.name,)) + # .. year ref + if not self.year_id: + raise ValidationError( + _('Missing Year Ref on Sale Section 2')) + # .. Sign variation + if not self.sign_variation: + raise ValidationError( + _('Missing Sign Variation on Sale Section 2')) + # ...Period ref + if self.statement_id.period_type == 'M': + if not self.month: + raise ValidationError( + _('Missing Month Ref Variation on Sale Section 2')) + else: + if not self.quarterly: + raise ValidationError( + _('Missing Quarterly Ref Variation on Sale Section 2')) + + rcd = '' + # Mese di riferimento del riepilogo da rettificare + rcd += '{:2s}'.format(str(self.month).zfill(2)) + # Trimestre di riferimento del riepilogo da rettificare + rcd += '{:1s}'.format(str(self.quarterly).zfill(1)) + # Anno periodo di ref da modificare + date_start_year = False + if self.year_id: + date_start_year = datetime.strptime(self.year_id.date_start, + '%Y-%m-%d') + rcd += '{:2s}'.format( + date_start_year and str(date_start_year.year)[2:] or '') + # Codice dello Stato membro dell’acquirente + rcd += '{:2s}'.format(self.country_partner_id.code or '') + # Codice IVA dell’acquirente + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Segno da attribuire alle variazioni da X(1) apportare + rcd += '{:1s}'.format(self.sign_variation or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Codice della natura della transazione + rcd += '{:1s}'.format( + self.transation_nature_id and self.transation_nature_id.code or '') + # Codice della nomenclatura combinata della merce + rcd += '{:8s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + # Valore statistico in euro + rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) + # ... new line + rcd += "\r" # + rcd += "\n" # + + return rcd + + +class account_intrastat_statement_sale_section3(models.Model): + _name = 'account.intrastat.statement.sale.section3' + _description = 'Account INTRASTAT - Statement - Sale Section 3' + + statement_id = fields.Many2one('account.intrastat.statement', + string='Statement', + readonly=True, + ondelete="cascade") + sequence = fields.Integer(string='Progressive') + partner_id = fields.Many2one('res.partner', string='Partner') + country_partner_id = fields.Many2one('res.country', + string='Country Partner') + vat_code = fields.Char(string='Vat Code Customer') + amount_euro = fields.Integer(string='Amount Euro', + digits=dp.get_precision('Account')) + invoice_number = fields.Char(string='Invoice Number') + invoice_date = fields.Date(string='Invoice Date') + intrastat_code_id = fields.Many2one('report.intrastat.code', + string='Intrastat Code Service') + supply_method = fields.Selection([ + ('I', 'Instant'), + ('R', 'Repeatedly'), + ], 'Supply Method') + payment_method = fields.Selection([ + ('B', 'Transfer'), + ('A', 'Accreditation'), + ('X', 'Other'), + ], 'Payment Method') + country_payment_id= fields.Many2one('res.country', 'Country Payment') + invoice_id = fields.Many2one('account.invoice', string='Invoice', + readonly=True) + + @api.onchange('partner_id') + def change_partner_id(self): + if self.partner_id: + data = self.env['account.invoice.intrastat'].\ + _get_partner_data(self.partner_id) + self.country_partner_id = data['country_partner_id'] + self.vat_code = data['vat_code'] + + @api.model + def _prepare_statement_line(self, inv_intra_line): + res = { + 'invoice_id' : inv_intra_line.invoice_id.id or False, + 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'vat_code': + inv_intra_line.invoice_id.partner_id.vat \ + and inv_intra_line.invoice_id.partner_id.vat[2:] \ + or False, + 'amount_euro': self.statement_id.round_min_amount( + round(inv_intra_line.amount_euro) or 0, + inv_intra_line.invoice_id.company_id), + 'invoice_number': inv_intra_line.invoice_number or False, + 'invoice_date': inv_intra_line.invoice_date or False, + 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, + 'supply_method': inv_intra_line.supply_method or False, + 'payment_method': inv_intra_line.payment_method or False, + 'country_payment_id': inv_intra_line.country_payment_id.id or False, + } + return res + + @api.model + def _prepare_export_line(self): + # Controls + # .. Vat code + if not self.vat_code: + raise ValidationError( + _('Missing Vat code for %s in Sale Section 3') + % (self.partner_id.name,)) + + rcd = '' + # Codice dello Stato membro dell’acquirente + self.country_partner_id.with_context(control_ISO_code=True).\ + intrastat_validate() + rcd += '{:2s}'.format(self.country_partner_id.code or '') + # Codice IVA del fornitore + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Numero Fattura + rcd += '{:15s}'.format(str(self.invoice_number).zfill(15)) + # Data Fattura + invoice_date_ddmmyy = False + if self.invoice_date: + date_obj = datetime.strptime(self.invoice_date, '%Y-%m-%d') + invoice_date_ddmmyy = date_obj.strftime('%d%m%y') + rcd += '{:2s}'.format(invoice_date_ddmmyy or '') + # Codice del servizio + rcd += '{:6s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + # Modalità di erogazione + rcd += '{:1s}'.format(self.supply_method or '') + # Modalità di incasso + rcd += '{:1s}'.format(self.payment_method or '') + # Codice del paese di pagamento + rcd += '{:2s}'.format(self.country_payment_id and \ + self.country_payment_id.code or '') + # ... new line + rcd += "\r" # + rcd += "\n" # + + return rcd + + +class account_intrastat_statement_sale_section4(models.Model): + _name = 'account.intrastat.statement.sale.section4' + _description = 'Account INTRASTAT - Statement - Sale Section 4' + + statement_id = fields.Many2one( + 'account.intrastat.statement', string='Statement', + readonly=True, ondelete="cascade") + sequence = fields.Integer(string='Progressive') + custom_id = fields.Many2one('account.intrastat.custom', 'Custom') + month = fields.Integer(string='Month Ref of Refund') + quarterly = fields.Integer(string='Quarterly Ref of Refund') + year_id = fields.Integer(string='Year Ref of Variation') + protocol = fields.Integer(string='Protocol number', size=6) + progressive_to_modify = fields.Integer('Progressive to Modify') + partner_id = fields.Many2one('res.partner', string='Partner') + country_partner_id = fields.Many2one('res.country', + string='Country Partner') + vat_code = fields.Char(string='Vat Code Customer') + amount_euro = fields.Integer(string='Amount Euro', + digits=dp.get_precision('Account')) + invoice_number = fields.Char(string='Invoice Number') + invoice_date = fields.Date(string='Invoice Date') + intrastat_code_id = fields.Many2one('report.intrastat.code', + string='Intrastat Code Service') + supply_method = fields.Selection([ + ('I', 'Instant'), + ('R', 'Repeatedly'), + ], 'Supply Method') + payment_method = fields.Selection([ + ('B', 'Transfer'), + ('A', 'Accreditation'), + ('X', 'Other'), + ], 'Payment Method') + country_payment_id= fields.Many2one('res.country', 'Country Payment') + invoice_id = fields.Many2one('account.invoice', string='Invoice', + readonly=True) + + @api.onchange('partner_id') + def change_partner_id(self): + if self.partner_id: + data = self.env['account.invoice.intrastat'].\ + _get_partner_data(self.partner_id) + self.country_partner_id = data['country_partner_id'] + self.vat_code = data['vat_code'] + + @api.model + def _prepare_statement_line(self, inv_intra_line): + # Period Ref + #======================================================================= + # ref_period = self.statement_id._get_period_ref( + # inv_intra_line.invoice_id.intrastat_refund_period_id) + #======================================================================= + ref_period = self.statement_id._get_period_ref( + inv_intra_line.invoice_id) + + res = { + 'invoice_id' : inv_intra_line.invoice_id.id or False, + 'month' : ref_period and ref_period['month'] or False, + 'quarterly' : ref_period and ref_period['quarterly'] or False, + 'year_id' : ref_period and ref_period['year_id'] or False, + 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'vat_code': + inv_intra_line.invoice_id.partner_id.vat \ + and inv_intra_line.invoice_id.partner_id.vat[2:] \ + or False, + 'amount_euro': self.statement_id.round_min_amount( + round(inv_intra_line.amount_euro) or 0, + inv_intra_line.invoice_id.company_id), + 'invoice_number': inv_intra_line.invoice_number or False, + 'invoice_date': inv_intra_line.invoice_date or False, + 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, + 'supply_method': inv_intra_line.supply_method or False, + 'payment_method': inv_intra_line.payment_method or False, + 'country_payment_id': inv_intra_line.country_payment_id.id or False, + } + return res + + @api.model + def _prepare_export_line(self): + # Controls + # .. Vat code + if not self.vat_code: + raise ValidationError( + _('Missing Vat code for %s in Sale Section 4') + % (self.partner_id.name,)) + # .. year ref + if not self.year_id: + raise ValidationError( + _('Missing Year Ref on Sale Section 4')) + # .. custom_id + if not self.custom_id: + raise ValidationError( + _('Missing custom on Sale Section 4')) + # .. Protocol + if not self.protocol: + raise ValidationError( + _('Missing protocol on Sale Section 4')) + # .. Progressive to modity + if not self.progressive_to_modify: + raise ValidationError( + _('Missing Progressive to modity on Sale Section 4')) + # .. Invoice + if (not self.invoice_number) or (not self.invoice_date): + raise ValidationError( + _('Missing Invoice data on Sale Section 4')) + # .. Supply method + if not self.supply_method: + raise ValidationError( + _('Missing Supply method on Sale Section 4')) + # .. payment_method + if not self.payment_method: + raise ValidationError( + _('Missing Payment method on Sale Section 4')) + # .. country_payment_id + if not self.country_payment_id: + raise ValidationError( + _('Missing Country Payment on Sale Section 4')) + + rcd = '' + # Codice della sezione doganale in cui è stato registrata la + # dichiarazione da rettificare + rcd += '{:6s}'.format(self.custom_id and self.custom_id.code or '') + # Anno di registrazione della dichiarazione da rettificare + date_start_year = datetime.strptime(self.year_id.date_start, + '%Y-%m-%d') + rcd += '{:2s}'.format( + date_start_year and str(date_start_year.year)[2:] or '') + # Protocollo della dichiarazione da rettificare + rcd += '{:6s}'.format(self.protocol and str(self.protocol).zfill(6) \ + or '') + # Progressivo della sezione 3 da rettificare + rcd += '{:5s}'.format(self.progressive_to_modify_id and + str(self.progressive_to_modify_id.sequence).zfill(5) \ + or '') + # Codice dello Stato membro dell’acquirente + # Test anche che ci sia il codice nazione + country_id = self.country_partner_id \ + or self.partner_id.country_id + if country_id: + self.country_id.with_context(control_ISO_code=True).\ + intrastat_validate() + else: + raise ValidationError( + _('Partner without Country') ) + rcd += '{:2s}'.format(country_id.code or '') + # Codice IVA dell’acquirente + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Numero Fattura + rcd += '{:15s}'.format(str(self.invoice_number).zfill(15)) + # Data Fattura + invoice_date_ddmmyy = False + if self.invoice_date: + date_obj = datetime.strptime(self.invoice_date, '%Y-%m-%d') + invoice_date_ddmmyy = date_obj.strftime('%d%m%y') + rcd += '{:2s}'.format(invoice_date_ddmmyy or '') + # Codice del servizio + rcd += '{:6s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + # Modalità di erogazione + rcd += '{:1s}'.format(self.supply_method or '') + # Modalità di incasso + rcd += '{:1s}'.format(self.payment_method or '') + # Codice del paese di pagamento + rcd += '{:2s}'.format(self.country_payment_id and \ + self.country_payment_id.code or '') + # ... new line + rcd += "\r" # + rcd += "\n" # + + return rcd + +class account_intrastat_statement_purchase_section1(models.Model): + _name = 'account.intrastat.statement.purchase.section1' + _description = 'Account INTRASTAT - Statement - Purchase Section 1' + + statement_id = fields.Many2one('account.intrastat.statement', + string='Statement', + readonly=True, + ondelete="cascade") + sequence = fields.Integer(string='Progressive') + partner_id = fields.Many2one('res.partner', string='Partner') + country_partner_id = fields.Many2one('res.country', + string='Country Partner') + vat_code = fields.Char(string='Vat Code Partner') + amount_euro = fields.Integer(string='Amount Euro', + digits=dp.get_precision('Account')) + amount_currency = fields.Integer(string='Amount Currency', + digits=dp.get_precision('Account')) + transation_nature_id = fields.Many2one( + 'account.intrastat.transation.nature', string='Transation Nature') + intrastat_code_id = fields.Many2one( + 'report.intrastat.code', string='Intrastat Code Good') + weight_kg = fields.Integer(string='Weight kg') + additional_units = fields.Integer(string='Additional Units') + additional_units_required = fields.Boolean( + string='Additional Units Required', store=True, + related='intrastat_code_id.additional_unit_required') + additional_units_uom = fields.Char(string='Additional Units UOM', + readonly=True, related="intrastat_code_id.additional_unit_uom_id.name") + statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', + digits=dp.get_precision('Account')) + delivery_code_id = fields.Many2one('stock.incoterms', + string='Delivery') + transport_code_id = fields.Many2one('account.intrastat.transport', + string='Transport') + country_origin_id = fields.Many2one('res.country', + string='Country Origin') + country_good_origin_id = fields.Many2one('res.country', + string='Country Good Origin') + province_destination_id = fields.Many2one('res.country.state', + string='Province Destination') + invoice_id = fields.Many2one('account.invoice', string='Invoice', + readonly=True) + + @api.onchange('weight_kg') + def change_weight_kg(self): + if self.statement_id.company_id.intrastat_additional_unit_from == \ + 'weight': + self.additional_units = self.weight_kg + + @api.onchange('partner_id') + def change_partner_id(self): + if self.partner_id: + data = self.env['account.invoice.intrastat'].\ + _get_partner_data(self.partner_id) + self.country_partner_id = data['country_partner_id'] + self.vat_code = data['vat_code'] + self.country_origin_id = data['country_origin_id'] + self.country_good_origin_id = data['country_good_origin_id'] + + @api.model + def _prepare_statement_line(self, inv_intra_line): + company_id = self._context.get( + 'company_id', self.env.user.company_id) + res = { + 'invoice_id' : inv_intra_line.invoice_id.id or False, + 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'vat_code': + inv_intra_line.invoice_id.partner_id.vat \ + and inv_intra_line.invoice_id.partner_id.vat[2:] \ + or False, + 'amount_euro': self.statement_id.round_min_amount( + round(inv_intra_line.amount_euro) or 0, company_id), + 'amount_currency': + # >> da valorizzare solo per operazione Paesi non Euro + not inv_intra_line.invoice_id.company_id.currency_id.id + and inv_intra_line.invoice_id.currency_id.id + and round(inv_intra_line.amount_currency) + or 0, + 'transation_nature_id': ( + inv_intra_line.transation_nature_id and + inv_intra_line.transation_nature_id.id) or ( + company_id.intrastat_purchase_transation_nature_id and + company_id.intrastat_purchase_transation_nature_id.id) or + False, + 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, + 'weight_kg': + inv_intra_line.weight_kg and round(inv_intra_line.weight_kg) + or 0, + 'additional_units': + inv_intra_line.additional_units and \ + round(inv_intra_line.additional_units) or 0, + 'statistic_amount_euro': + self.statement_id.round_min_amount( + round(inv_intra_line.statistic_amount_euro) or + ( + company_id.intrastat_purchase_statistic_amount and + round(inv_intra_line.amount_euro)) or 0, company_id), + 'delivery_code_id': ( + inv_intra_line.delivery_code_id and + inv_intra_line.delivery_code_id.id) or ( + company_id.intrastat_purchase_delivery_code_id and + company_id.intrastat_purchase_delivery_code_id.id) or + False, + 'transport_code_id': ( + inv_intra_line.transport_code_id and + inv_intra_line.transport_code_id.id) or ( + company_id.intrastat_purchase_transport_code_id and + company_id.intrastat_purchase_transport_code_id.id) or False, + 'country_origin_id': inv_intra_line.country_origin_id and \ + inv_intra_line.country_origin_id.id or False, + 'country_good_origin_id': inv_intra_line.country_good_origin_id \ + and inv_intra_line.country_good_origin_id.id or False, + 'province_destination_id': ( + inv_intra_line.province_destination_id and + inv_intra_line.province_destination_id.id) or ( + company_id.intrastat_purchase_province_destination_id and + company_id.intrastat_purchase_province_destination_id.id) or + False + } + return res + + @api.model + def _prepare_export_line(self): + # Controls + # .. Vat code + if not self.vat_code: + raise ValidationError( + _('Missing Vat code for %s in Purchase Section 1') + % (self.partner_id.name,)) + + rcd = '' + # Codice dello Stato membro del fornitore + self.country_partner_id.with_context(control_ISO_code=True).\ + intrastat_validate() + rcd += '{:2s}'.format(self.country_partner_id.code or '') + # Codice IVA del fornitore + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Ammontare delle operazioni in valuta + rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) + # Codice della natura della transazione + rcd += '{:1s}'.format( + self.transation_nature_id and self.transation_nature_id.code or '') + # Codice della nomenclatura combinata della merce + rcd += '{:8s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + # Massa netta in chilogrammi + rcd += '{:10s}'.format(str(self.weight_kg).zfill(10)) + # Quantità espressa nell'unità di misura supplementare + rcd += '{:10s}'.format(str(self.additional_units).zfill(10)) + # Valore statistico in euro + rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) + # Codice delle condizioni di consegna + rcd += '{:1s}'.format( + self.delivery_code_id and self.delivery_code_id.code[:1] or '') + # Codice del modo di trasporto + rcd += '{:1s}'.format( + self.transport_code_id and str(self.transport_code_id.code) or '') + # Codice del paese di provenienza + rcd += '{:2s}'.format( + self.country_origin_id and self.country_origin_id.code or '') + # Codice del paese di origine della merce + rcd += '{:2s}'.format( + self.country_good_origin_id and self.country_good_origin_id.code \ + or '') + # Codice della provincia di destinazione della merce + rcd += '{:2s}'.format( + self.province_destination_id and self.province_destination_id.code \ + or '') + # ... new line + rcd += "\r" # + rcd += "\n" # + + return rcd + +class account_intrastat_statement_purchase_section2(models.Model): + _name = 'account.intrastat.statement.purchase.section2' + _description = 'Account INTRASTAT - Statement - Purchase Section 2' + + statement_id = fields.Many2one('account.intrastat.statement', + string='Statement', + readonly=True, + ondelete="cascade") + sequence = fields.Integer(string='Progressive') + month = fields.Integer(string='Month Ref of Refund') + quarterly = fields.Integer(string='Quarterly Ref of Refund') + year_id = fields.Integer(string='Year Ref of Refund') + partner_id = fields.Many2one('res.partner', string='Partner') + country_partner_id = fields.Many2one('res.country', + string='Country Partner') + vat_code = fields.Char(string='Vat Code Partner') + sign_variation = fields.Selection([ + ('+', '+'), + ('-', '-'), + ], 'Sign Variation') + amount_euro = fields.Integer(string='Amount Euro', + digits=dp.get_precision('Account')) + amount_currency = fields.Integer(string='Amount Currency', + digits=dp.get_precision('Account')) + transation_nature_id = fields.Many2one( + 'account.intrastat.transation.nature', string='Transation Nature') + intrastat_code_id = fields.Many2one( + 'report.intrastat.code', string='Intrastat Code Good') + statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', + digits=dp.get_precision('Account')) + invoice_id = fields.Many2one('account.invoice', string='Invoice', + readonly=True) + + @api.onchange('partner_id') + def change_partner_id(self): + if self.partner_id: + data = self.env['account.invoice.intrastat'].\ + _get_partner_data(self.partner_id) + self.country_partner_id = data['country_partner_id'] + self.vat_code = data['vat_code'] + + @api.model + def _prepare_statement_line(self, inv_intra_line): + company_id = self._context.get( + 'company_id', self.env.user.company_id) + # sign_variation + sign_variation = False + if inv_intra_line.invoice_id.type in ['in_refund']: + sign_variation = '-' + # Period Ref + #======================================================================= + # ref_period = self.statement_id._get_period_ref( + # inv_intra_line.invoice_id.intrastat_refund_period_id) + #======================================================================= + ref_period = self.statement_id._get_period_ref( + inv_intra_line.invoice_id) + res = { + 'invoice_id' : inv_intra_line.invoice_id.id or False, + 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, + 'month' : ref_period and ref_period['month'] or False, + 'quarterly' : ref_period and ref_period['quarterly'] or False, + 'year_id' : ref_period and ref_period['year_id'] or False, + 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'vat_code': + inv_intra_line.invoice_id.partner_id.vat \ + and inv_intra_line.invoice_id.partner_id.vat[2:] \ + or False, + 'sign_variation': sign_variation, + 'amount_euro': self.statement_id.round_min_amount( + round(inv_intra_line.amount_euro) or 0, company_id), + 'amount_currency': round(inv_intra_line.amount_currency) or 0, + 'transation_nature_id': ( + inv_intra_line.transation_nature_id and + inv_intra_line.transation_nature_id.id) or ( + company_id.intrastat_purchase_transation_nature_id and + company_id.intrastat_purchase_transation_nature_id.id) or + False, + 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, + 'statistic_amount_euro': + self.statement_id.round_min_amount( + round(inv_intra_line.statistic_amount_euro) or + ( + company_id.intrastat_purchase_statistic_amount and + round(inv_intra_line.amount_euro)) or 0, company_id), + } + return res + + @api.model + def _prepare_export_line(self): + # Controls + # .. Vat code + if not self.vat_code: + raise ValidationError( + _('Missing Vat code for %s in Purchase Section 2') + % (self.partner_id.name,)) + # .. year ref + if not self.year_id: + raise ValidationError( + _('Missing Year Ref on Purchase Section 2')) + # .. Sign variation + if not self.sign_variation: + raise ValidationError( + _('Missing Sign Variation on Purchase Section 2')) + # ...Period ref + if self.statement_id.period_type == 'M': + if not self.month: + raise ValidationError( + _('Missing Month Ref Variation on Purchase Section 2')) + else: + if not self.quarterly: + raise ValidationError( + _('Missing Quarterly Ref Variation on Purchase Section 2')) + rcd = '' + # Mese di riferimento del riepilogo da rettificare + rcd += '{:2s}'.format(str(self.month).zfill(2)) + # Trimestre di riferimento del riepilogo da rettificare + rcd += '{:1s}'.format(str(self.quarterly).zfill(1)) + # Anno periodo di ref da modificare + date_start_year = datetime.strptime(self.year_id.date_start, + '%Y-%m-%d') + rcd += '{:2s}'.format( + date_start_year and str(date_start_year.year)[2:] or '') + # Codice dello Stato membro del fornitore + self.country_partner_id.with_context(control_ISO_code=True).\ + intrastat_validate() + rcd += '{:2s}'.format(self.country_partner_id.code or '') + # Codice IVA del fornitore + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Segno da attribuire alle variazioni da X(1) apportare + rcd += '{:1s}'.format(self.sign_variation or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Ammontare delle operazioni in valuta + # >> da valorizzare solo per operazione Paesi non Euro + if not self.invoice_id.company_id.currency_id.id == \ + self.invoice_id.currency_id.id: + rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) + else: + rcd += '{:13s}'.format(str(0).zfill(13)) + # Codice della natura della transazione + rcd += '{:1s}'.format( + self.transation_nature_id and self.transation_nature_id.code or '') + # Codice della nomenclatura combinata della merce + rcd += '{:8s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + # Valore statistico in euro + rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) + # ... new line + rcd += "\r" # + rcd += "\n" # + + return rcd + +class account_intrastat_statement_purchase_section3(models.Model): + _name = 'account.intrastat.statement.purchase.section3' + _description = 'Account INTRASTAT - Statement - Purchase Section 3' + + statement_id = fields.Many2one('account.intrastat.statement', + string='Statement', + readonly=True, + ondelete="cascade") + sequence = fields.Integer(string='Progressive') + partner_id = fields.Many2one('res.partner', string='Partner') + country_partner_id = fields.Many2one('res.country', + string='Country Partner') + vat_code = fields.Char(string='Vat Code Partner') + amount_euro = fields.Integer(string='Amount Euro', + digits=dp.get_precision('Account')) + amount_currency = fields.Integer(string='Amount Currency', + digits=dp.get_precision('Account')) + invoice_number = fields.Char(string='Invoice Number') + invoice_date = fields.Date(string='Invoice Date') + intrastat_code_id = fields.Many2one('report.intrastat.code', + string='Intrastat Code Service') + supply_method = fields.Selection([ + ('I', 'Instant'), + ('R', 'Repeatedly'), + ], 'Supply Method') + payment_method = fields.Selection([ + ('B', 'Transfer'), + ('A', 'Accreditation'), + ('X', 'Other'), + ], 'Payment Method') + country_payment_id= fields.Many2one('res.country', 'Country Payment') + invoice_id = fields.Many2one( + 'account.invoice', string='Invoice', readonly=True) + + @api.onchange('partner_id') + def change_partner_id(self): + if self.partner_id: + data = self.env['account.invoice.intrastat'].\ + _get_partner_data(self.partner_id) + self.country_partner_id = data['country_partner_id'] + self.vat_code = data['vat_code'] + + @api.model + def _prepare_statement_line(self, inv_intra_line): + res = { + 'invoice_id' : inv_intra_line.invoice_id.id or False, + 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'vat_code': + inv_intra_line.invoice_id.partner_id.vat \ + and inv_intra_line.invoice_id.partner_id.vat[2:] \ + or False, + 'amount_euro': self.statement_id.round_min_amount( + round(inv_intra_line.amount_euro) or 0, + inv_intra_line.invoice_id.company_id), + 'amount_currency': + # >> da valorizzare solo per operazione Paesi non Euro + not inv_intra_line.invoice_id.company_id.currency_id.id + and inv_intra_line.invoice_id.currency_id.id + and round(inv_intra_line.amount_currency) + or 0, + 'invoice_number': inv_intra_line.invoice_number or False, + 'invoice_date': inv_intra_line.invoice_date or False, + 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, + 'supply_method': inv_intra_line.supply_method or False, + 'payment_method': inv_intra_line.payment_method or False, + 'country_payment_id': inv_intra_line.country_payment_id.id or False, + } + return res + + @api.model + def _prepare_export_line(self): + # Controls + # .. Vat code + if not self.vat_code: + raise ValidationError( + _('Missing Vat code for %s in Purchase Section 3') + % (self.partner_id.name,)) + + rcd = '' + # Codice dello Stato membro del fornitore + self.country_partner_id.with_context(control_ISO_code=True).\ + intrastat_validate() + rcd += '{:2s}'.format(self.country_partner_id.code or '') + # Codice IVA del fornitore + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Ammontare delle operazioni in valuta + rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) + # Numero Fattura + invoice_number = self.invoice_number + if len(invoice_number) > 15: + invoice_number = invoice_number[-15:] + rcd += '{:15s}'.format(str(invoice_number).zfill(15)) + # Data Fattura + invoice_date_ddmmyy = False + if self.invoice_date: + date_obj = datetime.strptime(self.invoice_date, '%Y-%m-%d') + invoice_date_ddmmyy = date_obj.strftime('%d%m%y') + rcd += '{:2s}'.format(invoice_date_ddmmyy or '') + # Codice del servizio + rcd += '{:6s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + # Modalità di erogazione + rcd += '{:1s}'.format(self.supply_method or '') + # Modalità di incasso + rcd += '{:1s}'.format(self.payment_method or '') + # Codice del paese di pagamento + rcd += '{:2s}'.format(self.country_payment_id and \ + self.country_payment_id.code or '') + # ... new line + rcd += "\r" # + rcd += "\n" # + + return rcd + + +class account_intrastat_statement_purchase_section4(models.Model): + _name = 'account.intrastat.statement.purchase.section4' + _description = 'Account INTRASTAT - Statement - Purchase Section 4' + + statement_id = fields.Many2one('account.intrastat.statement', + string='Statement', + readonly=True, + ondelete="cascade") + sequence = fields.Integer(string='Progressive') + custom_id = fields.Many2one('account.intrastat.custom', 'Custom') + month = fields.Integer(string='Month Ref of Refund') + quarterly = fields.Integer(string='Quarterly Ref of Refund') + year_id = fields.Integer(string='Year Ref of Variation') + protocol = fields.Integer(string='Protocol number', size=6) + progressive_to_modify_id = fields.Many2one( + 'account.intrastat.statement.purchase.section1', + 'Progressive to Modify') + progressive_to_modify = fields.Integer('Progressive to Modify') + partner_id = fields.Many2one('res.partner', string='Partner') + country_partner_id = fields.Many2one('res.country', + string='Country Partner') + vat_code = fields.Char(string='Vat Code Partner') + amount_euro = fields.Integer(string='Amount Euro', + digits=dp.get_precision('Account')) + amount_currency = fields.Integer(string='Amount Currency', + digits=dp.get_precision('Account')) + invoice_number = fields.Char(string='Invoice Number') + invoice_date = fields.Char(string='Invoice Date') + intrastat_code_id = fields.Many2one('report.intrastat.code', + string='Intrastat Code Service') + supply_method = fields.Selection([ + ('I', 'Instant'), + ('R', 'Repeatedly'), + ], 'Supply Method') + payment_method = fields.Selection([ + ('B', 'Transfer'), + ('A', 'Accreditation'), + ('X', 'Other'), + ], 'Payment Method') + country_payment_id= fields.Many2one('res.country', 'Country Payment') + invoice_id = fields.Many2one('account.invoice', string='Invoice', + readonly=True) + + @api.onchange('partner_id') + def change_partner_id(self): + if self.partner_id: + data = self.env['account.invoice.intrastat'].\ + _get_partner_data(self.partner_id) + self.country_partner_id = data['country_partner_id'] + self.vat_code = data['vat_code'] + + @api.model + def _prepare_statement_line(self, inv_intra_line): + # Period Ref + #======================================================================= + # ref_period = self.statement_id._get_period_ref( + # inv_intra_line.invoice_id.intrastat_refund_period_id) + #======================================================================= + ref_period = self.statement_id._get_period_ref( + inv_intra_line.invoice_id) + res = { + 'invoice_id' : inv_intra_line.invoice_id.id or False, + 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, + 'month' : ref_period and ref_period['month'] or False, + 'quarterly' : ref_period and ref_period['quarterly'] or False, + 'year_id' : ref_period and ref_period['year_id'] or False, + 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'vat_code': + inv_intra_line.invoice_id.partner_id.vat \ + and inv_intra_line.invoice_id.partner_id.vat[2:] \ + or False, + 'amount_euro': self.statement_id.round_min_amount( + round(inv_intra_line.amount_euro) or 0, + inv_intra_line.invoice_id.company_id), + 'amount_currency': round(inv_intra_line.amount_currency) or 0, + 'invoice_number': inv_intra_line.invoice_number or False, + 'invoice_date': inv_intra_line.invoice_date or False, + 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, + 'supply_method': inv_intra_line.supply_method or False, + 'payment_method': inv_intra_line.payment_method or False, + 'country_payment_id': inv_intra_line.country_payment_id.id or False, + } + return res + + @api.model + def _prepare_export_line(self): + # Controls + # .. Vat code + if not self.vat_code: + raise ValidationError( + _('Missing Vat code for %s in Purchase Section 4') + % (self.partner_id.name,)) + # .. year ref + if not self.year_id: + raise ValidationError( + _('Missing Year Ref on Purchase Section 4')) + # .. custom_id + if not self.custom_id: + raise ValidationError( + _('Missing custom on Purchase Section 4')) + # .. Protocol + if not self.protocol: + raise ValidationError( + _('Missing protocol on Purchase Section 4')) + # .. Progressive to modity + if not self.progressive_to_modify: + raise ValidationError( + _('Missing Progressive to modity on Purchase Section 4')) + # .. Invoice + if (not self.invoice_number) or (not self.invoice_date): + raise ValidationError( + _('Missing Invoice data on Purchase Section 4')) + # .. Supply method + if not self.supply_method: + raise ValidationError( + _('Missing Supply method on Purchase Section 4')) + # .. payment_method + if not self.payment_method: + raise ValidationError( + _('Missing Payment method on Purchase Section 4')) + # .. country_payment_id + if not self.country_payment_id: + raise ValidationError( + _('Missing Country Payment on Purchase Section 4')) + + rcd = '' + # Codice della sezione doganale in cui è stato registrata la + # dichiarazione da rettificare + rcd += '{:6s}'.format(self.custom_id and self.custom_id.code or '') + # Anno di registrazione della dichiarazione da rettificare + date_start_year = datetime.strptime(self.year_id.date_start, + '%Y-%m-%d') + rcd += '{:2s}'.format( + date_start_year and str(date_start_year.year)[2:] or '') + # Protocollo della dichiarazione da rettificare + rcd += '{:6s}'.format(self.protocol and str(self.protocol).zfill(6) \ + or '') + # Progressivo della sezione 3 da rettificare + rcd += '{:5s}'.format(self.progressive_to_modify_id and + str(self.progressive_to_modify_id.sequence).zfill(5) \ + or '') + # Codice dello Stato membro dell’acquirente + # Test anche che ci sia il codice nazione + country_id = self.country_partner_id \ + or self.partner_id.country_id + if country_id: + self.country_id.with_context(control_ISO_code=True).\ + intrastat_validate() + else: + raise ValidationError( + _('Partner without Country') ) + rcd += '{:2s}'.format(country_id.code or '') + # Codice IVA dell’acquirente + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Ammontare delle operazioni in valuta + # >> da valorizzare solo per operazione Paesi non Euro + if not self.invoice_id.company_id.currency_id.id == \ + self.invoice_id.currency_id.id: + rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) + else: + rcd += '{:13s}'.format(str(0).zfill(13)) + # Numero Fattura + rcd += '{:15s}'.format(str(self.invoice_number).zfill(15)) + # Data Fattura + invoice_date_ddmmyy = False + if self.invoice_date: + date_obj = datetime.strptime(self.invoice_date, '%Y-%m-%d') + invoice_date_ddmmyy = date_obj.strftime('%d%m%y') + rcd += '{:2s}'.format(invoice_date_ddmmyy or '') + # Codice del servizio + rcd += '{:6s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + # Modalità di erogazione + rcd += '{:1s}'.format(self.supply_method or '') + # Modalità di incasso + rcd += '{:1s}'.format(self.payment_method or '') + # Codice del paese di pagamento + rcd += '{:2s}'.format(self.country_payment_id and \ + self.country_payment_id.code or '') + # ... new line + rcd += "\r" + rcd += "\n" + + return rcd diff --git a/l10n_it_intrastat_statement/security/ir.model.access.csv b/l10n_it_intrastat_statement/security/ir.model.access.csv new file mode 100644 index 000000000000..b1231dc58cd6 --- /dev/null +++ b/l10n_it_intrastat_statement/security/ir.model.access.csv @@ -0,0 +1,11 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" + +acc_user_intrastat_statement,account_intrastat_statement user,model_account_intrastat_statement,account.group_account_user,1,1,1,1 +acc_user_intrastat_statement_sale_s1,account_intrastat_statement_sale_s1 user,model_account_intrastat_statement_sale_section1,account.group_account_user,1,1,1,1 +acc_user_intrastat_statement_sale_s2,account_intrastat_statement_sale_s2 user,model_account_intrastat_statement_sale_section2,account.group_account_user,1,1,1,1 +acc_user_intrastat_statement_sale_s3,account_intrastat_statement_sale_s3 user,model_account_intrastat_statement_sale_section3,account.group_account_user,1,1,1,1 +acc_user_intrastat_statement_sale_s4,account_intrastat_statement_sale_s4 user,model_account_intrastat_statement_sale_section4,account.group_account_user,1,1,1,1 +acc_user_intrastat_statement_purchase_s1,account_intrastat_statement_purchase_s1 user,model_account_intrastat_statement_purchase_section1,account.group_account_user,1,1,1,1 +acc_user_intrastat_statement_purchase_s2,account_intrastat_statement_purchase_s2 user,model_account_intrastat_statement_purchase_section2,account.group_account_user,1,1,1,1 +acc_user_intrastat_statement_purchase_s3,account_intrastat_statement_purchase_s3 user,model_account_intrastat_statement_purchase_section3,account.group_account_user,1,1,1,1 +acc_user_intrastat_statement_purchase_s4,account_intrastat_statement_purchase_s4 user,model_account_intrastat_statement_purchase_section4,account.group_account_user,1,1,1,1 diff --git a/l10n_it_intrastat_statement/security/rules.xml b/l10n_it_intrastat_statement/security/rules.xml new file mode 100644 index 000000000000..d62d91d5fd0d --- /dev/null +++ b/l10n_it_intrastat_statement/security/rules.xml @@ -0,0 +1,11 @@ + + + + + Account INTRASTAT - Statement - multi company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + + diff --git a/l10n_it_intrastat_statement/static/description/icon.png b/l10n_it_intrastat_statement/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3642c5fa1f989510b7d0c98b53b7ee25c8840fa2 GIT binary patch literal 6821 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 TBR6r900000NkvXXu0mjfZIC&! literal 0 HcmV?d00001 diff --git a/l10n_it_intrastat_statement/views/config.xml b/l10n_it_intrastat_statement/views/config.xml new file mode 100644 index 000000000000..32385751f48b --- /dev/null +++ b/l10n_it_intrastat_statement/views/config.xml @@ -0,0 +1,19 @@ + + + + + + view_form_intrastat_statement_company + res.company + + + + + + + + + + + + \ No newline at end of file diff --git a/l10n_it_intrastat_statement/views/intrastat.xml b/l10n_it_intrastat_statement/views/intrastat.xml new file mode 100644 index 000000000000..05638aa46780 --- /dev/null +++ b/l10n_it_intrastat_statement/views/intrastat.xml @@ -0,0 +1,539 @@ + + + + + + + account.intrastat.statement.tree.view + account.intrastat.statement + + + + + + + + + account.intrastat.statement.form.view + account.intrastat.statement + +
+

+ Richiedi i dati per la preparazione, compilazione ed export della dichiarazione + per l'agenzia delle dogane +

+ + + + +
+ + + view.search.account.intrastat.statement + account.intrastat.statement + + + + + + + + + + + + + + + + Intrastat Statements + ir.actions.act_window + account.intrastat.statement + form + tree,form + + + + + + + + + + views.tree.statement.sale.section1 + account.intrastat.statement.sale.section1 + + + + + + + + + + + + + + + + views.form.statement.sale.section1 + account.intrastat.statement.sale.section1 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + views.tree.statement.sale.section2 + account.intrastat.statement.sale.section2 + + + + + + + + + + + + + + + + + views.form.statement.sale.section2 + account.intrastat.statement.sale.section2 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + views.tree.statement.sale.section3 + account.intrastat.statement.sale.section3 + + + + + + + + + + + + + + + views.form.statement.sale.section3 + account.intrastat.statement.sale.section3 + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + views.tree.statement.sale.section4 + account.intrastat.statement.sale.section4 + + + + + + + + + + + + + + + + views.form.statement.sale.section4 + account.intrastat.statement.sale.section4 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + views.tree.statement.purchase.section1 + account.intrastat.statement.purchase.section1 + + + + + + + + + + + + + + + + views.form.statement.purchase.section1 + account.intrastat.statement.purchase.section1 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + views.tree.statement.purchase.section2 + account.intrastat.statement.purchase.section2 + + + + + + + + + + + + + + + + + views.form.statement.purchase.section2 + account.intrastat.statement.purchase.section2 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + views.tree.statement.purchase.section3 + account.intrastat.statement.purchase.section3 + + + + + + + + + + + + + + + views.form.statement.purchase.section3 + account.intrastat.statement.purchase.section3 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + views.tree.statement.purchase.section4 + account.intrastat.statement.purchase.section4 + + + + + + + + + + + + + + + + views.form.statement.purchase.section4 + account.intrastat.statement.purchase.section4 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + account.intrastat.custom.view.tree + account.intrastat.custom + + + + + + + + + + + + account.intrastat.custom.view.form + account.intrastat.custom + +
+ + + + + + + + + + +
+
+
+
+
diff --git a/l10n_it_intrastat_statement/wizard/__init__.py b/l10n_it_intrastat_statement/wizard/__init__.py new file mode 100644 index 000000000000..7456b975dd88 --- /dev/null +++ b/l10n_it_intrastat_statement/wizard/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# +# Author: Alessandro Camilli (a.camilli@openforce.it) +# Copyright (C) 2015 +# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it +# Openforce di Camilli Alessandro - www.openforce.it +# + + +from . import export_file diff --git a/l10n_it_intrastat_statement/wizard/export_file.py b/l10n_it_intrastat_statement/wizard/export_file.py new file mode 100644 index 000000000000..626a2046895b --- /dev/null +++ b/l10n_it_intrastat_statement/wizard/export_file.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# +# Author: Openforce di Camilli Alessandro (www.openforce.it) +# Copyright (C) 2015 +# + +from openerp import models, api, fields +import base64 +import contextlib +import cStringIO + +from openerp import tools +from openerp.tools.translate import _ +from openerp.tools.misc import get_iso_codes + +class account_intrastat_export_file(models.TransientModel): + _name = "account.intrastat.export.file" + + name = fields.Char(string='File Name', readonly=True) + data = fields.Binary(string='File', readonly=True) + state = fields.Selection([('choose', 'choose'), + ('get', 'get')], + string='State', default='choose') + + @api.multi + def act_getfile(self): + statement_id = self.env.context.get('active_id') + statement = self.env['account.intrastat.statement'].browse(statement_id) + file = statement.generate_file_export() + filename = statement._get_file_name() + # file = self.env['account.intrastat.statement'].\ + # browse(statement_id).generate_file_export() + out = base64.encodestring(file) + + view = self.env['ir.model.data'].get_object_reference( + 'l10n_it_intrastat_statement', + 'wizard_account_intrastat_export_file') + view_id = view[1] or False + + # name = "%s.%s" % (filename, extension) + self.write({ 'state': 'get', 'data': out, 'name': filename }) + return { + 'type': 'ir.actions.act_window', + 'res_model': 'account.intrastat.export.file', + 'view_mode': 'form', + 'view_type': 'form', + 'name': _('Export Intrastat File'), + 'res_id': self.id, + 'nodestroy': True, + #'views': [(False, 'form')], + 'view_id': [view_id], + 'target': 'new', + } + + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/l10n_it_intrastat_statement/wizard/export_file_view.xml b/l10n_it_intrastat_statement/wizard/export_file_view.xml new file mode 100644 index 000000000000..abca672472fa --- /dev/null +++ b/l10n_it_intrastat_statement/wizard/export_file_view.xml @@ -0,0 +1,48 @@ + + + + + Export Intrastat File + account.intrastat.export.file + +
+ + + +
+

Export Complete

+

Here is the exported file:

+
+
+
+
+
+ +
+
+ + + Export Intrastat File + ir.actions.act_window + account.intrastat.export.file + form + form + + new + + +
+
From 90af11319147c23b4b611e2ad4d553ba44b67c39 Mon Sep 17 00:00:00 2001 From: Lara Baggio Date: Thu, 6 Jun 2019 15:53:06 +0200 Subject: [PATCH 02/61] rinominati e spostati file per pulizia --- l10n_it_intrastat_statement/__init__.py | 10 - l10n_it_intrastat_statement/__manifest__.py | 63 +- l10n_it_intrastat_statement/i18n/it.po | 108 +- .../i18n/l10n_it_intrastat_statement.pot | 1157 +++++++++++++++++ .../models/__init__.py | 10 - l10n_it_intrastat_statement/models/config.py | 17 +- .../models/intrastat.py | 1118 ++++++++-------- .../report/intrastat_mod1_bis.xml | 142 ++ .../report/report_intrastat_mod1.xml | 133 ++ .../report/report_intrastat_mod2.xml | 131 ++ .../report/report_intrastat_mod2_bis.xml | 150 +++ .../report/reports.xml | 77 ++ .../security/rules.xml | 4 +- .../static/img/logo_dogane.gif | Bin 0 -> 11105 bytes l10n_it_intrastat_statement/views/config.xml | 20 +- .../views/intrastat.xml | 685 ++++++---- .../wizard/__init__.py | 9 - .../wizard/export_file.py | 52 +- .../wizard/export_file_view.xml | 84 +- 19 files changed, 2925 insertions(+), 1045 deletions(-) create mode 100644 l10n_it_intrastat_statement/i18n/l10n_it_intrastat_statement.pot create mode 100644 l10n_it_intrastat_statement/report/intrastat_mod1_bis.xml create mode 100644 l10n_it_intrastat_statement/report/report_intrastat_mod1.xml create mode 100644 l10n_it_intrastat_statement/report/report_intrastat_mod2.xml create mode 100644 l10n_it_intrastat_statement/report/report_intrastat_mod2_bis.xml create mode 100644 l10n_it_intrastat_statement/report/reports.xml create mode 100644 l10n_it_intrastat_statement/static/img/logo_dogane.gif diff --git a/l10n_it_intrastat_statement/__init__.py b/l10n_it_intrastat_statement/__init__.py index ccec88119861..9b4296142f47 100644 --- a/l10n_it_intrastat_statement/__init__.py +++ b/l10n_it_intrastat_statement/__init__.py @@ -1,12 +1,2 @@ -# -*- coding: utf-8 -*- -# -# Author: Alessandro Camilli (a.camilli@openforce.it) -# Copyright (C) 2015 -# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it -# Openforce di Camilli Alessandro - www.openforce.it -# - - from . import models from . import wizard - diff --git a/l10n_it_intrastat_statement/__manifest__.py b/l10n_it_intrastat_statement/__manifest__.py index bf66f787d060..598e0f211109 100644 --- a/l10n_it_intrastat_statement/__manifest__.py +++ b/l10n_it_intrastat_statement/__manifest__.py @@ -1,53 +1,16 @@ -# -*- coding: utf-8 -*- -# -# Author: Alessandro Camilli (a.camilli@openforce.it) -# Copyright (C) 2015 -# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it -# Openforce di Camilli Alessandro - www.openforce.it -# LinkIt Srl () -# -# Odoo Proprietary License v1.0 -# -# This software and associated files (the "Software") may only be used -# (executed, modified, executed after modifications) if you have purchased a -# valid license from the authors, typically via Odoo Apps, or if you have -# received a written agreement from the authors of the Software -# -# You may develop Odoo modules that use the Software as a library (typically by -# depending on it, importing it and using its resources), but without copying -# any source code or material from the Software. You may distribute those -# modules under the license of your choice, provided that this license is -# compatible with the terms of the Odoo Proprietary License (For example: -# LGPL, MIT, or proprietary licenses similar to this one). -# -# It is forbidden to publish, distribute, sublicense, or sell copies of the -# Software or modified copies of the Software. -# -# The above copyright notice and this permission notice must be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - { - 'name': 'Account - Intrastat Declaration', - 'version': '10.0.1.0.0', + 'name': 'ITA - Dichiarazione Intrastat', + 'version': '11.0.1.0.0', 'category': 'Account', - 'description': """ - Intrastat Declaration and export file. - """, - 'author': 'Openforce di Alessandro Camilli per Apulia Software srl' - ', Lara Baggio per Link IT srl', - 'website': 'http://apuliasoftware.it/', - 'license': 'Other proprietary', + 'summary': 'Dichiarazione Intrastat per l\'Agenzia delle Dogane', + 'author': 'Openforce' + ', Link IT srl, Odoo Community Association (OCA)', + 'website': 'https://github.com/OCA/l10n-italy', + 'license': 'LGPL-3', "depends": [ 'l10n_it_intrastat', - ], + 'web', + ], "data": [ 'data/sequence.xml', 'security/ir.model.access.csv', @@ -55,8 +18,12 @@ 'wizard/export_file_view.xml', 'views/config.xml', 'views/intrastat.xml', - ], + 'report/report_intrastat_mod1.xml', + 'report/intrastat_mod1_bis.xml', + 'report/report_intrastat_mod2.xml', + 'report/report_intrastat_mod2_bis.xml', + 'report/reports.xml', + ], "demo": [], "installable": True } - diff --git a/l10n_it_intrastat_statement/i18n/it.po b/l10n_it_intrastat_statement/i18n/it.po index 0c3fbb57d332..f1c20a323cd6 100644 --- a/l10n_it_intrastat_statement/i18n/it.po +++ b/l10n_it_intrastat_statement/i18n/it.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0+e\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-12-06 08:56+0000\n" -"PO-Revision-Date: 2017-12-06 08:56+0000\n" +"POT-Creation-Date: 2018-06-29 14:56+0000\n" +"PO-Revision-Date: 2018-06-29 14:56+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -97,7 +97,7 @@ msgstr "Tutte (Fiscali e statistici)" #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_amount_currency #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_amount_currency msgid "Amount Currency" -msgstr "Importo valuta" +msgstr "Importo Valuta" #. module: l10n_it_intrastat_statement #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_amount_euro @@ -238,6 +238,16 @@ msgstr "Sezione doganale" msgid "Data Type" msgstr "Tipo dati" +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_date_start +msgid "Date Start" +msgstr "Date Start" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_date_stop +msgid "Date Stop" +msgstr "Date Stop" + #. module: l10n_it_intrastat_statement #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_delivery_code_id #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_delivery_code_id @@ -256,7 +266,7 @@ msgstr "Consegna" #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_display_name #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_display_name msgid "Display Name" -msgstr "Nome Visualizzato" +msgstr "Visualizza Nome" #. module: l10n_it_intrastat_statement #: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file @@ -269,7 +279,7 @@ msgid "Export File" msgstr "Export File" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/wizard/export_file.py:47 +#: code:addons/l10n_it_intrastat_statement/wizard/export_file.py:39 #: model:ir.actions.act_window,name:l10n_it_intrastat_statement.action_wizard_wizard_account_intrastat_export_file #: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file #, python-format @@ -420,7 +430,7 @@ msgstr "Fattura" #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_date #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_date msgid "Invoice Date" -msgstr "Data fattura" +msgstr "Data Fattura" #. module: l10n_it_intrastat_statement #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_number @@ -431,10 +441,10 @@ msgid "Invoice Number" msgstr "Numero Fattura" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:927 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:964 #, python-format -msgid "Invoice and refund in the same period with refound > invoice for partner %s" -msgstr "Fatture e nota credito nello stesso periodo con rettifica > valore fattura per il partner %s" +msgid "Invoice and refund in the same period with refund > invoice for partner %s" +msgstr "Invoice and refund in the same period with refund > invoice for partner %s" #. module: l10n_it_intrastat_statement #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file___last_update @@ -448,7 +458,7 @@ msgstr "Fatture e nota credito nello stesso periodo con rettifica > valore fattu #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3___last_update #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4___last_update msgid "Last Modified on" -msgstr "Ultima modifica il" +msgstr "Data di ultima modifica" #. module: l10n_it_intrastat_statement #: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_write_uid @@ -479,193 +489,193 @@ msgid "Last Updated on" msgstr "Ultima modifica il" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2118 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2155 #, python-format msgid "Missing Country Payment on Purchase Section 4" msgstr "Manca Paese pagamento su Acquisti Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1490 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1527 #, python-format msgid "Missing Country Payment on Sale Section 4" msgstr "Manca Paese pagamento su Vendite Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2106 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2143 #, python-format msgid "Missing Invoice data on Purchase Section 4" msgstr "Manca data fattura su Acquisti Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1478 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1515 #, python-format msgid "Missing Invoice data on Sale Section 4" msgstr "Manca data fattura su Vendite Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1831 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1868 #, python-format msgid "Missing Month Ref Variation on Purchase Section 2" msgstr "Manca il mese di riferimento nella varazione degli acquisti nella sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1227 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1264 #, python-format msgid "Missing Month Ref Variation on Sale Section 2" msgstr "Manca il mese di riferimento nella varazione delle vendite nella sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2114 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2151 #, python-format msgid "Missing Payment method on Purchase Section 4" msgstr "Manca metodo di pagamento su Acquisti Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1486 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1523 #, python-format msgid "Missing Payment method on Sale Section 4" msgstr "Manca metodo di pagamento su Vendite Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2102 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2139 #, python-format msgid "Missing Progressive to modity on Purchase Section 4" msgstr "Manca progressivo da modificare su Acquisti Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1474 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1511 #, python-format msgid "Missing Progressive to modity on Sale Section 4" msgstr "Manca progressivo da modificare su Vendite Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1835 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1872 #, python-format msgid "Missing Quarterly Ref Variation on Purchase Section 2" msgstr "Manca il trimestre di riferimento nella varazione degli acquisti nella sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1231 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1268 #, python-format msgid "Missing Quarterly Ref Variation on Sale Section 2" msgstr "Manca il trimestre di riferimento nella varazione delle vendite nella sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1826 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1863 #, python-format msgid "Missing Sign Variation on Purchase Section 2" msgstr "Manca il segno nella variazione degli acquisti sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1222 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1259 #, python-format msgid "Missing Sign Variation on Sale Section 2" msgstr "Manca il segno nella variazione nelle vendite sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2110 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2147 #, python-format msgid "Missing Supply method on Purchase Section 4" msgstr "Manca Modalità di erogazione su Acquisti sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1482 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1519 #, python-format msgid "Missing Supply method on Sale Section 4" msgstr "Manca Modalità di erogazione su Vendite sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1675 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1712 #, python-format msgid "Missing Vat code for %s in Purchase Section 1" msgstr "Missing Vat code for %s in Purchase Section 1" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1817 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1854 #, python-format msgid "Missing Vat code for %s in Purchase Section 2" msgstr "Manca codice IVA per %s in Acquisti Sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1953 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1990 #, python-format msgid "Missing Vat code for %s in Purchase Section 3" msgstr "Manca codice IVA per %s in Acquisti Sezione 3" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2085 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2122 #, python-format msgid "Missing Vat code for %s in Purchase Section 4" msgstr "Manca codice IVA per %s in Acquisti Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1079 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1116 #, python-format msgid "Missing Vat code for %s in Sale Section 1" msgstr "Manca codice IVA per %s in Vendite Sezione 1" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1213 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1250 #, python-format msgid "Missing Vat code for %s in Sale Section 2" msgstr "Manca codice IVA per %s in Vendite Sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1336 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1373 #, python-format msgid "Missing Vat code for %s in Sale Section 3" msgstr "Manca codice IVA per %s in Vendite Sezione 3" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1457 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1494 #, python-format msgid "Missing Vat code for %s in Sale Section 4" msgstr "Manca codice IVA per %s in Vendite Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1822 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1859 #, python-format msgid "Missing Year Ref on Purchase Section 2" msgstr "Manca l'anno di rifermento nella variazione degli acquisti sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2090 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2127 #, python-format msgid "Missing Year Ref on Purchase Section 4" msgstr "Manca l'anno di rifermento nella variazione degli acquisti sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1218 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1255 #, python-format msgid "Missing Year Ref on Sale Section 2" msgstr "Manca l'anno di rifermento nella variazione delle vendite sezione 2" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1462 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1499 #, python-format msgid "Missing Year Ref on Sale Section 4" msgstr "Manca l'anno di rifermento nella variazione delle vendite sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2094 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2131 #, python-format msgid "Missing custom on Purchase Section 4" msgstr "Manca sezione doganale su Acquisti Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1466 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1503 #, python-format msgid "Missing custom on Sale Section 4" msgstr "Manca sezione doganale su Vendite Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2098 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2135 #, python-format msgid "Missing protocol on Purchase Section 4" msgstr "Manca Protocollo in Acquisti Sezione 4" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1470 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1507 #, python-format msgid "Missing protocol on Sale Section 4" msgstr "Manca Protocollo in Vendite Sezione 4" @@ -699,7 +709,7 @@ msgid "Normal Period" msgstr "Periodo Normale" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:683 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:719 #, python-format msgid "Nothing to export" msgstr "Nulla da esportare" @@ -754,8 +764,8 @@ msgid "Partner" msgstr "Partner" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1517 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2145 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1554 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2182 #, python-format msgid "Partner without Country" msgstr "Partner senza nazione" @@ -774,13 +784,13 @@ msgid "Period" msgstr "Periodo" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:962 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:999 #, python-format msgid "Period Not Valid! Range accepted: from 1 to 12" msgstr "Periodo non valido! (Solo da 1 to 12 )" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:966 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1003 #, python-format msgid "Period Not Valid! Range accepted: from 1 to 4" msgstr "Periodo non valido! (solo da 1 a 4)" @@ -965,7 +975,7 @@ msgid "Statement Sequence" msgstr "Statement Sequence" #. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:693 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:729 #, python-format msgid "Statement without lines" msgstr "Statement without lines" diff --git a/l10n_it_intrastat_statement/i18n/l10n_it_intrastat_statement.pot b/l10n_it_intrastat_statement/i18n/l10n_it_intrastat_statement.pot new file mode 100644 index 000000000000..261a197ef2a8 --- /dev/null +++ b/l10n_it_intrastat_statement/i18n/l10n_it_intrastat_statement.pot @@ -0,0 +1,1157 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_it_intrastat_statement +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0+e-20190417\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-06-26 15:07+0000\n" +"PO-Revision-Date: 2019-06-26 15:07+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: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement +msgid "Account INTRASTAT - Statement" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section1 +msgid "Account INTRASTAT - Statement - Purchase Section 1" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section2 +msgid "Account INTRASTAT - Statement - Purchase Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section3 +msgid "Account INTRASTAT - Statement - Purchase Section 3" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section4 +msgid "Account INTRASTAT - Statement - Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section1 +msgid "Account INTRASTAT - Statement - Sale Section 1" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section2 +msgid "Account INTRASTAT - Statement - Sale Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section3 +msgid "Account INTRASTAT - Statement - Sale Section 3" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section4 +msgid "Account INTRASTAT - Statement - Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,payment_method:0 +#: selection:account.intrastat.statement.purchase.section4,payment_method:0 +#: selection:account.intrastat.statement.sale.section3,payment_method:0 +#: selection:account.intrastat.statement.sale.section4,payment_method:0 +msgid "Accreditation" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_additional_units +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_additional_units +msgid "Additional Units" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_additional_units_required +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_additional_units_required +msgid "Additional Units Required" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_additional_units_uom +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_additional_units_uom +msgid "Additional Units UOM" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_type_data:0 +msgid "All (Fiscal and Statistic)" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_amount_currency +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_amount_currency +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_amount_currency +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_amount_currency +msgid "Amount Currency" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_amount_euro +msgid "Amount Euro" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Cancel" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,content_type:0 +msgid "Change Period in quarterly: only first and second month operations" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,content_type:0 +msgid "Change Period in quarterly: only first month operations" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,special_cases:0 +msgid "Change VAT or Close Activity" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Close" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_intrastat_code_type +msgid "Code Type" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_res_company +msgid "Companies" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_company_id +msgid "Company" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_content_type +msgid "Content Type" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_country_partner_id +msgid "Country Customer" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_country_destination_id +msgid "Country Destination" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_country_good_origin_id +msgid "Country Good Origin" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_country_origin_id +msgid "Country Origin" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_country_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_country_partner_id +msgid "Country Partner" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_country_payment_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_country_payment_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_country_payment_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_country_payment_id +msgid "Country Payment" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_create_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_create_uid +msgid "Created by" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_create_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_create_date +msgid "Created on" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_custom_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_custom_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_custom_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_res_company_intrastat_custom_id +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_custom_view_form +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_custom_view_tree +msgid "Custom" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_intrastat_type_data +msgid "Data Type" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_date_start +msgid "Date Start" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_date_stop +msgid "Date Stop" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_delivery_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_delivery_code_id +msgid "Delivery" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_display_name +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Export Complete" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Export File" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/wizard/export_file.py:43 +#: code:addons/l10n_it_intrastat_statement/wizard/export_file.py:44 +#: model:ir.actions.act_window,name:l10n_it_intrastat_statement.action_wizard_wizard_account_intrastat_export_file +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +#, python-format +msgid "Export Intrastat File" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Export acquisti.cee" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Export cessioni.cee" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Export file invio" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_data +msgid "File" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_name +msgid "File Name" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,special_cases:0 +msgid "First Statement" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,special_cases:0 +msgid "First Statement in Change VAT or Close Activity" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_type_data:0 +msgid "Fiscal" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_code_type:0 +msgid "Good" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Goods Purchase - Section 1" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Goods Refund - Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Goods Refund Purchase - Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Goods Sale - Section 1" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Group By" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "Here is the exported file:" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_id +msgid "ID" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_tree_view +msgid "INTRASTAT Statement" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,supply_method:0 +#: selection:account.intrastat.statement.purchase.section4,supply_method:0 +#: selection:account.intrastat.statement.sale.section3,supply_method:0 +#: selection:account.intrastat.statement.sale.section4,supply_method:0 +msgid "Instant" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_intrastat_code_id +msgid "Intrastat Code Good" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_intrastat_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_intrastat_code_id +msgid "Intrastat Code Service" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.actions.act_window,name:l10n_it_intrastat_statement.account_intrastat_statement_action +#: model:ir.ui.menu,name:l10n_it_intrastat_statement.menu_account_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Intrastat Statements" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_id +msgid "Invoice" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_invoice_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_date +msgid "Invoice Date" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_invoice_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_number +msgid "Invoice Number" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:923 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:938 +#, python-format +msgid "Invoice and refund in the same period with refund > invoice for partner %s" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3___last_update +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4___last_update +msgid "Last Modified on" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_write_uid +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_write_date +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_write_date +msgid "Last Updated on" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2094 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2157 +#, python-format +msgid "Missing Country Payment on Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1473 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1505 +#, python-format +msgid "Missing Country Payment on Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2082 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2145 +#, python-format +msgid "Missing Invoice data on Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1461 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1493 +#, python-format +msgid "Missing Invoice data on Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1811 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1867 +#, python-format +msgid "Missing Month Ref Variation on Purchase Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1213 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1240 +#, python-format +msgid "Missing Month Ref Variation on Sale Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2090 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2153 +#, python-format +msgid "Missing Payment method on Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1469 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1501 +#, python-format +msgid "Missing Payment method on Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2078 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2141 +#, python-format +msgid "Missing Progressive to modity on Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1457 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1489 +#, python-format +msgid "Missing Progressive to modity on Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1815 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1871 +#, python-format +msgid "Missing Quarterly Ref Variation on Purchase Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1217 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1244 +#, python-format +msgid "Missing Quarterly Ref Variation on Sale Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1806 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1862 +#, python-format +msgid "Missing Sign Variation on Purchase Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1208 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1235 +#, python-format +msgid "Missing Sign Variation on Sale Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2086 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2149 +#, python-format +msgid "Missing Supply method on Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1465 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1497 +#, python-format +msgid "Missing Supply method on Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1659 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1710 +#, python-format +msgid "Missing Vat code for %s in Purchase Section 1" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1797 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1853 +#, python-format +msgid "Missing Vat code for %s in Purchase Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1931 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1992 +#, python-format +msgid "Missing Vat code for %s in Purchase Section 3" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2061 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2124 +#, python-format +msgid "Missing Vat code for %s in Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1071 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1093 +#, python-format +msgid "Missing Vat code for %s in Sale Section 1" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1199 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1226 +#, python-format +msgid "Missing Vat code for %s in Sale Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1322 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1352 +#, python-format +msgid "Missing Vat code for %s in Sale Section 3" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1440 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1472 +#, python-format +msgid "Missing Vat code for %s in Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1802 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1858 +#, python-format +msgid "Missing Year Ref on Purchase Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2066 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2129 +#, python-format +msgid "Missing Year Ref on Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1204 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1231 +#, python-format +msgid "Missing Year Ref on Sale Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1445 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1477 +#, python-format +msgid "Missing Year Ref on Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2070 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2133 +#, python-format +msgid "Missing custom on Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1449 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1481 +#, python-format +msgid "Missing custom on Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2074 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2137 +#, python-format +msgid "Missing protocol on Purchase Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1453 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1485 +#, python-format +msgid "Missing protocol on Sale Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,period_type:0 +msgid "Month" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_month +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_month +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_month +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_month +msgid "Month Ref of Refund" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_name_delegate +msgid "Name delegate" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,special_cases:0 +msgid "None of the above cases" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,content_type:0 +msgid "Normal Period" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:708 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:712 +#, python-format +msgid "Nothing to export" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_number +msgid "Number" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_operation_amount +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_operation_amount +msgid "Operation Amount" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_operation_number +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_operation_number +msgid "Operation Nr" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,payment_method:0 +#: selection:account.intrastat.statement.purchase.section4,payment_method:0 +#: selection:account.intrastat.statement.sale.section3,payment_method:0 +#: selection:account.intrastat.statement.sale.section4,payment_method:0 +msgid "Other" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_partner_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_partner_id +msgid "Partner" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1500 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1531 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2119 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2185 +#, python-format +msgid "Partner without Country" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_payment_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_payment_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_payment_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_payment_method +msgid "Payment Method" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_period_number +msgid "Period" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:955 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:971 +#, python-format +msgid "Period Not Valid! Range accepted: from 1 to 12" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:959 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:975 +#, python-format +msgid "Period Not Valid! Range accepted: from 1 to 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_period_type +msgid "Period Type" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_sequence +msgid "Progressive" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_progressive_to_modify +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_progressive_to_modify_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_progressive_to_modify +msgid "Progressive to Modify" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_protocol +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_protocol +msgid "Protocol number" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_province_destination_id +msgid "Province Destination" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_province_origin_id +msgid "Province Origin" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Purchase" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_ids +msgid "Purchase - Section 1" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_ids +msgid "Purchase - Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_ids +msgid "Purchase - Section 3" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_ids +msgid "Purchase - Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,period_type:0 +msgid "Quarterly" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_quarterly +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_quarterly +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_quarterly +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_quarterly +msgid "Quarterly Ref of Refund" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Recompute" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,supply_method:0 +#: selection:account.intrastat.statement.purchase.section4,supply_method:0 +#: selection:account.intrastat.statement.sale.section3,supply_method:0 +#: selection:account.intrastat.statement.sale.section4,supply_method:0 +msgid "Repeatedly" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Sale" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_ids +msgid "Sale - Section 1" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_ids +msgid "Sale - Section 2" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_ids +msgid "Sale - Section 3" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_ids +msgid "Sale - Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_code_type:0 +msgid "Service" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Services Purchase - Section 3" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Services Refund - Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Services Refund Purchase - Section 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view +msgid "Services Sale - Section 3" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_sign_variation +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_sign_variation +msgid "Sign Variation" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_special_cases +msgid "Special Cases" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_state +msgid "State" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_statement_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_statement_id +msgid "Statement" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_statement_sequence +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_statement_sequence +msgid "Statement Sequence" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:718 +#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:722 +#, python-format +msgid "Statement without lines" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement,intrastat_type_data:0 +msgid "Statistic" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_statistic_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_statistic_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_statistic_amount_euro +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_statistic_amount_euro +msgid "Statistic Amount Euro" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_date +msgid "Submission Date" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_supply_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_supply_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_supply_method +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_supply_method +msgid "Supply Method" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section1 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section2 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section3 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section4 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section1 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section2 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section3 +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section4 +msgid "Total" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_transation_nature_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_transation_nature_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_transation_nature_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_transation_nature_id +msgid "Transation Nature" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.statement.purchase.section3,payment_method:0 +#: selection:account.intrastat.statement.purchase.section4,payment_method:0 +#: selection:account.intrastat.statement.sale.section3,payment_method:0 +#: selection:account.intrastat.statement.sale.section4,payment_method:0 +msgid "Transfer" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_transport_code_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_transport_code_id +msgid "Transport" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,help:l10n_it_intrastat_statement.field_account_intrastat_statement_period_number +msgid "Values accepted: - Month : From 1 to 12 - Quarterly: From 1 to 4" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_vat_code +msgid "Vat Code Customer" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_vat_code +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_vat_code +msgid "Vat Code Partner" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_vat_delegate +msgid "Vat delegate" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_vat_taxpayer +msgid "Vat taxpayer" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_weight_kg +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_weight_kg +msgid "Weight kg" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_fiscalyear +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement +msgid "Year" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_year_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_year_id +msgid "Year Ref of Refund" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_year_id +#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_year_id +msgid "Year Ref of Variation" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_export_file +msgid "account.intrastat.export.file" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.export.file,state:0 +msgid "choose" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: selection:account.intrastat.export.file,state:0 +msgid "get" +msgstr "" + +#. module: l10n_it_intrastat_statement +#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file +msgid "or" +msgstr "" + diff --git a/l10n_it_intrastat_statement/models/__init__.py b/l10n_it_intrastat_statement/models/__init__.py index 28fbc1acf9e7..8ff16bfdc099 100644 --- a/l10n_it_intrastat_statement/models/__init__.py +++ b/l10n_it_intrastat_statement/models/__init__.py @@ -1,12 +1,2 @@ -# -*- coding: utf-8 -*- -# -# Author: Apruzzese Francesco (f.apruzzese@apuliasoftware.it) -# Copyright (C) 2015 -# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it -# Openforce di Camilli Alessandro - www.openforce.it -# - - from . import config from . import intrastat - diff --git a/l10n_it_intrastat_statement/models/config.py b/l10n_it_intrastat_statement/models/config.py index 51d0ea2f0d0e..9eb810213553 100644 --- a/l10n_it_intrastat_statement/models/config.py +++ b/l10n_it_intrastat_statement/models/config.py @@ -1,18 +1,9 @@ -# -*- coding: utf-8 -*- -# -# Author: Alessandro Camilli (a.camilli@openforce.it) -# Copyright (C) 2015 -# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it -# Openforce di Camilli Alessandro - www.openforce.it -# +from openerp import models, fields -from openerp import models, fields, api - -class res_company(models.Model): +class ResCompany(models.Model): _inherit = 'res.company' - + intrastat_custom_id = fields.Many2one( 'account.intrastat.custom', string='Custom' - ) - + ) diff --git a/l10n_it_intrastat_statement/models/intrastat.py b/l10n_it_intrastat_statement/models/intrastat.py index 80d8fee69576..dd428ea50d08 100644 --- a/l10n_it_intrastat_statement/models/intrastat.py +++ b/l10n_it_intrastat_statement/models/intrastat.py @@ -1,26 +1,18 @@ -# -*- coding: utf-8 -*- -# -# Author: Alessandro Camilli (a.camilli@openforce.it) -# Copyright (C) 2015 -# Apulia Software srl - info@apuliasoftware.it - www.apuliasoftware.it -# Openforce di Camilli Alessandro - www.openforce.it -# - - from openerp import models, fields, api, _ import openerp.addons.decimal_precision as dp -from openerp.exceptions import except_orm, ValidationError +from openerp.exceptions import ValidationError from datetime import datetime, date, timedelta -class account_intrastat_statement(models.Model): +class AccountIntrastatStatement(models.Model): _name = 'account.intrastat.statement' _description = 'Account INTRASTAT - Statement' @api.model def _default_company(self): - company_id = self._context.get('company_id', - self.env.user.company_id.id) + company_id = self._context.get( + 'company_id', + self.env.user.company_id.id) return company_id @api.model @@ -28,8 +20,11 @@ def _default_company_vat(self): company_id = self._context.get( 'company_id', self.env.user.company_id.id) if company_id: - vat = self.company_id.partner_id.vat \ - and self.company_id.partner_id.vat[2:] or False + vat = ( + self.company_id.partner_id.vat + and self.company_id.partner_id.vat[2:] + or False + ) return vat else: return False @@ -143,7 +138,7 @@ def _compute_progressive(self): # From last statement st = self.search([], order='number', limit=1) if st: - return st.number+1 + return st.number + 1 else: return 1 @@ -179,29 +174,31 @@ def _get_sequence(self): vat_delegate = fields.Char(string='Vat delegate', default=_default_vat_delegate) name_delegate = fields.Char(string='Name delegate', - default=_default_name_delegate) - fiscalyear = fields.Integer(string='Year', required=True) + default=_default_name_delegate) + fiscalyear = fields.Integer(string='Year', required=True, default=datetime.now().year) period_type = fields.Selection([ ('M', 'Month'), ('T', 'Quarterly'), - ], 'Period Type', required=True) + ], 'Period Type', required=True) period_number = fields.Integer( string='Period', help="Values accepted:\ - Month : From 1 to 12 \ - Quarterly: From 1 to 4", required=True) + date_start = fields.Date(string='Date Start') + date_stop = fields.Date(string='Date Stop') content_type = fields.Selection([ ('0', 'Normal Period'), ('8', 'Change Period in quarterly: only first month operations'), ('9', 'Change Period in quarterly: only first and second month \ operations'), - ], 'Content Type', required=True, default="0") + ], 'Content Type', required=True, default="0") special_cases = fields.Selection([ ('7', 'First Statement'), ('8', 'Change VAT or Close Activity'), ('9', 'First Statement in Change VAT or Close Activity'), ('0', 'None of the above cases'), - ], 'Special Cases', required=True, default="0") + ], 'Special Cases', required=True, default="0") custom_id = fields.Many2one( 'account.intrastat.custom', string='Custom', required=True, default=_default_custom) @@ -209,14 +206,14 @@ def _get_sequence(self): purchase = fields.Boolean(string='Purchase', default=True) intrastat_type_data = fields.Selection([ - ('all', 'All (Fiscal and Statistic'), + ('all', 'All (Fiscal and Statistic)'), ('fiscal', 'Fiscal'), ('statistic', 'Statistic'), - ], 'Data Type', required=True, default='all') + ], 'Data Type', required=True, default='all') intrastat_code_type = fields.Selection([ ('service', 'Service'), ('good', 'Good') - ], 'Code Type', required=True, default='good') + ], 'Code Type', required=True, default='good') sale_statement_sequence = fields.Integer( string='Statement Sequence', @@ -298,53 +295,76 @@ def _get_sequence(self): string='Operation Amount', store=True, readonly=True, compute='_compute_amount_purchase_s4') - @api.model def create(self, vals): - statement = super(account_intrastat_statement, self).create(vals) + statement = super(AccountIntrastatStatement, self).create(vals) statement._normalize_statement() - return statement; - + return statement @api.multi def write(self, vals): - res = super(account_intrastat_statement, self).write(vals) + res = super(AccountIntrastatStatement, self).write(vals) self._normalize_statement() self.recompute_sequence_lines() - return res; + return res + + @api.onchange('period_type', 'period_number') + def onchange_period(self): + for statement in self: + if ( + not statement.fiscalyear + or not statement.period_type + or not statement.period_number + ): + continue + date_start_year = datetime.strptime( + '{}-01-01'.format(statement.fiscalyear), '%Y-%m-%d') + if statement.period_type == 'M': + period_date_start = datetime(date_start_year.year, + statement.period_number, + 1) + # Last date of month + if not statement.period_number == 12: + period_date_work = datetime(date_start_year.year, + statement.period_number + 1, + 1) + period_date_stop = period_date_work - timedelta(days=1) + else: + period_date_stop = datetime(date_start_year.year, 12, 31) + else: + if statement.period_number > 4: + statement.period_number = 1 + if statement.period_number == 1: + period_date_start = datetime(date_start_year.year, 1, 1) + period_date_stop = datetime(date_start_year.year, 3, 31) + elif statement.period_number == 2: + period_date_start = datetime(date_start_year.year, 4, 1) + period_date_stop = datetime(date_start_year.year, 6, 30) + elif statement.period_number == 3: + period_date_start = datetime(date_start_year.year, 7, 1) + period_date_stop = datetime(date_start_year.year, 9, 30) + elif statement.period_number == 4: + period_date_start = datetime(date_start_year.year, 10, 1) + period_date_stop = datetime(date_start_year.year, 12, 31) + statement.date_start = period_date_start + statement.date_stop = period_date_stop @api.model def _get_period_ref(self, invoice_line): + res = { - 'year_id' : False, - 'quarterly' : False, - 'month' : False + 'year_id': False, + 'quarterly': False, + 'month': False } - #if not period: - # return res - # Year - Period replaced with "Accounting Date" in invoice - # date.year - #invoice_line.invoice.date - #invoice_date = datetime.strptime(self.invoice.date, '%Y-%m-%d') - res.update({'year_id' : self.fiscalyear}) - # res.update({'year_id' : invoice_date.year}) - # Accounting > Configuration > Settings > Fiscal Year Last Day - day = self.env.user.company_id.fiscalyear_last_day - month = self.env.user.company_id.fiscalyear_last_month - date_obj = date(self.fiscalyear, month, day) - #date_obj = datetime.strptime(period.date_start, '%Y-%m-%d') + + res.update({'year_id': self.fiscalyear}) + # Monht/quaterly - if self.period_number == 'T': - if date_obj.month in [1,2,3]: - res.update({'quarterly' : 1}) - elif date_obj.month in [4,5,6]: - res.update({'quarterly' : 2}) - elif date_obj.month in [7,8,9]: - res.update({'quarterly' : 3}) - elif date_obj.month in [10,11,12]: - res.update({'quarterly' : 4}) + if self.period_type == 'T': + res.update({'quarterly': self.preiod_number}) else: - res.update({'month' : date_obj.month}) + res.update({'month': self.preiod_number}) return res @@ -357,7 +377,6 @@ def _normalize_statement(self): self.with_context(unlink_section='purchase')._unlink_sections() return True - @api.one def _unlink_sections(self): # Unlink lines sale/purchase sections @@ -384,7 +403,6 @@ def _unlink_sections(self): line.unlink() return True - @api.model def _get_progressive_interchange(self): prg = 0 @@ -395,12 +413,10 @@ def _get_progressive_interchange(self): break return prg - @api.model def _get_file_name(self): - ''' - Format UA code + %m + %d - ''' + """Format UA code + %m + %d""" + # Calcolo progressivo interchange prg = self._get_progressive_interchange() file_name = '' @@ -410,16 +426,15 @@ def _get_file_name(self): elif self.company_id.intrastat_export_file_name: file_name = self.company_id.intrastat_export_file_name else: - file_name = '%s%s%s.%s%s' % (self.company_id.intrastat_ua_code - or '', - '{:2s}'.format(str(date_obj.month).zfill(2)), - '{:2s}'.format(str(date_obj.day).zfill(2)), - 'I', # doc intrastat - '{:2s}'.format(str(prg).zfill(2)) - ) + file_name = '%s%s%s.%s%s' % ( + self.company_id.intrastat_ua_code or '', + '{:2s}'.format(str(date_obj.month).zfill(2)), + '{:2s}'.format(str(date_obj.day).zfill(2)), + 'I', # doc intrastat + '{:2s}'.format(str(prg).zfill(2)) + ) return file_name - @api.model def _prepare_export_head(self): rcd = '' @@ -444,45 +459,49 @@ def _prepare_export_head(self): # Codice fiscale o numero partita IVA o codice spedizioniere del # richiedente (utente autorizzato) rcd += '{:16s}'.format(self.vat_taxpayer.replace(' ', '')) - #Progressivo sede utente autorizzato + # Progressivo sede utente autorizzato prg = self._get_progressive_interchange() rcd += '{:3s}'.format(str(prg).zfill(3)) # Riservato a SDA rcd += '{:1s}'.format("") - # Numero di record presenti nel flusso - tot_lines = self.sale_section1_operation_number +\ - self.sale_section2_operation_number +\ - self.sale_section3_operation_number +\ - self.sale_section4_operation_number +\ - self.purchase_section1_operation_number +\ - self.purchase_section2_operation_number +\ - self.purchase_section3_operation_number +\ - self.purchase_section4_operation_number +\ - 1 # this rec - # ... Add frontispiece sale - if self.sale_section1_operation_number\ - or self.sale_section2_operation_number\ - or self.sale_section3_operation_number\ - or self.sale_section4_operation_number: + # Numero di record presenti nel flusso + tot_lines = ( + self.sale_section1_operation_number + + self.sale_section2_operation_number + + self.sale_section3_operation_number + + self.sale_section4_operation_number + + self.purchase_section1_operation_number + + self.purchase_section2_operation_number + + self.purchase_section3_operation_number + + self.purchase_section4_operation_number + + 1 + ) # this rec + # Add frontispiece sale + if ( + self.sale_section1_operation_number + or self.sale_section2_operation_number + or self.sale_section3_operation_number + or self.sale_section4_operation_number + ): tot_lines += 1 - # ... Add frontispiece purchase - if self.purchase_section1_operation_number\ - or self.purchase_section2_operation_number\ - or self.purchase_section3_operation_number\ - or self.purchase_section4_operation_number: + # Add frontispiece purchase + if ( + self.purchase_section1_operation_number + or self.purchase_section2_operation_number + or self.purchase_section3_operation_number + or self.purchase_section4_operation_number + ): tot_lines += 1 rcd += '{:5s}'.format(str(tot_lines).zfill(5)) # ... new line - rcd += "\r" # - rcd += "\n" # + rcd += "\r" + rcd += "\n" return rcd @api.model def _prepare_export_prefix(self, type='sale'): - ''' - Type: C=Sale A=Purchase - ''' + """Type: C=Sale A=Purchase""" prefix = '' # Campo fisso: “EUROX” prefix += 'EUROX' @@ -493,10 +512,10 @@ def _prepare_export_prefix(self, type='sale'): prefix += '{:11s}'.format(self.vat_taxpayer) # Numero progressivo dell’elenco if type == 'sale': - prefix += '{:6s}'.format(\ + prefix += '{:6s}'.format( str(self.sale_statement_sequence).zfill(6)) else: - prefix += '{:6s}'.format(\ + prefix += '{:6s}'.format( str(self.purchase_statement_sequence).zfill(6)) return prefix @@ -509,7 +528,7 @@ def _format_negative_number_frontispiece(self, number): last_char = str(number)[-1:] number = list(str(number * -1)) # change last number - number[len(number)-1] = interchange[int(last_char)] + number[len(number) - 1] = interchange[int(last_char)] return ''.join(number) @api.model @@ -526,8 +545,7 @@ def _prepare_export_frontispiece(self, type): day = self.env.user.company_id.fiscalyear_last_day month = self.env.user.company_id.fiscalyear_last_month date_start_year = date(self.fiscalyear, month, day) - #date_start_year = datetime.strptime(self.fiscalyear_id.date_start, - # '%Y-%m-%d') + rcd += '{:2s}'.format(str(date_start_year.year)[2:]) # Periodicità rcd += '{:1s}'.format(self.period_type) @@ -557,14 +575,14 @@ def _prepare_export_frontispiece(self, type): rcd += '{:5s}'.format( str(self.purchase_section2_operation_number).zfill(5)) amount_format = self._format_negative_number_frontispiece( - self.purchase_section2_operation_amount) + self.purchase_section2_operation_amount) rcd += '{:13s}'.format( str(amount_format).zfill(13)) else: rcd += '{:5s}'.format( str(self.sale_section2_operation_number).zfill(5)) amount_format = self._format_negative_number_frontispiece( - self.sale_section2_operation_amount) + self.sale_section2_operation_amount) rcd += '{:13s}'.format( str(amount_format).zfill(13)) # Numero dettagli della sezione 3 @@ -604,10 +622,12 @@ def generate_file_export(self): content_sale = self.env.context.get('sale') content_purchase = self.env.context.get('purchase') # Purchase - if (self.purchase_section1_operation_number or - self.purchase_section2_operation_number or - self.purchase_section3_operation_number or - self.purchase_section4_operation_number) and content_purchase: + if ( + self.purchase_section1_operation_number or + self.purchase_section2_operation_number or + self.purchase_section3_operation_number or + self.purchase_section4_operation_number + ) and content_purchase: # frontispiece rec_frontispiece = self._prepare_export_frontispiece("purchase") file_content += rec_frontispiece @@ -641,10 +661,12 @@ def generate_file_export(self): file_content += rcd # Sale - if (self.sale_section1_operation_number or - self.sale_section2_operation_number or - self.sale_section3_operation_number or - self.sale_section4_operation_number) and content_sale: + if ( + (self.sale_section1_operation_number + or self.sale_section2_operation_number + or self.sale_section3_operation_number + or self.sale_section4_operation_number) + and content_sale): # frontispiece rec_frontispiece = self._prepare_export_frontispiece("sale") file_content += rec_frontispiece @@ -682,12 +704,12 @@ def generate_file_export(self): raise ValidationError( _('Nothing to export')) if not self.sale_section1_ids \ - and not self.sale_section2_ids\ - and not self.sale_section3_ids\ - and not self.sale_section4_ids\ - and not self.purchase_section1_ids\ - and not self.purchase_section2_ids\ - and not self.purchase_section3_ids\ + and not self.sale_section2_ids \ + and not self.sale_section3_ids \ + and not self.sale_section4_ids \ + and not self.purchase_section1_ids \ + and not self.purchase_section2_ids \ + and not self.purchase_section3_ids \ and not self.purchase_section4_ids: raise ValidationError( _('Statement without lines')) @@ -699,10 +721,8 @@ def compute_statement(self): # Unlink existing lines self._unlink_sections() # Setting period - period_statement_ids = [] - - #date_start_year = datetime.strptime(self.fiscalyear_id.date_start, - # '%Y-%m-%d') + period_date_start = None + period_date_stop = None day = self.env.user.company_id.fiscalyear_last_day month = self.env.user.company_id.fiscalyear_last_month date_start_year = date(self.fiscalyear, month, day) @@ -715,40 +735,24 @@ def compute_statement(self): period_date_work = datetime(date_start_year.year, self.period_number + 1, 1) - period_date_stop = period_date_work - timedelta(days = 1) + period_date_stop = period_date_work - timedelta(days=1) else: period_date_stop = datetime(date_start_year.year, 12, 31) - # Period compentence - #=================================================================== - # period_statement_ids.append( - # self.env['account.period'].find(period_date_start).id) - #=================================================================== + else: if self.period_number == 1: period_date_start = datetime(date_start_year.year, 1, 1) - period_date_medium = datetime(date_start_year.year, 2, 1) period_date_stop = datetime(date_start_year.year, 3, 31) elif self.period_number == 2: period_date_start = datetime(date_start_year.year, 4, 1) - period_date_medium = datetime(date_start_year.year, 5, 1) period_date_stop = datetime(date_start_year.year, 6, 30) elif self.period_number == 3: period_date_start = datetime(date_start_year.year, 7, 1) - period_date_medium = datetime(date_start_year.year, 8, 1) period_date_stop = datetime(date_start_year.year, 9, 30) elif self.period_number == 4: period_date_start = datetime(date_start_year.year, 10, 1) - period_date_medium = datetime(date_start_year.year, 11, 1) period_date_stop = datetime(date_start_year.year, 12, 31) - # Period compentence - #=================================================================== - # period_statement_ids.append( - # self.env['account.period'].find(period_date_start).id) - # period_statement_ids.append( - # self.env['account.period'].find(period_date_medium).id) - # period_statement_ids.append( - # self.env['account.period'].find(period_date_stop).id) - #=================================================================== + # Search intrastat lines domain = [('move_id.date', '>=', period_date_start), ('move_id.date', '<=', period_date_stop), @@ -769,119 +773,116 @@ def compute_statement(self): statement_lines_purchase_s2 = [] statement_lines_purchase_s3 = [] statement_lines_purchase_s4 = [] - + sale_section1 = 'account.intrastat.statement.sale.section1' + sale_section2 = 'account.intrastat.statement.sale.section2' + sale_section3 = 'account.intrastat.statement.sale.section3' + sale_section4 = 'account.intrastat.statement.sale.section4' + purch_section1 = 'account.intrastat.statement.purchase.section1' + purch_section2 = 'account.intrastat.statement.purchase.section2' + purch_section3 = 'account.intrastat.statement.purchase.section3' + purch_section4 = 'account.intrastat.statement.purchase.section4' for inv in self.env['account.invoice'].search(domain): for inv_intra_line in inv.intrastat_line_ids: # Sale - Section 1 if inv_intra_line.statement_section == 'sale_s1': - st_line = \ - self.env['account.intrastat.statement.sale.section1']\ - ._prepare_statement_line(inv_intra_line) + + st_line = self.env[sale_section1]._prepare_statement_line( + inv_intra_line) if st_line: if len(statement_lines_sale_s1): st_line['sequence'] = \ - len(statement_lines_sale_s1) +1 + len(statement_lines_sale_s1) + 1 else: st_line['sequence'] = 1 statement_lines_sale_s1.append((0, 0, st_line)) # Sale - Section 2 elif inv_intra_line.statement_section == 'sale_s2': - st_line = \ - self.env['account.intrastat.statement.sale.section2']\ - ._prepare_statement_line(inv_intra_line) + st_line = self.env[sale_section2]._prepare_statement_line( + inv_intra_line, self) if st_line: if len(statement_lines_sale_s2): st_line['sequence'] = \ - len(statement_lines_sale_s2) +1 + len(statement_lines_sale_s2) + 1 else: st_line['sequence'] = 1 statement_lines_sale_s2.append((0, 0, st_line)) # Sale - Section 3 elif inv_intra_line.statement_section == 'sale_s3': - st_line = \ - self.env['account.intrastat.statement.sale.section3']\ - ._prepare_statement_line(inv_intra_line) + st_line = self.env[sale_section3]._prepare_statement_line( + inv_intra_line) if st_line: if len(statement_lines_sale_s3): st_line['sequence'] = \ - len(statement_lines_sale_s3) +1 + len(statement_lines_sale_s3) + 1 else: st_line['sequence'] = 1 statement_lines_sale_s3.append((0, 0, st_line)) # Sale - Section 4 elif inv_intra_line.statement_section == 'sale_s4': - st_line = \ - self.env['account.intrastat.statement.sale.section4']\ - ._prepare_statement_line(inv_intra_line) + st_line = self.env[sale_section4]._prepare_statement_line( + inv_intra_line, self) if st_line: if len(statement_lines_sale_s4): st_line['sequence'] = \ - len(statement_lines_sale_s4) +1 + len(statement_lines_sale_s4) + 1 else: st_line['sequence'] = 1 statement_lines_sale_s4.append((0, 0, st_line)) # Purchase - Section 1 elif inv_intra_line.statement_section == 'purchase_s1': - st_line = \ - self.env[ - 'account.intrastat.statement.purchase.section1']\ - ._prepare_statement_line(inv_intra_line) + st_line = self.env[purch_section1]._prepare_statement_line( + inv_intra_line) if st_line: if len(statement_lines_purchase_s1): st_line['sequence'] = \ - len(statement_lines_purchase_s1) +1 + len(statement_lines_purchase_s1) + 1 else: st_line['sequence'] = 1 statement_lines_purchase_s1.append((0, 0, st_line)) # Purchase - Section 2 elif inv_intra_line.statement_section == 'purchase_s2': - st_line = \ - self.env[ - 'account.intrastat.statement.purchase.section2']\ - ._prepare_statement_line(inv_intra_line) + st_line = self.env[purch_section2]._prepare_statement_line( + inv_intra_line, self) if st_line: if len(statement_lines_purchase_s2): st_line['sequence'] = \ - len(statement_lines_purchase_s2) +1 + len(statement_lines_purchase_s2) + 1 else: st_line['sequence'] = 1 statement_lines_purchase_s2.append((0, 0, st_line)) # Purchase - Section 3 elif inv_intra_line.statement_section == 'purchase_s3': - st_line = \ - self.env[ - 'account.intrastat.statement.purchase.section3']\ - ._prepare_statement_line(inv_intra_line) + st_line = self.env[purch_section3]._prepare_statement_line( + inv_intra_line) if st_line: if len(statement_lines_purchase_s3): st_line['sequence'] = \ - len(statement_lines_purchase_s3) +1 + len(statement_lines_purchase_s3) + 1 else: st_line['sequence'] = 1 statement_lines_purchase_s3.append((0, 0, st_line)) # Purchase - Section 4 elif inv_intra_line.statement_section == 'purchase_s4': - st_line = \ - self.env[ - 'account.intrastat.statement.purchase.section4']\ - ._prepare_statement_line(inv_intra_line) + st_line = self.env[purch_section4]._prepare_statement_line( + inv_intra_line, self) if st_line: if len(statement_lines_purchase_s4): st_line['sequence'] = \ - len(statement_lines_purchase_s4) +1 + len(statement_lines_purchase_s4) + 1 else: st_line['sequence'] = 1 statement_lines_purchase_s4.append((0, 0, st_line)) + self.write({ - 'sale_section1_ids' : statement_lines_sale_s1, - 'sale_section2_ids' : statement_lines_sale_s2, - 'sale_section3_ids' : statement_lines_sale_s3, - 'sale_section4_ids' : statement_lines_sale_s4, - 'purchase_section1_ids' : statement_lines_purchase_s1, - 'purchase_section2_ids' : statement_lines_purchase_s2, - 'purchase_section3_ids' : statement_lines_purchase_s3, - 'purchase_section4_ids' : statement_lines_purchase_s4, - }) + 'sale_section1_ids': statement_lines_sale_s1, + 'sale_section2_ids': statement_lines_sale_s2, + 'sale_section3_ids': statement_lines_sale_s3, + 'sale_section4_ids': statement_lines_sale_s4, + 'purchase_section1_ids': statement_lines_purchase_s1, + 'purchase_section2_ids': statement_lines_purchase_s2, + 'purchase_section3_ids': statement_lines_purchase_s3, + 'purchase_section4_ids': statement_lines_purchase_s4, + }) # Group refund to sale lines if they have the same period of ref for line in self.sale_section2_ids: @@ -903,17 +904,19 @@ def compute_statement(self): @api.model def refund_line(self, line, to_ref_obj): - ''' - Refund line into sale if period ref si the same of the statemnt - ''' + """Refund line into sale if period ref is the same of the statement""" to_refund = False - if line.year_id.id == self.fiscalyear: - if self.period_type == 'M' \ - and line.month == self.period_number: + if line.year_id == self.fiscalyear: + if ( + self.period_type == 'M' + and line.month == self.period_number + ): to_refund = True - if self.period_type == 'T' \ - and line.quarterly == self.period_number: + if ( + self.period_type == 'T' + and line.quarterly == self.period_number + ): to_refund = True # Execute refund if to_refund: @@ -925,49 +928,47 @@ def refund_line(self, line, to_ref_obj): if line_to_refund: if line_to_refund.amount_euro < line.amount_euro: raise ValidationError( - _('Invoice and refund in the same period with' + _('Invoice and refund in the same period with' ' refund > invoice for partner %s') % line.partner_id.name) val = { - 'amount_euro' : line_to_refund.amount_euro \ - - line.amount_euro + 'amount_euro': ( + line_to_refund.amount_euro - line.amount_euro) } if 'statistic_amount_euro' in line_to_refund: - val['statistic_amount_euro'] = \ - line_to_refund.statistic_amount_euro \ - - line.statistic_amount_euro + val['statistic_amount_euro'] = ( + line_to_refund.statistic_amount_euro - + line.statistic_amount_euro + ) if 'amount_currency' in line_to_refund: - val['amount_currency'] = line_to_refund.amount_currency \ - - line.amount_currency + val['amount_currency'] = ( + line_to_refund.amount_currency - + line.amount_currency) line_to_refund.write(val) line.unlink() - @api.onchange('company_id') def change_company_id(self): - self.vat_taxpayer = self.company_id.partner_id.vat \ - and self.company_id.partner_id.vat[2:] or False - self.vat_delegate = self.company_id.intrastat_delegated_vat \ - or False + self.vat_taxpayer = (self.company_id.partner_id.vat + and self.company_id.partner_id.vat[2:] or False) + self.vat_delegate = self.company_id.intrastat_delegated_vat or False @api.onchange('period_number') @api.constrains('period_type', 'period_number') def change_period_number(self): - ''' - Interval Control - ''' - if self.period_type == 'M'\ - and (self.period_number < 1 or self.period_number > 12): + """Interval Control""" + if self.period_type == 'M' \ + and (self.period_number < 1 or self.period_number > 12): raise ValidationError( _('Period Not Valid! Range accepted: from 1 to 12')) - if self.period_type == 'T'\ - and (self.period_number < 1 or self.period_number > 4): + if self.period_type == 'T' \ + and (self.period_number < 1 or self.period_number > 4): raise ValidationError( _('Period Not Valid! Range accepted: from 1 to 4')) -class account_intrastat_statement_sale_section1(models.Model): +class AccountIntrastatStatementSaleSection1(models.Model): _name = 'account.intrastat.statement.sale.section1' _description = 'Account INTRASTAT - Statement - Sale Section 1' @@ -977,10 +978,10 @@ class account_intrastat_statement_sale_section1(models.Model): sequence = fields.Integer(string='Progressive') partner_id = fields.Many2one('res.partner', string='Partner') country_partner_id = fields.Many2one('res.country', - string='Country Customer') + string='Country Customer') vat_code = fields.Char(string='Vat Code Customer') amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) transation_nature_id = fields.Many2one( 'account.intrastat.transation.nature', string='Transation Nature') intrastat_code_id = fields.Many2one('report.intrastat.code', @@ -990,14 +991,16 @@ class account_intrastat_statement_sale_section1(models.Model): additional_units_required = fields.Boolean( string='Additional Units Required', store=True, related='intrastat_code_id.additional_unit_required') - additional_units_uom = fields.Char(string='Additional Units UOM', - readonly=True, related="intrastat_code_id.additional_unit_uom_id.name") + additional_units_uom = fields.Char( + string='Additional Units UOM', + readonly=True, + related="intrastat_code_id.additional_unit_uom_id.name") statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) delivery_code_id = fields.Many2one('stock.incoterms', - string='Delivery') + string='Delivery') transport_code_id = fields.Many2one('account.intrastat.transport', - string='Transport') + string='Transport') country_destination_id = fields.Many2one('res.country', string='Country Destination') province_origin_id = fields.Many2one('res.country.state', @@ -1008,8 +1011,8 @@ class account_intrastat_statement_sale_section1(models.Model): @api.onchange('partner_id') def change_partner_id(self): if self.partner_id: - data = self.env['account.invoice.intrastat'].\ - _get_partner_data(self.partner_id) + data = self.env['account.invoice.intrastat']._get_partner_data( + self.partner_id) self.country_partner_id = data['country_partner_id'] self.vat_code = data['vat_code'] self.country_destination_id = data['country_destination_id'] @@ -1017,7 +1020,7 @@ def change_partner_id(self): @api.onchange('weight_kg') def change_weight_kg(self): if self.statement_id.company_id.intrastat_additional_unit_from == \ - 'weight': + 'weight': self.additional_units = self.weight_kg @api.model @@ -1025,21 +1028,22 @@ def _prepare_statement_line(self, inv_intra_line): company_id = self._context.get( 'company_id', self.env.user.company_id) res = { - 'invoice_id' : inv_intra_line.invoice_id.id or False, - 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'invoice_id': inv_intra_line.invoice_id.id or False, + 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': + inv_intra_line.country_partner_id.id or False, 'vat_code': - inv_intra_line.invoice_id.partner_id.vat \ - and inv_intra_line.invoice_id.partner_id.vat[2:] \ - or False, + (inv_intra_line.invoice_id.partner_id.vat + and inv_intra_line.invoice_id.partner_id.vat[2:] + or False), 'amount_euro': self.statement_id.round_min_amount(round( inv_intra_line.amount_euro) or 0, company_id), - 'transation_nature_id': ( - inv_intra_line.transation_nature_id and - inv_intra_line.transation_nature_id.id) or ( - company_id.intrastat_sale_transation_nature_id and - company_id.intrastat_sale_transation_nature_id.id) or - False, + 'transation_nature_id': + (inv_intra_line.transation_nature_id + and inv_intra_line.transation_nature_id.id) or + (company_id.intrastat_sale_transation_nature_id + and company_id.intrastat_sale_transation_nature_id.id) + or False, 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, 'weight_kg': round(inv_intra_line.weight_kg) or 0, 'additional_units': @@ -1049,23 +1053,25 @@ def _prepare_statement_line(self, inv_intra_line): self.statement_id.round_min_amount( round(inv_intra_line.statistic_amount_euro) or (company_id.intrastat_sale_statistic_amount and - round(inv_intra_line.amount_euro)) or 0, company_id), - 'delivery_code_id': ( - inv_intra_line.delivery_code_id and - inv_intra_line.delivery_code_id.id) or ( - company_id.intrastat_sale_delivery_code_id and - company_id.intrastat_sale_delivery_code_id.id) or False, - 'transport_code_id': ( - inv_intra_line.transport_code_id and - inv_intra_line.transport_code_id.id) or ( - company_id.intrastat_sale_transport_code_id and - company_id.intrastat_sale_transport_code_id.id) or False, - 'country_destination_id': ( - inv_intra_line.country_destination_id and - inv_intra_line.country_destination_id.id) or False, - 'province_origin_id': ( - inv_intra_line.province_origin_id and - inv_intra_line.province_origin_id.id) or + round(inv_intra_line.amount_euro)) or 0, company_id), + 'delivery_code_id': + (inv_intra_line.delivery_code_id + and inv_intra_line.delivery_code_id.id) + or + (company_id.intrastat_sale_delivery_code_id + and company_id.intrastat_sale_delivery_code_id.id) + or False, + 'transport_code_id': + (inv_intra_line.transport_code_id + and inv_intra_line.transport_code_id.id) or + (company_id.intrastat_sale_transport_code_id + and company_id.intrastat_sale_transport_code_id.id) or False, + 'country_destination_id': + (inv_intra_line.country_destination_id + and inv_intra_line.country_destination_id.id) or False, + 'province_origin_id': + (inv_intra_line.province_origin_id + and inv_intra_line.province_origin_id.id) or (company_id.intrastat_sale_province_origin_id and company_id.intrastat_sale_province_origin_id.id) or False, } @@ -1082,10 +1088,10 @@ def _prepare_export_line(self): rcd = '' # Codice dello Stato membro dell’acquirente - self.country_partner_id.with_context(control_ISO_code=True).\ - intrastat_validate() + self.country_partner_id.with_context( + control_ISO_code=True).intrastat_validate() rcd += '{:2s}'.format(self.country_partner_id.code or '') - # Codice IVA dell’acquirente + #  Codice IVA dell’acquirente rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') # Ammontare delle operazioni in euro rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) @@ -1095,33 +1101,34 @@ def _prepare_export_line(self): # Codice della nomenclatura combinata della merce rcd += '{:8s}'.format( self.intrastat_code_id and self.intrastat_code_id.name or '') - # Massa netta in chilogrammi + #  Massa netta in chilogrammi rcd += '{:10s}'.format(str(self.weight_kg).zfill(10)) - # Quantità espressa nell'unità di misura supplementare + #  Quantità espressa nell'unità di misura supplementare rcd += '{:10s}'.format(str(self.additional_units).zfill(10)) - # Valore statistico in euro + #  Valore statistico in euro rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) - # Codice delle condizioni di consegna + #  Codice delle condizioni di consegna rcd += '{:1s}'.format( self.delivery_code_id and self.delivery_code_id.code[:1] or '') - # Codice del modo di trasporto + #  Codice del modo di trasporto rcd += '{:1s}'.format( self.transport_code_id and str(self.transport_code_id.code) or '') - # Codice del paese di destinazione + #  Codice del paese di destinazione rcd += '{:2s}'.format( - self.country_destination_id and self.country_destination_id.code \ + self.country_destination_id and + self.country_destination_id.code or '') - # Codice del paese di origine della merce + #  Codice del paese di origine della merce rcd += '{:2s}'.format( self.province_origin_id and self.province_origin_id.code or '') # ... new line - rcd += "\r" # - rcd += "\n" # + rcd += "\r" # + rcd += "\n" # return rcd -class account_intrastat_statement_sale_section2(models.Model): +class AccountIntrastatStatementSaleSection2(models.Model): _name = 'account.intrastat.statement.sale.section2' _description = 'Account INTRASTAT - Statement - Sale Section 2' @@ -1135,33 +1142,33 @@ class account_intrastat_statement_sale_section2(models.Model): year_id = fields.Integer(string='Year Ref of Refund') partner_id = fields.Many2one('res.partner', string='Partner') country_partner_id = fields.Many2one('res.country', - string='Country Partner') + string='Country Partner') vat_code = fields.Char(string='Vat Code Customer') sign_variation = fields.Selection([ ('+', '+'), ('-', '-'), - ], 'Sign Variation') + ], 'Sign Variation') amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) transation_nature_id = fields.Many2one( 'account.intrastat.transation.nature', string='Transation Nature') intrastat_code_id = fields.Many2one('report.intrastat.code', string='Intrastat Code Good') statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) invoice_id = fields.Many2one('account.invoice', string='Invoice', readonly=True) @api.onchange('partner_id') def change_partner_id(self): if self.partner_id: - data = self.env['account.invoice.intrastat'].\ - _get_partner_data(self.partner_id) + data = self.env['account.invoice.intrastat']._get_partner_data( + self.partner_id) self.country_partner_id = data['country_partner_id'] self.vat_code = data['vat_code'] @api.model - def _prepare_statement_line(self, inv_intra_line): + def _prepare_statement_line(self, inv_intra_line, statement_id): company_id = self._context.get( 'company_id', self.env.user.company_id) # sign_variation @@ -1169,31 +1176,28 @@ def _prepare_statement_line(self, inv_intra_line): if inv_intra_line.invoice_id.type in ['out_refund']: sign_variation = '-' # Period Ref - #======================================================================= - # ref_period = self.statement_id._get_period_ref( - # inv_intra_line.invoice_id.intrastat_refund_period_id) - #======================================================================= - ref_period = self.statement_id._get_period_ref( - inv_intra_line.invoice_id) + ref_period = statement_id._get_period_ref(inv_intra_line.invoice_id) res = { - 'invoice_id' : inv_intra_line.invoice_id.id or False, - 'month' : ref_period and ref_period['month'] or False, - 'quarterly' : ref_period and ref_period['quarterly'] or False, - 'year_id' : ref_period and ref_period['year_id'] or False, - 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'invoice_id': inv_intra_line.invoice_id.id or False, + 'month': ref_period and ref_period['month'] or False, + 'quarterly': ref_period and ref_period['quarterly'] or False, + 'year_id': ref_period and ref_period['year_id'] or False, + 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': + inv_intra_line.country_partner_id.id or False, 'vat_code': - inv_intra_line.invoice_id.partner_id.vat \ - and inv_intra_line.invoice_id.partner_id.vat[2:] \ - or False, + (inv_intra_line.invoice_id.partner_id.vat + and inv_intra_line.invoice_id.partner_id.vat[2:] + or False), 'amount_euro': self.statement_id.round_min_amount( round(inv_intra_line.amount_euro) or 0, company_id), 'sign_variation': sign_variation, - 'transation_nature_id': ( - inv_intra_line.transation_nature_id and - inv_intra_line.transation_nature_id.id) or ( - company_id.intrastat_sale_transation_nature_id and - company_id.intrastat_sale_transation_nature_id.id) or + 'transation_nature_id': + (inv_intra_line.transation_nature_id and + inv_intra_line.transation_nature_id.id) + or + (company_id.intrastat_sale_transation_nature_id and + company_id.intrastat_sale_transation_nature_id.id) or False, 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, 'statistic_amount_euro': @@ -1201,7 +1205,8 @@ def _prepare_statement_line(self, inv_intra_line): round(inv_intra_line.statistic_amount_euro) or ( company_id.intrastat_sale_statistic_amount and - round(inv_intra_line.amount_euro)) or 0, company_id), + round(inv_intra_line.amount_euro)) or 0, + company_id), } return res @@ -1234,20 +1239,20 @@ def _prepare_export_line(self): rcd = '' # Mese di riferimento del riepilogo da rettificare rcd += '{:2s}'.format(str(self.month).zfill(2)) - # Trimestre di riferimento del riepilogo da rettificare + #  Trimestre di riferimento del riepilogo da rettificare rcd += '{:1s}'.format(str(self.quarterly).zfill(1)) # Anno periodo di ref da modificare - date_start_year = False + start_year = False if self.year_id: - date_start_year = datetime.strptime(self.year_id.date_start, - '%Y-%m-%d') + start_year = self.year_id + rcd += '{:2s}'.format( - date_start_year and str(date_start_year.year)[2:] or '') + start_year and str(start_year)[2:] or '') # Codice dello Stato membro dell’acquirente rcd += '{:2s}'.format(self.country_partner_id.code or '') - # Codice IVA dell’acquirente + #  Codice IVA dell’acquirente rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - # Segno da attribuire alle variazioni da X(1) apportare + #  Segno da attribuire alle variazioni da X(1) apportare rcd += '{:1s}'.format(self.sign_variation or '') # Ammontare delle operazioni in euro rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) @@ -1257,16 +1262,16 @@ def _prepare_export_line(self): # Codice della nomenclatura combinata della merce rcd += '{:8s}'.format( self.intrastat_code_id and self.intrastat_code_id.name or '') - # Valore statistico in euro + #  Valore statistico in euro rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) # ... new line - rcd += "\r" # - rcd += "\n" # + rcd += "\r" # + rcd += "\n" # return rcd -class account_intrastat_statement_sale_section3(models.Model): +class AccountIntrastatStatementSaleSection3(models.Model): _name = 'account.intrastat.statement.sale.section3' _description = 'Account INTRASTAT - Statement - Sale Section 3' @@ -1277,10 +1282,10 @@ class account_intrastat_statement_sale_section3(models.Model): sequence = fields.Integer(string='Progressive') partner_id = fields.Many2one('res.partner', string='Partner') country_partner_id = fields.Many2one('res.country', - string='Country Partner') + string='Country Partner') vat_code = fields.Char(string='Vat Code Customer') amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) invoice_number = fields.Char(string='Invoice Number') invoice_date = fields.Date(string='Invoice Date') intrastat_code_id = fields.Many2one('report.intrastat.code', @@ -1288,34 +1293,36 @@ class account_intrastat_statement_sale_section3(models.Model): supply_method = fields.Selection([ ('I', 'Instant'), ('R', 'Repeatedly'), - ], 'Supply Method') + ], 'Supply Method') payment_method = fields.Selection([ ('B', 'Transfer'), ('A', 'Accreditation'), ('X', 'Other'), - ], 'Payment Method') - country_payment_id= fields.Many2one('res.country', 'Country Payment') + ], 'Payment Method') + country_payment_id = fields.Many2one('res.country', 'Country Payment') invoice_id = fields.Many2one('account.invoice', string='Invoice', readonly=True) @api.onchange('partner_id') def change_partner_id(self): if self.partner_id: - data = self.env['account.invoice.intrastat'].\ - _get_partner_data(self.partner_id) + data = self.env['account.invoice.intrastat']._get_partner_data( + self.partner_id) self.country_partner_id = data['country_partner_id'] self.vat_code = data['vat_code'] @api.model def _prepare_statement_line(self, inv_intra_line): res = { - 'invoice_id' : inv_intra_line.invoice_id.id or False, - 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'invoice_id': inv_intra_line.invoice_id.id or False, + 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': + inv_intra_line.country_partner_id.id or False, 'vat_code': - inv_intra_line.invoice_id.partner_id.vat \ - and inv_intra_line.invoice_id.partner_id.vat[2:] \ - or False, + ( + inv_intra_line.invoice_id.partner_id.vat + and inv_intra_line.invoice_id.partner_id.vat[2:] + or False), 'amount_euro': self.statement_id.round_min_amount( round(inv_intra_line.amount_euro) or 0, inv_intra_line.invoice_id.company_id), @@ -1324,7 +1331,8 @@ def _prepare_statement_line(self, inv_intra_line): 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, 'supply_method': inv_intra_line.supply_method or False, 'payment_method': inv_intra_line.payment_method or False, - 'country_payment_id': inv_intra_line.country_payment_id.id or False, + 'country_payment_id': + inv_intra_line.country_payment_id.id or False, } return res @@ -1339,10 +1347,10 @@ def _prepare_export_line(self): rcd = '' # Codice dello Stato membro dell’acquirente - self.country_partner_id.with_context(control_ISO_code=True).\ - intrastat_validate() + self.country_partner_id.with_context( + control_ISO_code=True).intrastat_validate() rcd += '{:2s}'.format(self.country_partner_id.code or '') - # Codice IVA del fornitore + #  Codice IVA del fornitore rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') # Ammontare delle operazioni in euro rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) @@ -1362,16 +1370,16 @@ def _prepare_export_line(self): # Modalità di incasso rcd += '{:1s}'.format(self.payment_method or '') # Codice del paese di pagamento - rcd += '{:2s}'.format(self.country_payment_id and \ + rcd += '{:2s}'.format(self.country_payment_id and self.country_payment_id.code or '') # ... new line - rcd += "\r" # - rcd += "\n" # + rcd += "\r" # + rcd += "\n" # return rcd -class account_intrastat_statement_sale_section4(models.Model): +class AccountIntrastatStatementSaleSection4(models.Model): _name = 'account.intrastat.statement.sale.section4' _description = 'Account INTRASTAT - Statement - Sale Section 4' @@ -1387,10 +1395,10 @@ class account_intrastat_statement_sale_section4(models.Model): progressive_to_modify = fields.Integer('Progressive to Modify') partner_id = fields.Many2one('res.partner', string='Partner') country_partner_id = fields.Many2one('res.country', - string='Country Partner') + string='Country Partner') vat_code = fields.Char(string='Vat Code Customer') amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) invoice_number = fields.Char(string='Invoice Number') invoice_date = fields.Date(string='Invoice Date') intrastat_code_id = fields.Many2one('report.intrastat.code', @@ -1398,45 +1406,42 @@ class account_intrastat_statement_sale_section4(models.Model): supply_method = fields.Selection([ ('I', 'Instant'), ('R', 'Repeatedly'), - ], 'Supply Method') + ], 'Supply Method') payment_method = fields.Selection([ ('B', 'Transfer'), ('A', 'Accreditation'), ('X', 'Other'), - ], 'Payment Method') - country_payment_id= fields.Many2one('res.country', 'Country Payment') + ], 'Payment Method') + country_payment_id = fields.Many2one('res.country', 'Country Payment') invoice_id = fields.Many2one('account.invoice', string='Invoice', readonly=True) @api.onchange('partner_id') def change_partner_id(self): if self.partner_id: - data = self.env['account.invoice.intrastat'].\ - _get_partner_data(self.partner_id) + data = self.env['account.invoice.intrastat']._get_partner_data( + self.partner_id) self.country_partner_id = data['country_partner_id'] self.vat_code = data['vat_code'] @api.model - def _prepare_statement_line(self, inv_intra_line): + def _prepare_statement_line(self, inv_intra_line, statement_id): # Period Ref - #======================================================================= - # ref_period = self.statement_id._get_period_ref( - # inv_intra_line.invoice_id.intrastat_refund_period_id) - #======================================================================= - ref_period = self.statement_id._get_period_ref( - inv_intra_line.invoice_id) + ref_period = statement_id._get_period_ref(inv_intra_line.invoice_id) res = { - 'invoice_id' : inv_intra_line.invoice_id.id or False, - 'month' : ref_period and ref_period['month'] or False, - 'quarterly' : ref_period and ref_period['quarterly'] or False, - 'year_id' : ref_period and ref_period['year_id'] or False, - 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'invoice_id': inv_intra_line.invoice_id.id or False, + 'month': ref_period and ref_period['month'] or False, + 'quarterly': ref_period and ref_period['quarterly'] or False, + 'year_id': ref_period and ref_period['year_id'] or False, + 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': + inv_intra_line.country_partner_id.id or False, 'vat_code': - inv_intra_line.invoice_id.partner_id.vat \ - and inv_intra_line.invoice_id.partner_id.vat[2:] \ - or False, + ( + inv_intra_line.invoice_id.partner_id.vat + and inv_intra_line.invoice_id.partner_id.vat[2:] + or False), 'amount_euro': self.statement_id.round_min_amount( round(inv_intra_line.amount_euro) or 0, inv_intra_line.invoice_id.company_id), @@ -1445,7 +1450,9 @@ def _prepare_statement_line(self, inv_intra_line): 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, 'supply_method': inv_intra_line.supply_method or False, 'payment_method': inv_intra_line.payment_method or False, - 'country_payment_id': inv_intra_line.country_payment_id.id or False, + 'country_payment_id': + inv_intra_line.country_payment_id.id or False, + 'custom_id': statement_id.custom_id.id } return res @@ -1495,29 +1502,28 @@ def _prepare_export_line(self): # dichiarazione da rettificare rcd += '{:6s}'.format(self.custom_id and self.custom_id.code or '') # Anno di registrazione della dichiarazione da rettificare - date_start_year = datetime.strptime(self.year_id.date_start, - '%Y-%m-%d') - rcd += '{:2s}'.format( - date_start_year and str(date_start_year.year)[2:] or '') + start_year = self.year_id + rcd += '{:2s}'.format(start_year and str(start_year)[2:] or '') + # rcd += '{:2s}'.format( + # date_start_year and str(date_start_year.year)[2:] or '') # Protocollo della dichiarazione da rettificare - rcd += '{:6s}'.format(self.protocol and str(self.protocol).zfill(6) \ - or '') + rcd += '{:6s}'.format( + self.protocol and str(self.protocol).zfill(6) or '') # Progressivo della sezione 3 da rettificare - rcd += '{:5s}'.format(self.progressive_to_modify_id and - str(self.progressive_to_modify_id.sequence).zfill(5) \ - or '') + rcd += '{:5s}'.format( + self.progressive_to_modify_id and + str(self.progressive_to_modify_id.sequence).zfill(5) or '') # Codice dello Stato membro dell’acquirente # Test anche che ci sia il codice nazione - country_id = self.country_partner_id \ - or self.partner_id.country_id + country_id = (self.country_partner_id + or self.partner_id.country_id) if country_id: - self.country_id.with_context(control_ISO_code=True).\ - intrastat_validate() + country_id.with_context(control_ISO_code=True).intrastat_validate() else: raise ValidationError( - _('Partner without Country') ) + _('Partner without Country')) rcd += '{:2s}'.format(country_id.code or '') - # Codice IVA dell’acquirente + #  Codice IVA dell’acquirente rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') # Ammontare delle operazioni in euro rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) @@ -1537,15 +1543,16 @@ def _prepare_export_line(self): # Modalità di incasso rcd += '{:1s}'.format(self.payment_method or '') # Codice del paese di pagamento - rcd += '{:2s}'.format(self.country_payment_id and \ + rcd += '{:2s}'.format(self.country_payment_id and self.country_payment_id.code or '') # ... new line - rcd += "\r" # - rcd += "\n" # + rcd += "\r" + rcd += "\n" return rcd -class account_intrastat_statement_purchase_section1(models.Model): + +class AccountIntrastatStatementPurchaseSection1(models.Model): _name = 'account.intrastat.statement.purchase.section1' _description = 'Account INTRASTAT - Statement - Purchase Section 1' @@ -1556,12 +1563,12 @@ class account_intrastat_statement_purchase_section1(models.Model): sequence = fields.Integer(string='Progressive') partner_id = fields.Many2one('res.partner', string='Partner') country_partner_id = fields.Many2one('res.country', - string='Country Partner') + string='Country Partner') vat_code = fields.Char(string='Vat Code Partner') amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) amount_currency = fields.Integer(string='Amount Currency', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) transation_nature_id = fields.Many2one( 'account.intrastat.transation.nature', string='Transation Nature') intrastat_code_id = fields.Many2one( @@ -1571,14 +1578,16 @@ class account_intrastat_statement_purchase_section1(models.Model): additional_units_required = fields.Boolean( string='Additional Units Required', store=True, related='intrastat_code_id.additional_unit_required') - additional_units_uom = fields.Char(string='Additional Units UOM', - readonly=True, related="intrastat_code_id.additional_unit_uom_id.name") + additional_units_uom = fields.Char( + string='Additional Units UOM', + readonly=True, + related="intrastat_code_id.additional_unit_uom_id.name") statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) delivery_code_id = fields.Many2one('stock.incoterms', - string='Delivery') + string='Delivery') transport_code_id = fields.Many2one('account.intrastat.transport', - string='Transport') + string='Transport') country_origin_id = fields.Many2one('res.country', string='Country Origin') country_good_origin_id = fields.Many2one('res.country', @@ -1591,14 +1600,14 @@ class account_intrastat_statement_purchase_section1(models.Model): @api.onchange('weight_kg') def change_weight_kg(self): if self.statement_id.company_id.intrastat_additional_unit_from == \ - 'weight': + 'weight': self.additional_units = self.weight_kg @api.onchange('partner_id') def change_partner_id(self): if self.partner_id: - data = self.env['account.invoice.intrastat'].\ - _get_partner_data(self.partner_id) + data = self.env['account.invoice.intrastat']._get_partner_data( + self.partner_id) self.country_partner_id = data['country_partner_id'] self.vat_code = data['vat_code'] self.country_origin_id = data['country_origin_id'] @@ -1609,27 +1618,36 @@ def _prepare_statement_line(self, inv_intra_line): company_id = self._context.get( 'company_id', self.env.user.company_id) res = { - 'invoice_id' : inv_intra_line.invoice_id.id or False, - 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': inv_intra_line.country_partner_id.id or False, + 'invoice_id': inv_intra_line.invoice_id.id or False, + 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': + inv_intra_line.country_partner_id.id or False, 'vat_code': - inv_intra_line.invoice_id.partner_id.vat \ - and inv_intra_line.invoice_id.partner_id.vat[2:] \ - or False, + ( + inv_intra_line.invoice_id.partner_id.vat + and inv_intra_line.invoice_id.partner_id.vat[2:] + or False), 'amount_euro': self.statement_id.round_min_amount( round(inv_intra_line.amount_euro) or 0, company_id), 'amount_currency': - # >> da valorizzare solo per operazione Paesi non Euro - not inv_intra_line.invoice_id.company_id.currency_id.id - and inv_intra_line.invoice_id.currency_id.id - and round(inv_intra_line.amount_currency) - or 0, - 'transation_nature_id': ( - inv_intra_line.transation_nature_id and - inv_intra_line.transation_nature_id.id) or ( - company_id.intrastat_purchase_transation_nature_id and - company_id.intrastat_purchase_transation_nature_id.id) or - False, + ( + # >> da valorizzare solo per operazione Paesi non Euro + not inv_intra_line.invoice_id.company_id.currency_id.id + and inv_intra_line.invoice_id.currency_id.id + and round(inv_intra_line.amount_currency) + or 0 + ), + 'transation_nature_id': + ( + (inv_intra_line.transation_nature_id + and inv_intra_line.transation_nature_id.id + ) + or + (company_id.intrastat_purchase_transation_nature_id + and company_id.intrastat_purchase_transation_nature_id.id + ) + or False + ), 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, 'weight_kg': inv_intra_line.weight_kg and round(inv_intra_line.weight_kg) @@ -1642,28 +1660,37 @@ def _prepare_statement_line(self, inv_intra_line): round(inv_intra_line.statistic_amount_euro) or ( company_id.intrastat_purchase_statistic_amount and - round(inv_intra_line.amount_euro)) or 0, company_id), - 'delivery_code_id': ( - inv_intra_line.delivery_code_id and - inv_intra_line.delivery_code_id.id) or ( - company_id.intrastat_purchase_delivery_code_id and - company_id.intrastat_purchase_delivery_code_id.id) or - False, - 'transport_code_id': ( - inv_intra_line.transport_code_id and - inv_intra_line.transport_code_id.id) or ( - company_id.intrastat_purchase_transport_code_id and - company_id.intrastat_purchase_transport_code_id.id) or False, - 'country_origin_id': inv_intra_line.country_origin_id and \ - inv_intra_line.country_origin_id.id or False, - 'country_good_origin_id': inv_intra_line.country_good_origin_id \ - and inv_intra_line.country_good_origin_id.id or False, + round(inv_intra_line.amount_euro)) or 0, + company_id), + 'delivery_code_id': + ( + (inv_intra_line.delivery_code_id and + inv_intra_line.delivery_code_id.id) + or (company_id.intrastat_purchase_delivery_code_id and + company_id.intrastat_purchase_delivery_code_id.id) + or False), + 'transport_code_id': + ( + (inv_intra_line.transport_code_id and + inv_intra_line.transport_code_id.id) or + (company_id.intrastat_purchase_transport_code_id and + company_id.intrastat_purchase_transport_code_id.id) + or False), + 'country_origin_id': + ( + inv_intra_line.country_origin_id and + inv_intra_line.country_origin_id.id or False), + 'country_good_origin_id': + ( + inv_intra_line.country_good_origin_id + and inv_intra_line.country_good_origin_id.id or False), 'province_destination_id': ( - inv_intra_line.province_destination_id and - inv_intra_line.province_destination_id.id) or ( - company_id.intrastat_purchase_province_destination_id and - company_id.intrastat_purchase_province_destination_id.id) or - False + (inv_intra_line.province_destination_id and + inv_intra_line.province_destination_id.id) or + (company_id.intrastat_purchase_province_destination_id + and + company_id.intrastat_purchase_province_destination_id.id) + or False) } return res @@ -1678,10 +1705,10 @@ def _prepare_export_line(self): rcd = '' # Codice dello Stato membro del fornitore - self.country_partner_id.with_context(control_ISO_code=True).\ - intrastat_validate() + self.country_partner_id.with_context( + control_ISO_code=True).intrastat_validate() rcd += '{:2s}'.format(self.country_partner_id.code or '') - # Codice IVA del fornitore + #  Codice IVA del fornitore rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') # Ammontare delle operazioni in euro rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) @@ -1693,36 +1720,39 @@ def _prepare_export_line(self): # Codice della nomenclatura combinata della merce rcd += '{:8s}'.format( self.intrastat_code_id and self.intrastat_code_id.name or '') - # Massa netta in chilogrammi + #  Massa netta in chilogrammi rcd += '{:10s}'.format(str(self.weight_kg).zfill(10)) - # Quantità espressa nell'unità di misura supplementare + #  Quantità espressa nell'unità di misura supplementare rcd += '{:10s}'.format(str(self.additional_units).zfill(10)) - # Valore statistico in euro + #  Valore statistico in euro rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) - # Codice delle condizioni di consegna + #  Codice delle condizioni di consegna rcd += '{:1s}'.format( self.delivery_code_id and self.delivery_code_id.code[:1] or '') - # Codice del modo di trasporto + #  Codice del modo di trasporto rcd += '{:1s}'.format( self.transport_code_id and str(self.transport_code_id.code) or '') - # Codice del paese di provenienza + #  Codice del paese di provenienza rcd += '{:2s}'.format( self.country_origin_id and self.country_origin_id.code or '') - # Codice del paese di origine della merce + #  Codice del paese di origine della merce rcd += '{:2s}'.format( - self.country_good_origin_id and self.country_good_origin_id.code \ + self.country_good_origin_id and + self.country_good_origin_id.code or '') # Codice della provincia di destinazione della merce rcd += '{:2s}'.format( - self.province_destination_id and self.province_destination_id.code \ + self.province_destination_id + and self.province_destination_id.code or '') # ... new line - rcd += "\r" # - rcd += "\n" # + rcd += "\r" # + rcd += "\n" # return rcd -class account_intrastat_statement_purchase_section2(models.Model): + +class AccountIntrastatStatementPurchaseSection2(models.Model): _name = 'account.intrastat.statement.purchase.section2' _description = 'Account INTRASTAT - Statement - Purchase Section 2' @@ -1736,35 +1766,35 @@ class account_intrastat_statement_purchase_section2(models.Model): year_id = fields.Integer(string='Year Ref of Refund') partner_id = fields.Many2one('res.partner', string='Partner') country_partner_id = fields.Many2one('res.country', - string='Country Partner') + string='Country Partner') vat_code = fields.Char(string='Vat Code Partner') sign_variation = fields.Selection([ ('+', '+'), ('-', '-'), - ], 'Sign Variation') + ], 'Sign Variation') amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) amount_currency = fields.Integer(string='Amount Currency', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) transation_nature_id = fields.Many2one( 'account.intrastat.transation.nature', string='Transation Nature') intrastat_code_id = fields.Many2one( 'report.intrastat.code', string='Intrastat Code Good') statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) invoice_id = fields.Many2one('account.invoice', string='Invoice', readonly=True) @api.onchange('partner_id') def change_partner_id(self): if self.partner_id: - data = self.env['account.invoice.intrastat'].\ - _get_partner_data(self.partner_id) + data = self.env['account.invoice.intrastat']._get_partner_data( + self.partner_id) self.country_partner_id = data['country_partner_id'] self.vat_code = data['vat_code'] @api.model - def _prepare_statement_line(self, inv_intra_line): + def _prepare_statement_line(self, inv_intra_line, statement_id): company_id = self._context.get( 'company_id', self.env.user.company_id) # sign_variation @@ -1772,23 +1802,20 @@ def _prepare_statement_line(self, inv_intra_line): if inv_intra_line.invoice_id.type in ['in_refund']: sign_variation = '-' # Period Ref - #======================================================================= - # ref_period = self.statement_id._get_period_ref( - # inv_intra_line.invoice_id.intrastat_refund_period_id) - #======================================================================= - ref_period = self.statement_id._get_period_ref( - inv_intra_line.invoice_id) + ref_period = statement_id._get_period_ref(inv_intra_line.invoice_id) + res = { - 'invoice_id' : inv_intra_line.invoice_id.id or False, - 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, - 'month' : ref_period and ref_period['month'] or False, - 'quarterly' : ref_period and ref_period['quarterly'] or False, - 'year_id' : ref_period and ref_period['year_id'] or False, - 'country_partner_id': inv_intra_line.country_partner_id.id or False, - 'vat_code': - inv_intra_line.invoice_id.partner_id.vat \ - and inv_intra_line.invoice_id.partner_id.vat[2:] \ - or False, + 'invoice_id': inv_intra_line.invoice_id.id or False, + 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, + 'month': ref_period and ref_period['month'] or False, + 'quarterly': ref_period and ref_period['quarterly'] or False, + 'year_id': ref_period and ref_period['year_id'] or False, + 'country_partner_id': + inv_intra_line.country_partner_id.id or False, + 'vat_code': ( + inv_intra_line.invoice_id.partner_id.vat + and inv_intra_line.invoice_id.partner_id.vat[2:] + or False), 'sign_variation': sign_variation, 'amount_euro': self.statement_id.round_min_amount( round(inv_intra_line.amount_euro) or 0, company_id), @@ -1805,7 +1832,8 @@ def _prepare_statement_line(self, inv_intra_line): round(inv_intra_line.statistic_amount_euro) or ( company_id.intrastat_purchase_statistic_amount and - round(inv_intra_line.amount_euro)) or 0, company_id), + round(inv_intra_line.amount_euro)) or 0, + company_id), } return res @@ -1837,27 +1865,27 @@ def _prepare_export_line(self): rcd = '' # Mese di riferimento del riepilogo da rettificare rcd += '{:2s}'.format(str(self.month).zfill(2)) - # Trimestre di riferimento del riepilogo da rettificare + #  Trimestre di riferimento del riepilogo da rettificare rcd += '{:1s}'.format(str(self.quarterly).zfill(1)) # Anno periodo di ref da modificare - date_start_year = datetime.strptime(self.year_id.date_start, - '%Y-%m-%d') - rcd += '{:2s}'.format( - date_start_year and str(date_start_year.year)[2:] or '') + start_year = self.year_id + rcd += '{:2s}'.format(str(start_year)[2:] or '') # Codice dello Stato membro del fornitore - self.country_partner_id.with_context(control_ISO_code=True).\ - intrastat_validate() + self.country_partner_id.with_context( + control_ISO_code=True).intrastat_validate() rcd += '{:2s}'.format(self.country_partner_id.code or '') - # Codice IVA del fornitore + #  Codice IVA del fornitore rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - # Segno da attribuire alle variazioni da X(1) apportare + #  Segno da attribuire alle variazioni da X(1) apportare rcd += '{:1s}'.format(self.sign_variation or '') # Ammontare delle operazioni in euro rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) # Ammontare delle operazioni in valuta # >> da valorizzare solo per operazione Paesi non Euro - if not self.invoice_id.company_id.currency_id.id == \ - self.invoice_id.currency_id.id: + if not ( + self.invoice_id.company_id.currency_id.id == + self.invoice_id.currency_id.id + ): rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) else: rcd += '{:13s}'.format(str(0).zfill(13)) @@ -1867,15 +1895,16 @@ def _prepare_export_line(self): # Codice della nomenclatura combinata della merce rcd += '{:8s}'.format( self.intrastat_code_id and self.intrastat_code_id.name or '') - # Valore statistico in euro + #  Valore statistico in euro rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) # ... new line - rcd += "\r" # - rcd += "\n" # + rcd += "\r" # + rcd += "\n" # return rcd -class account_intrastat_statement_purchase_section3(models.Model): + +class AccountIntrastatStatementPurchaseSection3(models.Model): _name = 'account.intrastat.statement.purchase.section3' _description = 'Account INTRASTAT - Statement - Purchase Section 3' @@ -1886,12 +1915,12 @@ class account_intrastat_statement_purchase_section3(models.Model): sequence = fields.Integer(string='Progressive') partner_id = fields.Many2one('res.partner', string='Partner') country_partner_id = fields.Many2one('res.country', - string='Country Partner') + string='Country Partner') vat_code = fields.Char(string='Vat Code Partner') amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) amount_currency = fields.Integer(string='Amount Currency', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) invoice_number = fields.Char(string='Invoice Number') invoice_date = fields.Date(string='Invoice Date') intrastat_code_id = fields.Many2one('report.intrastat.code', @@ -1899,39 +1928,40 @@ class account_intrastat_statement_purchase_section3(models.Model): supply_method = fields.Selection([ ('I', 'Instant'), ('R', 'Repeatedly'), - ], 'Supply Method') + ], 'Supply Method') payment_method = fields.Selection([ ('B', 'Transfer'), ('A', 'Accreditation'), ('X', 'Other'), - ], 'Payment Method') - country_payment_id= fields.Many2one('res.country', 'Country Payment') + ], 'Payment Method') + country_payment_id = fields.Many2one('res.country', 'Country Payment') invoice_id = fields.Many2one( 'account.invoice', string='Invoice', readonly=True) @api.onchange('partner_id') def change_partner_id(self): if self.partner_id: - data = self.env['account.invoice.intrastat'].\ - _get_partner_data(self.partner_id) + data = self.env['account.invoice.intrastat']._get_partner_data( + self.partner_id) self.country_partner_id = data['country_partner_id'] self.vat_code = data['vat_code'] @api.model def _prepare_statement_line(self, inv_intra_line): res = { - 'invoice_id' : inv_intra_line.invoice_id.id or False, - 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': inv_intra_line.country_partner_id.id or False, - 'vat_code': - inv_intra_line.invoice_id.partner_id.vat \ - and inv_intra_line.invoice_id.partner_id.vat[2:] \ - or False, + 'invoice_id': inv_intra_line.invoice_id.id or False, + 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, + 'country_partner_id': + inv_intra_line.country_partner_id.id or False, + 'vat_code': ( + inv_intra_line.invoice_id.partner_id.vat + and inv_intra_line.invoice_id.partner_id.vat[2:] + or False), 'amount_euro': self.statement_id.round_min_amount( round(inv_intra_line.amount_euro) or 0, inv_intra_line.invoice_id.company_id), 'amount_currency': - # >> da valorizzare solo per operazione Paesi non Euro + # >> da valorizzare solo per operazione Paesi non Euro not inv_intra_line.invoice_id.company_id.currency_id.id and inv_intra_line.invoice_id.currency_id.id and round(inv_intra_line.amount_currency) @@ -1941,7 +1971,8 @@ def _prepare_statement_line(self, inv_intra_line): 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, 'supply_method': inv_intra_line.supply_method or False, 'payment_method': inv_intra_line.payment_method or False, - 'country_payment_id': inv_intra_line.country_payment_id.id or False, + 'country_payment_id': + inv_intra_line.country_payment_id.id or False, } return res @@ -1956,17 +1987,17 @@ def _prepare_export_line(self): rcd = '' # Codice dello Stato membro del fornitore - self.country_partner_id.with_context(control_ISO_code=True).\ - intrastat_validate() + self.country_partner_id.with_context( + control_ISO_code=True).intrastat_validate() rcd += '{:2s}'.format(self.country_partner_id.code or '') - # Codice IVA del fornitore + #  Codice IVA del fornitore rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') # Ammontare delle operazioni in euro rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) # Ammontare delle operazioni in valuta rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) # Numero Fattura - invoice_number = self.invoice_number + invoice_number = self.invoice_number or '' if len(invoice_number) > 15: invoice_number = invoice_number[-15:] rcd += '{:15s}'.format(str(invoice_number).zfill(15)) @@ -1984,16 +2015,16 @@ def _prepare_export_line(self): # Modalità di incasso rcd += '{:1s}'.format(self.payment_method or '') # Codice del paese di pagamento - rcd += '{:2s}'.format(self.country_payment_id and \ + rcd += '{:2s}'.format(self.country_payment_id and self.country_payment_id.code or '') # ... new line - rcd += "\r" # - rcd += "\n" # + rcd += "\r" # + rcd += "\n" # return rcd -class account_intrastat_statement_purchase_section4(models.Model): +class AccountIntrastatStatementPurchaseSection4(models.Model): _name = 'account.intrastat.statement.purchase.section4' _description = 'Account INTRASTAT - Statement - Purchase Section 4' @@ -2013,12 +2044,12 @@ class account_intrastat_statement_purchase_section4(models.Model): progressive_to_modify = fields.Integer('Progressive to Modify') partner_id = fields.Many2one('res.partner', string='Partner') country_partner_id = fields.Many2one('res.country', - string='Country Partner') + string='Country Partner') vat_code = fields.Char(string='Vat Code Partner') amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) amount_currency = fields.Integer(string='Amount Currency', - digits=dp.get_precision('Account')) + digits=dp.get_precision('Account')) invoice_number = fields.Char(string='Invoice Number') invoice_date = fields.Char(string='Invoice Date') intrastat_code_id = fields.Many2one('report.intrastat.code', @@ -2026,44 +2057,42 @@ class account_intrastat_statement_purchase_section4(models.Model): supply_method = fields.Selection([ ('I', 'Instant'), ('R', 'Repeatedly'), - ], 'Supply Method') + ], 'Supply Method') payment_method = fields.Selection([ ('B', 'Transfer'), ('A', 'Accreditation'), ('X', 'Other'), - ], 'Payment Method') - country_payment_id= fields.Many2one('res.country', 'Country Payment') + ], 'Payment Method') + country_payment_id = fields.Many2one('res.country', 'Country Payment') invoice_id = fields.Many2one('account.invoice', string='Invoice', readonly=True) @api.onchange('partner_id') def change_partner_id(self): if self.partner_id: - data = self.env['account.invoice.intrastat'].\ - _get_partner_data(self.partner_id) + data = self.env['account.invoice.intrastat']._get_partner_data( + self.partner_id) self.country_partner_id = data['country_partner_id'] self.vat_code = data['vat_code'] @api.model - def _prepare_statement_line(self, inv_intra_line): + def _prepare_statement_line(self, inv_intra_line, statement_id): # Period Ref - #======================================================================= - # ref_period = self.statement_id._get_period_ref( - # inv_intra_line.invoice_id.intrastat_refund_period_id) - #======================================================================= - ref_period = self.statement_id._get_period_ref( + + ref_period = statement_id._get_period_ref( inv_intra_line.invoice_id) res = { - 'invoice_id' : inv_intra_line.invoice_id.id or False, - 'partner_id' : inv_intra_line.invoice_id.partner_id.id or False, - 'month' : ref_period and ref_period['month'] or False, - 'quarterly' : ref_period and ref_period['quarterly'] or False, - 'year_id' : ref_period and ref_period['year_id'] or False, - 'country_partner_id': inv_intra_line.country_partner_id.id or False, - 'vat_code': - inv_intra_line.invoice_id.partner_id.vat \ - and inv_intra_line.invoice_id.partner_id.vat[2:] \ - or False, + 'invoice_id': inv_intra_line.invoice_id.id or False, + 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, + 'month': ref_period and ref_period['month'] or False, + 'quarterly': ref_period and ref_period['quarterly'] or False, + 'year_id': ref_period and ref_period['year_id'] or False, + 'country_partner_id': + inv_intra_line.country_partner_id.id or False, + 'vat_code': ( + inv_intra_line.invoice_id.partner_id.vat + and inv_intra_line.invoice_id.partner_id.vat[2:] + or False), 'amount_euro': self.statement_id.round_min_amount( round(inv_intra_line.amount_euro) or 0, inv_intra_line.invoice_id.company_id), @@ -2073,7 +2102,9 @@ def _prepare_statement_line(self, inv_intra_line): 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, 'supply_method': inv_intra_line.supply_method or False, 'payment_method': inv_intra_line.payment_method or False, - 'country_payment_id': inv_intra_line.country_payment_id.id or False, + 'country_payment_id': ( + inv_intra_line.country_payment_id.id or False), + 'custom_id': statement_id.custom_id.id } return res @@ -2123,36 +2154,39 @@ def _prepare_export_line(self): # dichiarazione da rettificare rcd += '{:6s}'.format(self.custom_id and self.custom_id.code or '') # Anno di registrazione della dichiarazione da rettificare - date_start_year = datetime.strptime(self.year_id.date_start, - '%Y-%m-%d') - rcd += '{:2s}'.format( - date_start_year and str(date_start_year.year)[2:] or '') + start_year = self.year_id + rcd += '{:2s}'.format(start_year and str(start_year)[2:] or '') # Protocollo della dichiarazione da rettificare - rcd += '{:6s}'.format(self.protocol and str(self.protocol).zfill(6) \ - or '') + rcd += '{:6s}'.format( + self.protocol and str(self.protocol).zfill(6) or '') # Progressivo della sezione 3 da rettificare - rcd += '{:5s}'.format(self.progressive_to_modify_id and - str(self.progressive_to_modify_id.sequence).zfill(5) \ - or '') + rcd += '{:5s}'.format( + self.progressive_to_modify_id and + str(self.progressive_to_modify_id.sequence).zfill(5) + or '') # Codice dello Stato membro dell’acquirente # Test anche che ci sia il codice nazione - country_id = self.country_partner_id \ + country_id = ( + self.country_partner_id or self.partner_id.country_id + ) if country_id: - self.country_id.with_context(control_ISO_code=True).\ - intrastat_validate() + country_id.with_context( + control_ISO_code=True).intrastat_validate() else: raise ValidationError( - _('Partner without Country') ) + _('Partner without Country')) rcd += '{:2s}'.format(country_id.code or '') - # Codice IVA dell’acquirente + # Codice IVA dell’acquirente rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') # Ammontare delle operazioni in euro rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) # Ammontare delle operazioni in valuta # >> da valorizzare solo per operazione Paesi non Euro - if not self.invoice_id.company_id.currency_id.id == \ - self.invoice_id.currency_id.id: + if not ( + self.invoice_id.company_id.currency_id.id == + self.invoice_id.currency_id.id + ): rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) else: rcd += '{:13s}'.format(str(0).zfill(13)) @@ -2172,7 +2206,7 @@ def _prepare_export_line(self): # Modalità di incasso rcd += '{:1s}'.format(self.payment_method or '') # Codice del paese di pagamento - rcd += '{:2s}'.format(self.country_payment_id and \ + rcd += '{:2s}'.format(self.country_payment_id and self.country_payment_id.code or '') # ... new line rcd += "\r" diff --git a/l10n_it_intrastat_statement/report/intrastat_mod1_bis.xml b/l10n_it_intrastat_statement/report/intrastat_mod1_bis.xml new file mode 100644 index 000000000000..2985081c8bcd --- /dev/null +++ b/l10n_it_intrastat_statement/report/intrastat_mod1_bis.xml @@ -0,0 +1,142 @@ + + + + + + + + \ No newline at end of file diff --git a/l10n_it_intrastat_statement/report/report_intrastat_mod1.xml b/l10n_it_intrastat_statement/report/report_intrastat_mod1.xml new file mode 100644 index 000000000000..a532233ca23c --- /dev/null +++ b/l10n_it_intrastat_statement/report/report_intrastat_mod1.xml @@ -0,0 +1,133 @@ + + + + + + + + diff --git a/l10n_it_intrastat_statement/report/report_intrastat_mod2.xml b/l10n_it_intrastat_statement/report/report_intrastat_mod2.xml new file mode 100644 index 000000000000..78f199263529 --- /dev/null +++ b/l10n_it_intrastat_statement/report/report_intrastat_mod2.xml @@ -0,0 +1,131 @@ + + + + + + + + diff --git a/l10n_it_intrastat_statement/report/report_intrastat_mod2_bis.xml b/l10n_it_intrastat_statement/report/report_intrastat_mod2_bis.xml new file mode 100644 index 000000000000..2ad3a1458251 --- /dev/null +++ b/l10n_it_intrastat_statement/report/report_intrastat_mod2_bis.xml @@ -0,0 +1,150 @@ + + + + + + + + diff --git a/l10n_it_intrastat_statement/report/reports.xml b/l10n_it_intrastat_statement/report/reports.xml new file mode 100644 index 000000000000..527146fc647f --- /dev/null +++ b/l10n_it_intrastat_statement/report/reports.xml @@ -0,0 +1,77 @@ + + + + + + No Header A4 Vertical + 10 + 5 + Portrait + 15 + + + + No Header A4 Landscape + 10 + 5 + Landscape + 15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l10n_it_intrastat_statement/security/rules.xml b/l10n_it_intrastat_statement/security/rules.xml index d62d91d5fd0d..2ce61ba936cf 100644 --- a/l10n_it_intrastat_statement/security/rules.xml +++ b/l10n_it_intrastat_statement/security/rules.xml @@ -1,5 +1,5 @@ - + Account INTRASTAT - Statement - multi company @@ -8,4 +8,4 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] - + diff --git a/l10n_it_intrastat_statement/static/img/logo_dogane.gif b/l10n_it_intrastat_statement/static/img/logo_dogane.gif new file mode 100644 index 0000000000000000000000000000000000000000..13754ececb2baff9b678ba86663853adeaebf5eb GIT binary patch literal 11105 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�)bnN9d@b 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 literal 0 HcmV?d00001 diff --git a/l10n_it_intrastat_statement/views/config.xml b/l10n_it_intrastat_statement/views/config.xml index 32385751f48b..cb5316b399e8 100644 --- a/l10n_it_intrastat_statement/views/config.xml +++ b/l10n_it_intrastat_statement/views/config.xml @@ -1,19 +1,17 @@ - - - - + + + view_form_intrastat_statement_company res.company - + - - - + + + - - - \ No newline at end of file + + \ No newline at end of file diff --git a/l10n_it_intrastat_statement/views/intrastat.xml b/l10n_it_intrastat_statement/views/intrastat.xml index 05638aa46780..6da1feb59ebe 100644 --- a/l10n_it_intrastat_statement/views/intrastat.xml +++ b/l10n_it_intrastat_statement/views/intrastat.xml @@ -1,31 +1,166 @@ - - + - + account.intrastat.statement.tree.view account.intrastat.statement - + + + + + + + + + - + account.intrastat.statement.form.view account.intrastat.statement
-

- Richiedi i dati per la preparazione, compilazione ed export della dichiarazione - per l'agenzia delle dogane -

- - +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -69,7 +204,7 @@ views.tree.statement.sale.section1 account.intrastat.statement.sale.section1 - + @@ -86,37 +221,37 @@ views.form.statement.sale.section1 account.intrastat.statement.sale.section1 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-
-

Export Complete

-

Here is the exported file:

-
-
-
-
-
- - -
+ + + Export Intrastat File + account.intrastat.export.file + +
+ + +
+

Export Complete

+

Here is the exported file:

+
+
+
+
+
+ +
+
- - Export Intrastat File - ir.actions.act_window - account.intrastat.export.file - form - form - - new - - -
-
+ + Export Intrastat File + ir.actions.act_window + account.intrastat.export.file + form + form + + new + + + From 0cf27a10e67f2961645ad14414f929bbaa27ab99 Mon Sep 17 00:00:00 2001 From: gprina Date: Fri, 23 Aug 2019 10:06:38 +0200 Subject: [PATCH 03/61] [MIG] l10n_it_intrastat: Migration to 12.0 --- l10n_it_intrastat_statement/README.rst | 140 ++ l10n_it_intrastat_statement/__init__.py | 2 + l10n_it_intrastat_statement/__manifest__.py | 26 +- l10n_it_intrastat_statement/data/sequence.xml | 22 +- .../i18n/l10n_it_intrastat_statement.pot | 1157 --------- .../models/__init__.py | 7 +- l10n_it_intrastat_statement/models/config.py | 9 +- .../models/intrastat.py | 2215 ----------------- .../models/intrastat_statement.py | 851 +++++++ .../intrastat_statement_purchase_section.py | 536 ++++ .../intrastat_statement_sale_section.py | 473 ++++ .../models/intrastat_statement_section.py | 96 + .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 5 + l10n_it_intrastat_statement/readme/USAGE.rst | 55 + .../report/intrastat_mod1_bis.xml | 261 +- .../report/report_intrastat_mod1.xml | 268 +- .../report/report_intrastat_mod2.xml | 269 +- .../report/report_intrastat_mod2_bis.xml | 50 +- .../report/reports.xml | 3 - .../security/rules.xml | 16 +- .../static/description/index.html | 474 ++++ .../static/img/agenzia_dogane.jpg | Bin 0 -> 14510 bytes l10n_it_intrastat_statement/views/config.xml | 4 +- .../views/intrastat.xml | 67 +- .../wizard/__init__.py | 2 + .../wizard/export_file.py | 29 +- .../wizard/export_file_view.xml | 8 +- 28 files changed, 3157 insertions(+), 3892 deletions(-) create mode 100644 l10n_it_intrastat_statement/README.rst delete mode 100644 l10n_it_intrastat_statement/i18n/l10n_it_intrastat_statement.pot delete mode 100644 l10n_it_intrastat_statement/models/intrastat.py create mode 100644 l10n_it_intrastat_statement/models/intrastat_statement.py create mode 100644 l10n_it_intrastat_statement/models/intrastat_statement_purchase_section.py create mode 100644 l10n_it_intrastat_statement/models/intrastat_statement_sale_section.py create mode 100644 l10n_it_intrastat_statement/models/intrastat_statement_section.py create mode 100644 l10n_it_intrastat_statement/readme/CONTRIBUTORS.rst create mode 100644 l10n_it_intrastat_statement/readme/DESCRIPTION.rst create mode 100644 l10n_it_intrastat_statement/readme/USAGE.rst create mode 100644 l10n_it_intrastat_statement/static/description/index.html create mode 100644 l10n_it_intrastat_statement/static/img/agenzia_dogane.jpg diff --git a/l10n_it_intrastat_statement/README.rst b/l10n_it_intrastat_statement/README.rst new file mode 100644 index 000000000000..5bd46e0dcdc7 --- /dev/null +++ b/l10n_it_intrastat_statement/README.rst @@ -0,0 +1,140 @@ +============================= +ITA - Dichiarazione Intrastat +============================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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-LGPL--3-blue.png + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--italy-lightgray.png?logo=github + :target: https://github.com/OCA/l10n-italy/tree/12.0/l10n_it_intrastat_statement + :alt: OCA/l10n-italy +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/l10n-italy-12-0/l10n-italy-12-0-l10n_it_intrastat_statement + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/122/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +**Italiano** + +Questo modulo si occupa di generare la Dichiarazione Intrastat e le relative stampe + + + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +**Italiano** + + +**Dichiarazione​ Intrastat** + + +Accedere a ​ Contabilità >> Dichiarazioni Intrastat ed utilizzare​ ​ il​ ​ tasto​ ​ Crea​ ​ per​ ​ creare​ ​ una​ ​ nuova​ ​ dichiarazione: + +Nella​ ​ parte​ ​ superiore​ ​ della​ ​ maschera,​ ​ inserire​ ​ i ​ ​ dati: + +- Azienda:​ ​ popolato​ ​ in​ ​ automatico​ ​ con​ ​ il​ ​ nome​ ​ della​ ​ company +- VAT​ ​ taxpayer:​ ​ la​ ​ partita​ ​ IVA,​ ​ popolata​ ​ in​ ​ automatico​ ​ con​ ​ il​ ​ nome​ ​ della​ ​ company +- Data​ ​ di​ ​ presentazione:​ ​ popolata​ ​ in​ ​ automatico​ ​ con​ ​ la​ ​ data​ ​ corrente +- Year: anno di presentazione, scelta da menù a tendina che visualizza gli anni fiscali configurati​ ​ a ​ ​ sistema +- Tipo periodo: l’orizzonte temporale temporale cui fa riferimento la dichiarazione, scelta da menù​ ​ a ​ ​ tendina​ ​ con​ ​ le​ ​ voci​ ​ “Mese”​ ​ o ​ ​ “Trimestre” +- Periodo: il periodo temporale cui fa riferimento la dichiarazione. In serire il numero del mese (es. 9 per settembre, se nel campo Tipo periodo è stato selezionato “Mese”, oppure in numero del trimestre (es: 1 per il trimestre genn.-marzo), se nel campo Tipo periodo è stato selezionato​ ​ “Trimestre” +- Flag “Vendite” e “Acquisti”: da selezionare in base alla tipologia di operazioni che si vogliono inserire​ ​ nella​ ​ dichiarazione +- Numero:​ ​ progressivo​ ​ della​ ​ dichiarazione,​ ​ proposto​ ​ in​ ​ automatico​ ​ dal​ ​ sistema +- Contenuto​ ​ degli​ ​ elenchi:​ ​ selezionare​ ​ la​ ​ voce​ ​ di​ ​ competenza​ ​ dal​ ​ menù​ ​ a ​ ​ tendina +- Casi​ ​ speciali:​ ​ selezionare​ ​ la​ ​ voce​ ​ di​ ​ competenza​ ​ dal​ ​ menù​ ​ a ​ ​ tendina +- Sezione​ ​ doganale:​ ​ selezionare​ ​ la​ ​ voce​ ​ di​ ​ riferimento,​ ​ dal​ ​ menù​ ​ a ​ ​ tendina + +.. figure:: https://raw.githubusercontent.com/OCA/l10n-italy/12.0/l10n_it_intrastat_statement/static/img/dichiarazione.png + :alt: Dichiarazione + :width: 600 px + +Inseriti​ ​ e ​ ​ salvati​ ​ i ​ ​ dati,​ ​ utilizzare​ ​ il​ ​ tasto​ ​ Ricalcola​ ​ per​ ​ popolare​ ​ la​ ​ dichiarazione. Per​ ​ ciascun​ ​ tab​ ​ (”Acquisti”​ ​ e ​ ​ “Vendite”)​ ​ verranno​ ​ inserite​ ​ nelle​ ​ sezioni​ ​ di​ ​ riferimento: + +- Vendita: + - Vendita​ ​ Merci​ ​ - ​ ​ Section​ ​ 1 ​ ​ → ​ ​ fatture​ ​ di​ ​ vendita​ ​ di​ ​ merci + - Rettifica​ ​ Merci​ ​ - ​ ​ Section​ ​ 2 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ vendita​ ​ merci + - Vendita​ ​ Servizi​ ​ - ​ ​ Section​ ​ 3 ​ ​ → ​ ​ fatture​ ​ di​ ​ vendita​ ​ di​ ​ servizi + - Rettifica​ ​ Servizi​ ​ - ​ ​ Section​ ​ 4 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ vendita​ ​ servizi +- Acquisto: + - Acquisto​ ​ Merci​ ​ - ​ ​ Section​ ​ 1 ​ ​ → ​ ​ fatture​ ​ di​ ​ acquisto​ ​ di​ ​ merci + - Rettifica​ ​ Merci​ ​ - ​ ​ Section​ ​ 2 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ acquisto​ ​ merci + - Vendita​ ​ Servizi​ ​ - ​ ​ Section​ ​ 3 ​ ​ → ​ ​ fatture​ ​ di​ ​ acquisto​ ​ di​ ​ servizi + - Rettifica​ ​ Servizi​ ​ - ​ ​ Section​ ​ 4 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ acquisto​ ​ servizi + +I dati presi dalle fatture e dalle note credito indicate come soggette ad Intrastat, relative al periodo di riferimento. + +NB: i record presenti nei tab ​ Rettifica Merci - Section 2 e ​ Rettifica Servizi - Section 4 ​ , sia per gli Acquisti ​ ​ che​ ​ per​ ​ le​ ​ Vendite ​ , ​ ​ vanno​ ​ editati​ ​ per​ ​ inserire​ ​ i ​ ​ dati​ ​ obbligatori​ ​ mancanti. + +Inseriti i dati e slavata la dichiarazione, è possibile procedere all’elaborazione dei file da inviare all’Agenzia​ ​ delle​ ​ Dogane,​ ​ tramite​ ​ l’apposito​ ​ pulsante​ ​ “Export​ ​ File” + +.. figure:: https://raw.githubusercontent.com/OCA/l10n-italy/12.0/l10n_it_intrastat_statement/static/img/export_file.png + :alt: Export file + +Il​ ​ pulsante​ ​ fa​ ​ partire​ ​ un​ ​ wizard,​ ​ che​ ​ permette​ ​ di​ ​ scegliere​ ​ quale​ ​ tipo​ ​ di​ ​ file​ ​ estrarre: + +- file​ ​ Invio​ ​ (complessivo) +- file​ ​ acquisti.cee +- file​ ​ cessioni.cee + +Il file potrà essere scaricato tramite l’apposito link mostrato nella maschera del wizard. Di seguito un esempio​ ​ per​ ​ il​ ​ download​ ​ del​ ​ file​ ​ cessioni.cee​ ​ (il​ ​ nome​ ​ del​ ​ file​ ​ da​ ​ scaricare​ ​ è ​ ​ SCAMBI.CEE) + +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 +~~~~~~~ + +* Openforce +* Link IT srl + +Contributors +~~~~~~~~~~~~ + +* Alessandro Camilli +* Lorenzo Battistini +* Lara Baggio +* Glauco Prina + +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/l10n-italy `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/l10n_it_intrastat_statement/__init__.py b/l10n_it_intrastat_statement/__init__.py index 9b4296142f47..93aa2c1f84b4 100644 --- a/l10n_it_intrastat_statement/__init__.py +++ b/l10n_it_intrastat_statement/__init__.py @@ -1,2 +1,4 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import models from . import wizard diff --git a/l10n_it_intrastat_statement/__manifest__.py b/l10n_it_intrastat_statement/__manifest__.py index 598e0f211109..f2fa9461670e 100644 --- a/l10n_it_intrastat_statement/__manifest__.py +++ b/l10n_it_intrastat_statement/__manifest__.py @@ -1,17 +1,19 @@ +# Copyright 2019 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + { - 'name': 'ITA - Dichiarazione Intrastat', - 'version': '11.0.1.0.0', + 'name': "ITA - Dichiarazione Intrastat", + 'version': '12.0.1.0.0', 'category': 'Account', - 'summary': 'Dichiarazione Intrastat per l\'Agenzia delle Dogane', - 'author': 'Openforce' - ', Link IT srl, Odoo Community Association (OCA)', - 'website': 'https://github.com/OCA/l10n-italy', - 'license': 'LGPL-3', - "depends": [ + 'author': "Openforce, Link IT srl, Agile Business Group, " + "Odoo Community Association (OCA)", + 'website': 'https://github.com/OCA/l10n-italy/tree/' + '12.0/l10n_it_intrastat_statement', + 'license': 'AGPL-3', + 'depends': [ 'l10n_it_intrastat', - 'web', ], - "data": [ + 'data': [ 'data/sequence.xml', 'security/ir.model.access.csv', 'security/rules.xml', @@ -23,7 +25,5 @@ 'report/report_intrastat_mod2.xml', 'report/report_intrastat_mod2_bis.xml', 'report/reports.xml', - ], - "demo": [], - "installable": True + ] } diff --git a/l10n_it_intrastat_statement/data/sequence.xml b/l10n_it_intrastat_statement/data/sequence.xml index 8ae5dc94f31b..818bd1daed74 100644 --- a/l10n_it_intrastat_statement/data/sequence.xml +++ b/l10n_it_intrastat_statement/data/sequence.xml @@ -1,14 +1,10 @@ - - - - - - Intrastat Statement Sequence - intrastat.statement.sequence - - - - - - \ No newline at end of file + + + + Intrastat Statement Sequence + intrastat.statement.sequence + + + + diff --git a/l10n_it_intrastat_statement/i18n/l10n_it_intrastat_statement.pot b/l10n_it_intrastat_statement/i18n/l10n_it_intrastat_statement.pot deleted file mode 100644 index 261a197ef2a8..000000000000 --- a/l10n_it_intrastat_statement/i18n/l10n_it_intrastat_statement.pot +++ /dev/null @@ -1,1157 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * l10n_it_intrastat_statement -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 11.0+e-20190417\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-06-26 15:07+0000\n" -"PO-Revision-Date: 2019-06-26 15:07+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: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement -msgid "Account INTRASTAT - Statement" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section1 -msgid "Account INTRASTAT - Statement - Purchase Section 1" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section2 -msgid "Account INTRASTAT - Statement - Purchase Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section3 -msgid "Account INTRASTAT - Statement - Purchase Section 3" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_purchase_section4 -msgid "Account INTRASTAT - Statement - Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section1 -msgid "Account INTRASTAT - Statement - Sale Section 1" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section2 -msgid "Account INTRASTAT - Statement - Sale Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section3 -msgid "Account INTRASTAT - Statement - Sale Section 3" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_statement_sale_section4 -msgid "Account INTRASTAT - Statement - Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement.purchase.section3,payment_method:0 -#: selection:account.intrastat.statement.purchase.section4,payment_method:0 -#: selection:account.intrastat.statement.sale.section3,payment_method:0 -#: selection:account.intrastat.statement.sale.section4,payment_method:0 -msgid "Accreditation" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_additional_units -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_additional_units -msgid "Additional Units" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_additional_units_required -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_additional_units_required -msgid "Additional Units Required" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_additional_units_uom -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_additional_units_uom -msgid "Additional Units UOM" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,intrastat_type_data:0 -msgid "All (Fiscal and Statistic)" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_amount_currency -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_amount_currency -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_amount_currency -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_amount_currency -msgid "Amount Currency" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_amount_euro -msgid "Amount Euro" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file -msgid "Cancel" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,content_type:0 -msgid "Change Period in quarterly: only first and second month operations" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,content_type:0 -msgid "Change Period in quarterly: only first month operations" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,special_cases:0 -msgid "Change VAT or Close Activity" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file -msgid "Close" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_intrastat_code_type -msgid "Code Type" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_res_company -msgid "Companies" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_company_id -msgid "Company" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_content_type -msgid "Content Type" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_country_partner_id -msgid "Country Customer" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_country_destination_id -msgid "Country Destination" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_country_good_origin_id -msgid "Country Good Origin" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_country_origin_id -msgid "Country Origin" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_country_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_country_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_country_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_country_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_country_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_country_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_country_partner_id -msgid "Country Partner" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_country_payment_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_country_payment_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_country_payment_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_country_payment_id -msgid "Country Payment" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_create_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_create_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_create_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_create_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_create_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_create_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_create_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_create_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_create_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_create_uid -msgid "Created by" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_create_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_create_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_create_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_create_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_create_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_create_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_create_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_create_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_create_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_create_date -msgid "Created on" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_custom_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_custom_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_custom_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_res_company_intrastat_custom_id -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_custom_view_form -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_custom_view_tree -msgid "Custom" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_intrastat_type_data -msgid "Data Type" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_date_start -msgid "Date Start" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_date_stop -msgid "Date Stop" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_delivery_code_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_delivery_code_id -msgid "Delivery" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_display_name -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_display_name -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_display_name -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_display_name -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_display_name -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_display_name -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_display_name -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_display_name -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_display_name -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_display_name -msgid "Display Name" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file -msgid "Export Complete" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Export File" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/wizard/export_file.py:43 -#: code:addons/l10n_it_intrastat_statement/wizard/export_file.py:44 -#: model:ir.actions.act_window,name:l10n_it_intrastat_statement.action_wizard_wizard_account_intrastat_export_file -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file -#, python-format -msgid "Export Intrastat File" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file -msgid "Export acquisti.cee" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file -msgid "Export cessioni.cee" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file -msgid "Export file invio" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_data -msgid "File" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_name -msgid "File Name" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,special_cases:0 -msgid "First Statement" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,special_cases:0 -msgid "First Statement in Change VAT or Close Activity" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,intrastat_type_data:0 -msgid "Fiscal" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,intrastat_code_type:0 -msgid "Good" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Goods Purchase - Section 1" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Goods Refund - Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Goods Refund Purchase - Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Goods Sale - Section 1" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement -msgid "Group By" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file -msgid "Here is the exported file:" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_id -msgid "ID" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_tree_view -msgid "INTRASTAT Statement" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement.purchase.section3,supply_method:0 -#: selection:account.intrastat.statement.purchase.section4,supply_method:0 -#: selection:account.intrastat.statement.sale.section3,supply_method:0 -#: selection:account.intrastat.statement.sale.section4,supply_method:0 -msgid "Instant" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_intrastat_code_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_intrastat_code_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_intrastat_code_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_intrastat_code_id -msgid "Intrastat Code Good" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_intrastat_code_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_intrastat_code_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_intrastat_code_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_intrastat_code_id -msgid "Intrastat Code Service" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.actions.act_window,name:l10n_it_intrastat_statement.account_intrastat_statement_action -#: model:ir.ui.menu,name:l10n_it_intrastat_statement.menu_account_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement -msgid "Intrastat Statements" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_invoice_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_invoice_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_invoice_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_invoice_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_invoice_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_id -msgid "Invoice" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_invoice_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_date -msgid "Invoice Date" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_invoice_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_invoice_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_invoice_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_invoice_number -msgid "Invoice Number" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:923 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:938 -#, python-format -msgid "Invoice and refund in the same period with refund > invoice for partner %s" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file___last_update -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement___last_update -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1___last_update -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2___last_update -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3___last_update -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4___last_update -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1___last_update -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2___last_update -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3___last_update -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4___last_update -msgid "Last Modified on" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_write_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_write_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_write_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_write_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_write_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_write_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_write_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_write_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_write_uid -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_write_uid -msgid "Last Updated by" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_write_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_write_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_write_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_write_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_write_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_write_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_write_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_write_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_write_date -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_write_date -msgid "Last Updated on" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2094 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2157 -#, python-format -msgid "Missing Country Payment on Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1473 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1505 -#, python-format -msgid "Missing Country Payment on Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2082 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2145 -#, python-format -msgid "Missing Invoice data on Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1461 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1493 -#, python-format -msgid "Missing Invoice data on Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1811 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1867 -#, python-format -msgid "Missing Month Ref Variation on Purchase Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1213 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1240 -#, python-format -msgid "Missing Month Ref Variation on Sale Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2090 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2153 -#, python-format -msgid "Missing Payment method on Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1469 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1501 -#, python-format -msgid "Missing Payment method on Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2078 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2141 -#, python-format -msgid "Missing Progressive to modity on Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1457 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1489 -#, python-format -msgid "Missing Progressive to modity on Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1815 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1871 -#, python-format -msgid "Missing Quarterly Ref Variation on Purchase Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1217 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1244 -#, python-format -msgid "Missing Quarterly Ref Variation on Sale Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1806 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1862 -#, python-format -msgid "Missing Sign Variation on Purchase Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1208 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1235 -#, python-format -msgid "Missing Sign Variation on Sale Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2086 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2149 -#, python-format -msgid "Missing Supply method on Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1465 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1497 -#, python-format -msgid "Missing Supply method on Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1659 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1710 -#, python-format -msgid "Missing Vat code for %s in Purchase Section 1" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1797 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1853 -#, python-format -msgid "Missing Vat code for %s in Purchase Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1931 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1992 -#, python-format -msgid "Missing Vat code for %s in Purchase Section 3" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2061 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2124 -#, python-format -msgid "Missing Vat code for %s in Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1071 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1093 -#, python-format -msgid "Missing Vat code for %s in Sale Section 1" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1199 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1226 -#, python-format -msgid "Missing Vat code for %s in Sale Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1322 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1352 -#, python-format -msgid "Missing Vat code for %s in Sale Section 3" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1440 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1472 -#, python-format -msgid "Missing Vat code for %s in Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1802 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1858 -#, python-format -msgid "Missing Year Ref on Purchase Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2066 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2129 -#, python-format -msgid "Missing Year Ref on Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1204 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1231 -#, python-format -msgid "Missing Year Ref on Sale Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1445 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1477 -#, python-format -msgid "Missing Year Ref on Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2070 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2133 -#, python-format -msgid "Missing custom on Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1449 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1481 -#, python-format -msgid "Missing custom on Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2074 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2137 -#, python-format -msgid "Missing protocol on Purchase Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1453 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1485 -#, python-format -msgid "Missing protocol on Sale Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,period_type:0 -msgid "Month" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_month -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_month -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_month -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_month -msgid "Month Ref of Refund" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_name_delegate -msgid "Name delegate" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,special_cases:0 -msgid "None of the above cases" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,content_type:0 -msgid "Normal Period" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:708 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:712 -#, python-format -msgid "Nothing to export" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_number -msgid "Number" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_operation_amount -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_operation_amount -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_operation_amount -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_operation_amount -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_operation_amount -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_operation_amount -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_operation_amount -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_operation_amount -msgid "Operation Amount" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_operation_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_operation_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_operation_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_operation_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_operation_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_operation_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_operation_number -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_operation_number -msgid "Operation Nr" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement.purchase.section3,payment_method:0 -#: selection:account.intrastat.statement.purchase.section4,payment_method:0 -#: selection:account.intrastat.statement.sale.section3,payment_method:0 -#: selection:account.intrastat.statement.sale.section4,payment_method:0 -msgid "Other" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_partner_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_partner_id -msgid "Partner" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1500 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:1531 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2119 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:2185 -#, python-format -msgid "Partner without Country" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_payment_method -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_payment_method -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_payment_method -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_payment_method -msgid "Payment Method" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_period_number -msgid "Period" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:955 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:971 -#, python-format -msgid "Period Not Valid! Range accepted: from 1 to 12" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:959 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:975 -#, python-format -msgid "Period Not Valid! Range accepted: from 1 to 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_period_type -msgid "Period Type" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_sequence -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_sequence -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_sequence -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_sequence -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_sequence -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_sequence -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_sequence -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_sequence -msgid "Progressive" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_progressive_to_modify -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_progressive_to_modify_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_progressive_to_modify -msgid "Progressive to Modify" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_protocol -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_protocol -msgid "Protocol number" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_province_destination_id -msgid "Province Destination" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_province_origin_id -msgid "Province Origin" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement -msgid "Purchase" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_ids -msgid "Purchase - Section 1" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_ids -msgid "Purchase - Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_ids -msgid "Purchase - Section 3" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_ids -msgid "Purchase - Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,period_type:0 -msgid "Quarterly" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_quarterly -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_quarterly -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_quarterly -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_quarterly -msgid "Quarterly Ref of Refund" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Recompute" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement.purchase.section3,supply_method:0 -#: selection:account.intrastat.statement.purchase.section4,supply_method:0 -#: selection:account.intrastat.statement.sale.section3,supply_method:0 -#: selection:account.intrastat.statement.sale.section4,supply_method:0 -msgid "Repeatedly" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement -msgid "Sale" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_ids -msgid "Sale - Section 1" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_ids -msgid "Sale - Section 2" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_ids -msgid "Sale - Section 3" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_ids -msgid "Sale - Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,intrastat_code_type:0 -msgid "Service" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Services Purchase - Section 3" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Services Refund - Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Services Refund Purchase - Section 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.account_intrastat_statement_form_view -msgid "Services Sale - Section 3" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_sign_variation -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_sign_variation -msgid "Sign Variation" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_special_cases -msgid "Special Cases" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_export_file_state -msgid "State" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_statement_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_statement_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_statement_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_statement_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_statement_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_statement_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_statement_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_statement_id -msgid "Statement" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_statement_sequence -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_statement_sequence -msgid "Statement Sequence" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:718 -#: code:addons/l10n_it_intrastat_statement/models/intrastat.py:722 -#, python-format -msgid "Statement without lines" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement,intrastat_type_data:0 -msgid "Statistic" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_statistic_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_statistic_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_statistic_amount_euro -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_statistic_amount_euro -msgid "Statistic Amount Euro" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_date -msgid "Submission Date" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_supply_method -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_supply_method -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_supply_method -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_supply_method -msgid "Supply Method" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section1 -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section2 -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section3 -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_purchase_section4 -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section1 -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section2 -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section3 -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_tree_statement_sale_section4 -msgid "Total" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_transation_nature_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_transation_nature_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_transation_nature_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_transation_nature_id -msgid "Transation Nature" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.statement.purchase.section3,payment_method:0 -#: selection:account.intrastat.statement.purchase.section4,payment_method:0 -#: selection:account.intrastat.statement.sale.section3,payment_method:0 -#: selection:account.intrastat.statement.sale.section4,payment_method:0 -msgid "Transfer" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_transport_code_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_transport_code_id -msgid "Transport" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,help:l10n_it_intrastat_statement.field_account_intrastat_statement_period_number -msgid "Values accepted: - Month : From 1 to 12 - Quarterly: From 1 to 4" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_vat_code -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_vat_code -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section3_vat_code -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_vat_code -msgid "Vat Code Customer" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_vat_code -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_vat_code -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section3_vat_code -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_vat_code -msgid "Vat Code Partner" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_vat_delegate -msgid "Vat delegate" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_vat_taxpayer -msgid "Vat taxpayer" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section1_weight_kg -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section1_weight_kg -msgid "Weight kg" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_fiscalyear -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.view_search_account_intrastat_statement -msgid "Year" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section2_year_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section2_year_id -msgid "Year Ref of Refund" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_purchase_section4_year_id -#: model:ir.model.fields,field_description:l10n_it_intrastat_statement.field_account_intrastat_statement_sale_section4_year_id -msgid "Year Ref of Variation" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.model,name:l10n_it_intrastat_statement.model_account_intrastat_export_file -msgid "account.intrastat.export.file" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.export.file,state:0 -msgid "choose" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: selection:account.intrastat.export.file,state:0 -msgid "get" -msgstr "" - -#. module: l10n_it_intrastat_statement -#: model:ir.ui.view,arch_db:l10n_it_intrastat_statement.wizard_account_intrastat_export_file -msgid "or" -msgstr "" - diff --git a/l10n_it_intrastat_statement/models/__init__.py b/l10n_it_intrastat_statement/models/__init__.py index 8ff16bfdc099..35ccc4a21966 100644 --- a/l10n_it_intrastat_statement/models/__init__.py +++ b/l10n_it_intrastat_statement/models/__init__.py @@ -1,2 +1,7 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import config -from . import intrastat +from . import intrastat_statement_section +from . import intrastat_statement +from . import intrastat_statement_purchase_section +from . import intrastat_statement_sale_section diff --git a/l10n_it_intrastat_statement/models/config.py b/l10n_it_intrastat_statement/models/config.py index 9eb810213553..a172e1d41dda 100644 --- a/l10n_it_intrastat_statement/models/config.py +++ b/l10n_it_intrastat_statement/models/config.py @@ -1,9 +1,12 @@ -from openerp import models, fields +# Copyright 2019 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import models, fields class ResCompany(models.Model): _inherit = 'res.company' intrastat_custom_id = fields.Many2one( - 'account.intrastat.custom', string='Custom' - ) + comodel_name='account.intrastat.custom', + string="Custom") diff --git a/l10n_it_intrastat_statement/models/intrastat.py b/l10n_it_intrastat_statement/models/intrastat.py deleted file mode 100644 index dd428ea50d08..000000000000 --- a/l10n_it_intrastat_statement/models/intrastat.py +++ /dev/null @@ -1,2215 +0,0 @@ -from openerp import models, fields, api, _ -import openerp.addons.decimal_precision as dp -from openerp.exceptions import ValidationError -from datetime import datetime, date, timedelta - - -class AccountIntrastatStatement(models.Model): - _name = 'account.intrastat.statement' - _description = 'Account INTRASTAT - Statement' - - @api.model - def _default_company(self): - company_id = self._context.get( - 'company_id', - self.env.user.company_id.id) - return company_id - - @api.model - def _default_company_vat(self): - company_id = self._context.get( - 'company_id', self.env.user.company_id.id) - if company_id: - vat = ( - self.company_id.partner_id.vat - and self.company_id.partner_id.vat[2:] - or False - ) - return vat - else: - return False - - @api.model - def _default_vat_delegate(self): - company_id = self.env.user.company_id - if company_id: - return company_id.intrastat_delegated_vat - else: - return False - - @api.model - def _default_name_delegate(self): - company_id = self.env.user.company_id - if company_id: - return company_id.intrastat_delegated_name - else: - return False - - @api.model - def _default_custom(self): - company_id = self.env.user.company_id - if company_id: - return company_id.intrastat_custom_id - - def round_min_amount(self, amount, company=None): - if company is None: - company = self.company_id - if amount < company.intrastat_min_amount: - return company.intrastat_min_amount - else: - return amount - - @api.one - @api.depends('sale_section1_ids.amount_euro') - def _compute_amount_sale_s1(self): - self.sale_section1_operation_number = len(self.sale_section1_ids) - self.sale_section1_operation_amount = sum( - line.amount_euro for line in self.sale_section1_ids) - - @api.one - @api.depends('sale_section2_ids.amount_euro') - def _compute_amount_sale_s2(self): - self.sale_section2_operation_number = len(self.sale_section2_ids) - amount_total = 0 - for line in self.sale_section2_ids: - if line.sign_variation == '-': - amount_total -= line.amount_euro - else: - amount_total += line.amount_euro - self.sale_section2_operation_amount = amount_total - - @api.one - @api.depends('sale_section3_ids.amount_euro') - def _compute_amount_sale_s3(self): - self.sale_section3_operation_number = len(self.sale_section3_ids) - self.sale_section3_operation_amount = sum( - line.amount_euro for line in self.sale_section3_ids) - - @api.one - @api.depends('sale_section4_ids.amount_euro') - def _compute_amount_sale_s4(self): - self.sale_section4_operation_number = len(self.sale_section4_ids) - self.sale_section4_operation_amount = sum( - line.amount_euro for line in self.sale_section4_ids) - - @api.one - @api.depends('purchase_section1_ids.amount_euro') - def _compute_amount_purchase_s1(self): - self.purchase_section1_operation_number = len( - self.purchase_section1_ids) - self.purchase_section1_operation_amount = sum( - line.amount_euro for line in self.purchase_section1_ids) - - @api.one - @api.depends('purchase_section2_ids.amount_euro') - def _compute_amount_purchase_s2(self): - self.purchase_section2_operation_number = len( - self.purchase_section2_ids) - amount_total = 0 - for line in self.purchase_section2_ids: - if line.sign_variation == '-': - amount_total -= line.amount_euro - else: - amount_total += line.amount_euro - self.purchase_section2_operation_amount = amount_total - - @api.one - @api.depends('purchase_section3_ids.amount_euro') - def _compute_amount_purchase_s3(self): - self.purchase_section3_operation_number = len( - self.purchase_section3_ids) - self.purchase_section3_operation_amount = sum( - line.amount_euro for line in self.purchase_section3_ids) - - @api.one - @api.depends('purchase_section4_ids.amount_euro') - def _compute_amount_purchase_s4(self): - self.purchase_section4_operation_number = len( - self.purchase_section4_ids) - self.purchase_section4_operation_amount = sum( - line.amount_euro for line in self.purchase_section4_ids) - - @api.model - def _compute_progressive(self): - ''' - Assign univoque progressive to statement - TODO: why not a sequence? - ''' - # From last statement - st = self.search([], order='number', limit=1) - if st: - return st.number + 1 - else: - return 1 - - @api.model - def recompute_sequence_lines(self): - sections = [self.sale_section1_ids, - self.sale_section2_ids, - self.sale_section3_ids, - self.sale_section4_ids, - self.purchase_section1_ids, - self.purchase_section2_ids, - self.purchase_section3_ids, - self.purchase_section4_ids] - for section in sections: - sequence = 1 - for line in section: - line.sequence = sequence - sequence += 1 - - @api.model - def _get_sequence(self): - return self.env['ir.sequence'].get('intrastat.statement.sequence') - - number = fields.Integer( - string='Number', default=_compute_progressive) - date = fields.Date( - string='Submission Date', default=fields.Date.today(), required=True) - company_id = fields.Many2one( - 'res.company', string='Company', default=_default_company, - required=True) - vat_taxpayer = fields.Char( - string='Vat taxpayer', required=True, default=_default_company_vat) - vat_delegate = fields.Char(string='Vat delegate', - default=_default_vat_delegate) - name_delegate = fields.Char(string='Name delegate', - default=_default_name_delegate) - fiscalyear = fields.Integer(string='Year', required=True, default=datetime.now().year) - period_type = fields.Selection([ - ('M', 'Month'), - ('T', 'Quarterly'), - ], 'Period Type', required=True) - period_number = fields.Integer( - string='Period', - help="Values accepted:\ - - Month : From 1 to 12 \ - - Quarterly: From 1 to 4", required=True) - date_start = fields.Date(string='Date Start') - date_stop = fields.Date(string='Date Stop') - content_type = fields.Selection([ - ('0', 'Normal Period'), - ('8', 'Change Period in quarterly: only first month operations'), - ('9', 'Change Period in quarterly: only first and second month \ - operations'), - ], 'Content Type', required=True, default="0") - special_cases = fields.Selection([ - ('7', 'First Statement'), - ('8', 'Change VAT or Close Activity'), - ('9', 'First Statement in Change VAT or Close Activity'), - ('0', 'None of the above cases'), - ], 'Special Cases', required=True, default="0") - custom_id = fields.Many2one( - 'account.intrastat.custom', string='Custom', required=True, - default=_default_custom) - sale = fields.Boolean(string='Sale', default=True) - purchase = fields.Boolean(string='Purchase', default=True) - - intrastat_type_data = fields.Selection([ - ('all', 'All (Fiscal and Statistic)'), - ('fiscal', 'Fiscal'), - ('statistic', 'Statistic'), - ], 'Data Type', required=True, default='all') - intrastat_code_type = fields.Selection([ - ('service', 'Service'), - ('good', 'Good') - ], 'Code Type', required=True, default='good') - - sale_statement_sequence = fields.Integer( - string='Statement Sequence', - default=_get_sequence) - sale_section1_ids = fields.One2many( - 'account.intrastat.statement.sale.section1', - 'statement_id', string='Sale - Section 1') - sale_section1_operation_number = fields.Integer( - string='Operation Nr', store=True, readonly=True, - compute='_compute_amount_sale_s1') - sale_section1_operation_amount = fields.Integer( - string='Operation Amount', store=True, readonly=True, - compute='_compute_amount_sale_s1') - sale_section2_ids = fields.One2many( - 'account.intrastat.statement.sale.section2', - 'statement_id', string='Sale - Section 2') - sale_section2_operation_number = fields.Integer( - string='Operation Nr', store=True, readonly=True, - compute='_compute_amount_sale_s2') - sale_section2_operation_amount = fields.Integer( - string='Operation Amount', store=True, readonly=True, - compute='_compute_amount_sale_s2') - sale_section3_ids = fields.One2many( - 'account.intrastat.statement.sale.section3', - 'statement_id', string='Sale - Section 3') - sale_section3_operation_number = fields.Integer( - string='Operation Nr', store=True, readonly=True, - compute='_compute_amount_sale_s3') - sale_section3_operation_amount = fields.Integer( - string='Operation Amount', store=True, readonly=True, - compute='_compute_amount_sale_s3') - sale_section4_ids = fields.One2many( - 'account.intrastat.statement.sale.section4', - 'statement_id', string='Sale - Section 4') - sale_section4_operation_number = fields.Integer( - string='Operation Nr', store=True, readonly=True, - compute='_compute_amount_sale_s4') - sale_section4_operation_amount = fields.Integer( - string='Operation Amount', store=True, readonly=True, - compute='_compute_amount_sale_s4') - - purchase_statement_sequence = fields.Integer( - string='Statement Sequence', - default=_get_sequence) - purchase_section1_ids = fields.One2many( - 'account.intrastat.statement.purchase.section1', - 'statement_id', string='Purchase - Section 1') - purchase_section1_operation_number = fields.Integer( - string='Operation Nr', store=True, readonly=True, - compute='_compute_amount_purchase_s1') - purchase_section1_operation_amount = fields.Integer( - string='Operation Amount', store=True, readonly=True, - compute='_compute_amount_purchase_s1') - purchase_section2_ids = fields.One2many( - 'account.intrastat.statement.purchase.section2', - 'statement_id', string='Purchase - Section 2') - purchase_section2_operation_number = fields.Integer( - string='Operation Nr', store=True, readonly=True, - compute='_compute_amount_purchase_s2') - purchase_section2_operation_amount = fields.Integer( - string='Operation Amount', store=True, readonly=True, - compute='_compute_amount_purchase_s2') - purchase_section3_ids = fields.One2many( - 'account.intrastat.statement.purchase.section3', - 'statement_id', string='Purchase - Section 3') - purchase_section3_operation_number = fields.Integer( - string='Operation Nr', store=True, readonly=True, - compute='_compute_amount_purchase_s3') - purchase_section3_operation_amount = fields.Integer( - string='Operation Amount', store=True, readonly=True, - compute='_compute_amount_purchase_s3') - purchase_section4_ids = fields.One2many( - 'account.intrastat.statement.purchase.section4', - 'statement_id', string='Purchase - Section 4') - purchase_section4_operation_number = fields.Integer( - string='Operation Nr', store=True, readonly=True, - compute='_compute_amount_purchase_s4') - purchase_section4_operation_amount = fields.Integer( - string='Operation Amount', store=True, readonly=True, - compute='_compute_amount_purchase_s4') - - @api.model - def create(self, vals): - statement = super(AccountIntrastatStatement, self).create(vals) - statement._normalize_statement() - return statement - - @api.multi - def write(self, vals): - res = super(AccountIntrastatStatement, self).write(vals) - self._normalize_statement() - self.recompute_sequence_lines() - return res - - @api.onchange('period_type', 'period_number') - def onchange_period(self): - for statement in self: - if ( - not statement.fiscalyear - or not statement.period_type - or not statement.period_number - ): - continue - date_start_year = datetime.strptime( - '{}-01-01'.format(statement.fiscalyear), '%Y-%m-%d') - if statement.period_type == 'M': - period_date_start = datetime(date_start_year.year, - statement.period_number, - 1) - # Last date of month - if not statement.period_number == 12: - period_date_work = datetime(date_start_year.year, - statement.period_number + 1, - 1) - period_date_stop = period_date_work - timedelta(days=1) - else: - period_date_stop = datetime(date_start_year.year, 12, 31) - else: - if statement.period_number > 4: - statement.period_number = 1 - if statement.period_number == 1: - period_date_start = datetime(date_start_year.year, 1, 1) - period_date_stop = datetime(date_start_year.year, 3, 31) - elif statement.period_number == 2: - period_date_start = datetime(date_start_year.year, 4, 1) - period_date_stop = datetime(date_start_year.year, 6, 30) - elif statement.period_number == 3: - period_date_start = datetime(date_start_year.year, 7, 1) - period_date_stop = datetime(date_start_year.year, 9, 30) - elif statement.period_number == 4: - period_date_start = datetime(date_start_year.year, 10, 1) - period_date_stop = datetime(date_start_year.year, 12, 31) - statement.date_start = period_date_start - statement.date_stop = period_date_stop - - @api.model - def _get_period_ref(self, invoice_line): - - res = { - 'year_id': False, - 'quarterly': False, - 'month': False - } - - res.update({'year_id': self.fiscalyear}) - - # Monht/quaterly - if self.period_type == 'T': - res.update({'quarterly': self.preiod_number}) - else: - res.update({'month': self.preiod_number}) - - return res - - @api.one - def _normalize_statement(self): - # Unlink lines sale/purchase sections - if not self.sale: - self.with_context(unlink_section='sale')._unlink_sections() - if not self.purchase: - self.with_context(unlink_section='purchase')._unlink_sections() - return True - - @api.one - def _unlink_sections(self): - # Unlink lines sale/purchase sections - section_to_unlink = self.env.context.get('unlink_section', 'all') - # sale - if section_to_unlink in ['all', 'sale']: - for line in self.sale_section1_ids: - line.unlink() - for line in self.sale_section2_ids: - line.unlink() - for line in self.sale_section3_ids: - line.unlink() - for line in self.sale_section4_ids: - line.unlink() - # purchase - if section_to_unlink in ['all', 'purchase']: - for line in self.purchase_section1_ids: - line.unlink() - for line in self.purchase_section2_ids: - line.unlink() - for line in self.purchase_section3_ids: - line.unlink() - for line in self.purchase_section4_ids: - line.unlink() - return True - - @api.model - def _get_progressive_interchange(self): - prg = 0 - domain = [('date', '=', self.date)] - for st in self.search(domain): - prg += 1 - if st.id == self.id: - break - return prg - - @api.model - def _get_file_name(self): - """Format UA code + %m + %d""" - - # Calcolo progressivo interchange - prg = self._get_progressive_interchange() - file_name = '' - date_obj = datetime.strptime(self.date, '%Y-%m-%d') - if self.env.context.get('export_filename'): - file_name = self.env.context.get('export_filename') - elif self.company_id.intrastat_export_file_name: - file_name = self.company_id.intrastat_export_file_name - else: - file_name = '%s%s%s.%s%s' % ( - self.company_id.intrastat_ua_code or '', - '{:2s}'.format(str(date_obj.month).zfill(2)), - '{:2s}'.format(str(date_obj.day).zfill(2)), - 'I', # doc intrastat - '{:2s}'.format(str(prg).zfill(2)) - ) - return file_name - - @api.model - def _prepare_export_head(self): - rcd = '' - intrastat_ua_code = '' - # Codice utente abilitato (mittente) - if self.company_id.intrastat_ua_code: - intrastat_ua_code = self.company_id.intrastat_ua_code - # if not self.company_id.intrastat_ua_code: - # raise ValidationError( - # _('Missing Intrasta UA code : see company configuration')) - rcd += '{:4s}'.format(intrastat_ua_code) - # Riservato a SDA - rcd += '{:12s}'.format("") - # Nome del flusso - rcd += '{:12s}'.format(self._get_file_name()) - # Riservato a SDA - rcd += '{:12s}'.format("") - # Codice sezione doganale presso la quale si effettua l'operazione - rcd += '{:6s}'.format(self.custom_id.code or '') - # Riservato a SDA - rcd += '{:4s}'.format("") - # Codice fiscale o numero partita IVA o codice spedizioniere del - # richiedente (utente autorizzato) - rcd += '{:16s}'.format(self.vat_taxpayer.replace(' ', '')) - # Progressivo sede utente autorizzato - prg = self._get_progressive_interchange() - rcd += '{:3s}'.format(str(prg).zfill(3)) - # Riservato a SDA - rcd += '{:1s}'.format("") - # Numero di record presenti nel flusso - tot_lines = ( - self.sale_section1_operation_number + - self.sale_section2_operation_number + - self.sale_section3_operation_number + - self.sale_section4_operation_number + - self.purchase_section1_operation_number + - self.purchase_section2_operation_number + - self.purchase_section3_operation_number + - self.purchase_section4_operation_number + - 1 - ) # this rec - # Add frontispiece sale - if ( - self.sale_section1_operation_number - or self.sale_section2_operation_number - or self.sale_section3_operation_number - or self.sale_section4_operation_number - ): - tot_lines += 1 - # Add frontispiece purchase - if ( - self.purchase_section1_operation_number - or self.purchase_section2_operation_number - or self.purchase_section3_operation_number - or self.purchase_section4_operation_number - ): - tot_lines += 1 - rcd += '{:5s}'.format(str(tot_lines).zfill(5)) - # ... new line - rcd += "\r" - rcd += "\n" - - return rcd - - @api.model - def _prepare_export_prefix(self, type='sale'): - """Type: C=Sale A=Purchase""" - prefix = '' - # Campo fisso: “EUROX” - prefix += 'EUROX' - # Partita IVA del presentatore o delegato - if self.vat_delegate: - prefix += '{:11s}'.format(self.vat_delegate) - else: - prefix += '{:11s}'.format(self.vat_taxpayer) - # Numero progressivo dell’elenco - if type == 'sale': - prefix += '{:6s}'.format( - str(self.sale_statement_sequence).zfill(6)) - else: - prefix += '{:6s}'.format( - str(self.purchase_statement_sequence).zfill(6)) - return prefix - - @api.model - def _format_negative_number_frontispiece(self, number): - if number >= 0: - return str(number) - # interchange last values with p for 0, q for 1 ...and y for 9 - interchange = ['p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y'] - last_char = str(number)[-1:] - number = list(str(number * -1)) - # change last number - number[len(number) - 1] = interchange[int(last_char)] - return ''.join(number) - - @api.model - def _prepare_export_frontispiece(self, type): - rcd = self._prepare_export_prefix(type) - rcd += '{:1s}'.format("0") - rcd += '{:5s}'.format("".zfill(5)) - # Tipo riepilogo: A = acquisti C = cessioni - if type == 'purchase': - rcd += '{:1s}'.format("A") - else: - rcd += '{:1s}'.format("C") - # Anno - day = self.env.user.company_id.fiscalyear_last_day - month = self.env.user.company_id.fiscalyear_last_month - date_start_year = date(self.fiscalyear, month, day) - - rcd += '{:2s}'.format(str(date_start_year.year)[2:]) - # Periodicità - rcd += '{:1s}'.format(self.period_type) - # Periodo - rcd += '{:2s}'.format(str(self.period_number).zfill(2)) - # Partita IVA del contribuentè - rcd += '{:11s}'.format(self.vat_taxpayer) - # Contenuto degli elenchì - rcd += '{:1s}'.format(self.content_type) - # Casi particolari riferiti al soggetto obbligatò - rcd += '{:1s}'.format(self.special_cases) - # Partita IVA del soggetto delegato - rcd += '{:11s}'.format(self.vat_delegate or "".zfill(11)) - # Numero e importo dettagli della sezione 1 - if type == "purchase": - rcd += '{:5s}'.format( - str(self.purchase_section1_operation_number).zfill(5)) - rcd += '{:13s}'.format( - str(self.purchase_section1_operation_amount).zfill(13)) - else: - rcd += '{:5s}'.format( - str(self.sale_section1_operation_number).zfill(5)) - rcd += '{:13s}'.format( - str(self.sale_section1_operation_amount).zfill(13)) - # Numero dettagli della sezione 2 - if type == "purchase": - rcd += '{:5s}'.format( - str(self.purchase_section2_operation_number).zfill(5)) - amount_format = self._format_negative_number_frontispiece( - self.purchase_section2_operation_amount) - rcd += '{:13s}'.format( - str(amount_format).zfill(13)) - else: - rcd += '{:5s}'.format( - str(self.sale_section2_operation_number).zfill(5)) - amount_format = self._format_negative_number_frontispiece( - self.sale_section2_operation_amount) - rcd += '{:13s}'.format( - str(amount_format).zfill(13)) - # Numero dettagli della sezione 3 - if type == "purchase": - rcd += '{:5s}'.format( - str(self.purchase_section3_operation_number).zfill(5)) - rcd += '{:13s}'.format( - str(self.purchase_section3_operation_amount).zfill(13)) - else: - rcd += '{:5s}'.format( - str(self.sale_section3_operation_number).zfill(5)) - rcd += '{:13s}'.format( - str(self.sale_section3_operation_amount).zfill(13)) - # Numero dettagli della sezione 4 - if type == "purchase": - rcd += '{:5s}'.format( - str(self.purchase_section4_operation_number).zfill(5)) - rcd += '{:13s}'.format( - str(self.purchase_section4_operation_amount).zfill(13)) - else: - rcd += '{:5s}'.format( - str(self.sale_section4_operation_number).zfill(5)) - rcd += '{:13s}'.format( - str(self.sale_section4_operation_amount).zfill(13)) - # ... new line - rcd += "\r" - rcd += "\n" - return rcd - - @api.model - def generate_file_export(self): - file_content = '' - # Head - if not self.env.context.get('export_without_head'): - rec_head = self._prepare_export_head() - file_content += rec_head - content_sale = self.env.context.get('sale') - content_purchase = self.env.context.get('purchase') - # Purchase - if ( - self.purchase_section1_operation_number or - self.purchase_section2_operation_number or - self.purchase_section3_operation_number or - self.purchase_section4_operation_number - ) and content_purchase: - # frontispiece - rec_frontispiece = self._prepare_export_frontispiece("purchase") - file_content += rec_frontispiece - # Section 1 - for line in self.purchase_section1_ids: - rcd = self._prepare_export_prefix("purchase") - rcd += '{:1s}'.format("1") - rcd += '{:5s}'.format(str(line.sequence).zfill(5)) - rcd += line._prepare_export_line() - file_content += rcd - # Section 2 - for line in self.purchase_section2_ids: - rcd = self._prepare_export_prefix("purchase") - rcd += '{:1s}'.format("2") - rcd += '{:5s}'.format(str(line.sequence).zfill(5)) - rcd += line._prepare_export_line() - file_content += rcd - # Section 3 - for line in self.purchase_section3_ids: - rcd = self._prepare_export_prefix("purchase") - rcd += '{:1s}'.format("3") - rcd += '{:5s}'.format(str(line.sequence).zfill(5)) - rcd += line._prepare_export_line() - file_content += rcd - # Section 4 - for line in self.purchase_section4_ids: - rcd = self._prepare_export_prefix("purchase") - rcd += '{:1s}'.format("4") - rcd += '{:5s}'.format(str(line.sequence).zfill(5)) - rcd += line._prepare_export_line() - file_content += rcd - - # Sale - if ( - (self.sale_section1_operation_number - or self.sale_section2_operation_number - or self.sale_section3_operation_number - or self.sale_section4_operation_number) - and content_sale): - # frontispiece - rec_frontispiece = self._prepare_export_frontispiece("sale") - file_content += rec_frontispiece - # Section 1 - for line in self.sale_section1_ids: - rcd = self._prepare_export_prefix("sale") - rcd += '{:1s}'.format("1") - rcd += '{:5s}'.format(str(line.sequence).zfill(5)) - rcd += line._prepare_export_line() - file_content += rcd - # Section 2 - for line in self.sale_section2_ids: - rcd = self._prepare_export_prefix("sale") - rcd += '{:1s}'.format("2") - rcd += '{:5s}'.format(str(line.sequence).zfill(5)) - rcd += line._prepare_export_line() - file_content += rcd - # Section 3 - for line in self.sale_section3_ids: - rcd = self._prepare_export_prefix("sale") - rcd += '{:1s}'.format("3") - rcd += '{:5s}'.format(str(line.sequence).zfill(5)) - rcd += line._prepare_export_line() - file_content += rcd - # Section 4 - for line in self.sale_section4_ids: - rcd = self._prepare_export_prefix("sale") - rcd += '{:1s}'.format("4") - rcd += '{:5s}'.format(str(line.sequence).zfill(5)) - rcd += line._prepare_export_line() - file_content += rcd - - # Validtation data - if not file_content: - raise ValidationError( - _('Nothing to export')) - if not self.sale_section1_ids \ - and not self.sale_section2_ids \ - and not self.sale_section3_ids \ - and not self.sale_section4_ids \ - and not self.purchase_section1_ids \ - and not self.purchase_section2_ids \ - and not self.purchase_section3_ids \ - and not self.purchase_section4_ids: - raise ValidationError( - _('Statement without lines')) - - return file_content - - @api.one - def compute_statement(self): - # Unlink existing lines - self._unlink_sections() - # Setting period - period_date_start = None - period_date_stop = None - day = self.env.user.company_id.fiscalyear_last_day - month = self.env.user.company_id.fiscalyear_last_month - date_start_year = date(self.fiscalyear, month, day) - if self.period_type == 'M': - period_date_start = datetime(date_start_year.year, - self.period_number, - 1) - # Last date of month - if not self.period_number == 12: - period_date_work = datetime(date_start_year.year, - self.period_number + 1, - 1) - period_date_stop = period_date_work - timedelta(days=1) - else: - period_date_stop = datetime(date_start_year.year, 12, 31) - - else: - if self.period_number == 1: - period_date_start = datetime(date_start_year.year, 1, 1) - period_date_stop = datetime(date_start_year.year, 3, 31) - elif self.period_number == 2: - period_date_start = datetime(date_start_year.year, 4, 1) - period_date_stop = datetime(date_start_year.year, 6, 30) - elif self.period_number == 3: - period_date_start = datetime(date_start_year.year, 7, 1) - period_date_stop = datetime(date_start_year.year, 9, 30) - elif self.period_number == 4: - period_date_start = datetime(date_start_year.year, 10, 1) - period_date_stop = datetime(date_start_year.year, 12, 31) - - # Search intrastat lines - domain = [('move_id.date', '>=', period_date_start), - ('move_id.date', '<=', period_date_stop), - ('intrastat', '=', True)] - # ... sale - purchase - inv_type = [] - if self.sale: - inv_type += ['out_invoice', 'out_refund'] - if self.purchase: - inv_type += ['in_invoice', 'in_refund'] - domain.append(('type', 'in', inv_type)) - - statement_lines_sale_s1 = [] - statement_lines_sale_s2 = [] - statement_lines_sale_s3 = [] - statement_lines_sale_s4 = [] - statement_lines_purchase_s1 = [] - statement_lines_purchase_s2 = [] - statement_lines_purchase_s3 = [] - statement_lines_purchase_s4 = [] - sale_section1 = 'account.intrastat.statement.sale.section1' - sale_section2 = 'account.intrastat.statement.sale.section2' - sale_section3 = 'account.intrastat.statement.sale.section3' - sale_section4 = 'account.intrastat.statement.sale.section4' - purch_section1 = 'account.intrastat.statement.purchase.section1' - purch_section2 = 'account.intrastat.statement.purchase.section2' - purch_section3 = 'account.intrastat.statement.purchase.section3' - purch_section4 = 'account.intrastat.statement.purchase.section4' - for inv in self.env['account.invoice'].search(domain): - for inv_intra_line in inv.intrastat_line_ids: - # Sale - Section 1 - if inv_intra_line.statement_section == 'sale_s1': - - st_line = self.env[sale_section1]._prepare_statement_line( - inv_intra_line) - if st_line: - if len(statement_lines_sale_s1): - st_line['sequence'] = \ - len(statement_lines_sale_s1) + 1 - else: - st_line['sequence'] = 1 - statement_lines_sale_s1.append((0, 0, st_line)) - # Sale - Section 2 - elif inv_intra_line.statement_section == 'sale_s2': - st_line = self.env[sale_section2]._prepare_statement_line( - inv_intra_line, self) - if st_line: - if len(statement_lines_sale_s2): - st_line['sequence'] = \ - len(statement_lines_sale_s2) + 1 - else: - st_line['sequence'] = 1 - statement_lines_sale_s2.append((0, 0, st_line)) - # Sale - Section 3 - elif inv_intra_line.statement_section == 'sale_s3': - st_line = self.env[sale_section3]._prepare_statement_line( - inv_intra_line) - if st_line: - if len(statement_lines_sale_s3): - st_line['sequence'] = \ - len(statement_lines_sale_s3) + 1 - else: - st_line['sequence'] = 1 - statement_lines_sale_s3.append((0, 0, st_line)) - # Sale - Section 4 - elif inv_intra_line.statement_section == 'sale_s4': - st_line = self.env[sale_section4]._prepare_statement_line( - inv_intra_line, self) - if st_line: - if len(statement_lines_sale_s4): - st_line['sequence'] = \ - len(statement_lines_sale_s4) + 1 - else: - st_line['sequence'] = 1 - statement_lines_sale_s4.append((0, 0, st_line)) - # Purchase - Section 1 - elif inv_intra_line.statement_section == 'purchase_s1': - st_line = self.env[purch_section1]._prepare_statement_line( - inv_intra_line) - if st_line: - if len(statement_lines_purchase_s1): - st_line['sequence'] = \ - len(statement_lines_purchase_s1) + 1 - else: - st_line['sequence'] = 1 - statement_lines_purchase_s1.append((0, 0, st_line)) - # Purchase - Section 2 - elif inv_intra_line.statement_section == 'purchase_s2': - st_line = self.env[purch_section2]._prepare_statement_line( - inv_intra_line, self) - if st_line: - if len(statement_lines_purchase_s2): - st_line['sequence'] = \ - len(statement_lines_purchase_s2) + 1 - else: - st_line['sequence'] = 1 - statement_lines_purchase_s2.append((0, 0, st_line)) - # Purchase - Section 3 - elif inv_intra_line.statement_section == 'purchase_s3': - st_line = self.env[purch_section3]._prepare_statement_line( - inv_intra_line) - if st_line: - if len(statement_lines_purchase_s3): - st_line['sequence'] = \ - len(statement_lines_purchase_s3) + 1 - else: - st_line['sequence'] = 1 - statement_lines_purchase_s3.append((0, 0, st_line)) - # Purchase - Section 4 - elif inv_intra_line.statement_section == 'purchase_s4': - st_line = self.env[purch_section4]._prepare_statement_line( - inv_intra_line, self) - if st_line: - if len(statement_lines_purchase_s4): - st_line['sequence'] = \ - len(statement_lines_purchase_s4) + 1 - else: - st_line['sequence'] = 1 - statement_lines_purchase_s4.append((0, 0, st_line)) - - self.write({ - 'sale_section1_ids': statement_lines_sale_s1, - 'sale_section2_ids': statement_lines_sale_s2, - 'sale_section3_ids': statement_lines_sale_s3, - 'sale_section4_ids': statement_lines_sale_s4, - 'purchase_section1_ids': statement_lines_purchase_s1, - 'purchase_section2_ids': statement_lines_purchase_s2, - 'purchase_section3_ids': statement_lines_purchase_s3, - 'purchase_section4_ids': statement_lines_purchase_s4, - }) - - # Group refund to sale lines if they have the same period of ref - for line in self.sale_section2_ids: - to_ref_obj = self.env['account.intrastat.statement.sale.section1'] - self.refund_line(line, to_ref_obj) - for line in self.sale_section4_ids: - to_ref_obj = self.env['account.intrastat.statement.sale.section3'] - self.refund_line(line, to_ref_obj) - for line in self.purchase_section2_ids: - to_ref_obj = \ - self.env['account.intrastat.statement.purchase.section1'] - self.refund_line(line, to_ref_obj) - for line in self.purchase_section4_ids: - to_ref_obj = \ - self.env['account.intrastat.statement.purchase.section3'] - self.refund_line(line, to_ref_obj) - - return True - - @api.model - def refund_line(self, line, to_ref_obj): - """Refund line into sale if period ref is the same of the statement""" - to_refund = False - if line.year_id == self.fiscalyear: - if ( - self.period_type == 'M' - and line.month == self.period_number - ): - to_refund = True - - if ( - self.period_type == 'T' - and line.quarterly == self.period_number - ): - to_refund = True - # Execute refund - if to_refund: - domain = [('statement_id', '=', self.id), - ('partner_id', '=', line.partner_id.id), - ('intrastat_code_id', '=', line.intrastat_code_id.id), - ('amount_euro', '>=', line.amount_euro)] - line_to_refund = to_ref_obj.search(domain, limit=1) - if line_to_refund: - if line_to_refund.amount_euro < line.amount_euro: - raise ValidationError( - _('Invoice and refund in the same period with' - ' refund > invoice for partner %s') - % line.partner_id.name) - val = { - 'amount_euro': ( - line_to_refund.amount_euro - line.amount_euro) - } - if 'statistic_amount_euro' in line_to_refund: - val['statistic_amount_euro'] = ( - line_to_refund.statistic_amount_euro - - line.statistic_amount_euro - ) - if 'amount_currency' in line_to_refund: - val['amount_currency'] = ( - line_to_refund.amount_currency - - line.amount_currency) - - line_to_refund.write(val) - line.unlink() - - @api.onchange('company_id') - def change_company_id(self): - self.vat_taxpayer = (self.company_id.partner_id.vat - and self.company_id.partner_id.vat[2:] or False) - self.vat_delegate = self.company_id.intrastat_delegated_vat or False - - @api.onchange('period_number') - @api.constrains('period_type', 'period_number') - def change_period_number(self): - """Interval Control""" - if self.period_type == 'M' \ - and (self.period_number < 1 or self.period_number > 12): - raise ValidationError( - _('Period Not Valid! Range accepted: from 1 to 12')) - if self.period_type == 'T' \ - and (self.period_number < 1 or self.period_number > 4): - raise ValidationError( - _('Period Not Valid! Range accepted: from 1 to 4')) - - -class AccountIntrastatStatementSaleSection1(models.Model): - _name = 'account.intrastat.statement.sale.section1' - _description = 'Account INTRASTAT - Statement - Sale Section 1' - - statement_id = fields.Many2one( - 'account.intrastat.statement', string='Statement', - readonly=True, ondelete="cascade") - sequence = fields.Integer(string='Progressive') - partner_id = fields.Many2one('res.partner', string='Partner') - country_partner_id = fields.Many2one('res.country', - string='Country Customer') - vat_code = fields.Char(string='Vat Code Customer') - amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) - transation_nature_id = fields.Many2one( - 'account.intrastat.transation.nature', string='Transation Nature') - intrastat_code_id = fields.Many2one('report.intrastat.code', - string='Intrastat Code Good') - weight_kg = fields.Integer(string='Weight kg') - additional_units = fields.Integer(string='Additional Units') - additional_units_required = fields.Boolean( - string='Additional Units Required', store=True, - related='intrastat_code_id.additional_unit_required') - additional_units_uom = fields.Char( - string='Additional Units UOM', - readonly=True, - related="intrastat_code_id.additional_unit_uom_id.name") - statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', - digits=dp.get_precision('Account')) - delivery_code_id = fields.Many2one('stock.incoterms', - string='Delivery') - transport_code_id = fields.Many2one('account.intrastat.transport', - string='Transport') - country_destination_id = fields.Many2one('res.country', - string='Country Destination') - province_origin_id = fields.Many2one('res.country.state', - string='Province Origin') - invoice_id = fields.Many2one('account.invoice', - string='Invoice', readonly=True) - - @api.onchange('partner_id') - def change_partner_id(self): - if self.partner_id: - data = self.env['account.invoice.intrastat']._get_partner_data( - self.partner_id) - self.country_partner_id = data['country_partner_id'] - self.vat_code = data['vat_code'] - self.country_destination_id = data['country_destination_id'] - - @api.onchange('weight_kg') - def change_weight_kg(self): - if self.statement_id.company_id.intrastat_additional_unit_from == \ - 'weight': - self.additional_units = self.weight_kg - - @api.model - def _prepare_statement_line(self, inv_intra_line): - company_id = self._context.get( - 'company_id', self.env.user.company_id) - res = { - 'invoice_id': inv_intra_line.invoice_id.id or False, - 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': - inv_intra_line.country_partner_id.id or False, - 'vat_code': - (inv_intra_line.invoice_id.partner_id.vat - and inv_intra_line.invoice_id.partner_id.vat[2:] - or False), - 'amount_euro': self.statement_id.round_min_amount(round( - inv_intra_line.amount_euro) or 0, company_id), - 'transation_nature_id': - (inv_intra_line.transation_nature_id - and inv_intra_line.transation_nature_id.id) or - (company_id.intrastat_sale_transation_nature_id - and company_id.intrastat_sale_transation_nature_id.id) - or False, - 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, - 'weight_kg': round(inv_intra_line.weight_kg) or 0, - 'additional_units': - inv_intra_line.additional_units and - round(inv_intra_line.additional_units) or 0, - 'statistic_amount_euro': - self.statement_id.round_min_amount( - round(inv_intra_line.statistic_amount_euro) or - (company_id.intrastat_sale_statistic_amount and - round(inv_intra_line.amount_euro)) or 0, company_id), - 'delivery_code_id': - (inv_intra_line.delivery_code_id - and inv_intra_line.delivery_code_id.id) - or - (company_id.intrastat_sale_delivery_code_id - and company_id.intrastat_sale_delivery_code_id.id) - or False, - 'transport_code_id': - (inv_intra_line.transport_code_id - and inv_intra_line.transport_code_id.id) or - (company_id.intrastat_sale_transport_code_id - and company_id.intrastat_sale_transport_code_id.id) or False, - 'country_destination_id': - (inv_intra_line.country_destination_id - and inv_intra_line.country_destination_id.id) or False, - 'province_origin_id': - (inv_intra_line.province_origin_id - and inv_intra_line.province_origin_id.id) or - (company_id.intrastat_sale_province_origin_id and - company_id.intrastat_sale_province_origin_id.id) or False, - } - return res - - @api.model - def _prepare_export_line(self): - # Controls - # .. Vat code - if not self.vat_code: - raise ValidationError( - _('Missing Vat code for %s in Sale Section 1') - % (self.partner_id.name,)) - - rcd = '' - # Codice dello Stato membro dell’acquirente - self.country_partner_id.with_context( - control_ISO_code=True).intrastat_validate() - rcd += '{:2s}'.format(self.country_partner_id.code or '') - #  Codice IVA dell’acquirente - rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - # Ammontare delle operazioni in euro - rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) - # Codice della natura della transazione - rcd += '{:1s}'.format( - self.transation_nature_id and self.transation_nature_id.code or '') - # Codice della nomenclatura combinata della merce - rcd += '{:8s}'.format( - self.intrastat_code_id and self.intrastat_code_id.name or '') - #  Massa netta in chilogrammi - rcd += '{:10s}'.format(str(self.weight_kg).zfill(10)) - #  Quantità espressa nell'unità di misura supplementare - rcd += '{:10s}'.format(str(self.additional_units).zfill(10)) - #  Valore statistico in euro - rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) - #  Codice delle condizioni di consegna - rcd += '{:1s}'.format( - self.delivery_code_id and self.delivery_code_id.code[:1] or '') - #  Codice del modo di trasporto - rcd += '{:1s}'.format( - self.transport_code_id and str(self.transport_code_id.code) or '') - #  Codice del paese di destinazione - rcd += '{:2s}'.format( - self.country_destination_id and - self.country_destination_id.code - or '') - #  Codice del paese di origine della merce - rcd += '{:2s}'.format( - self.province_origin_id and self.province_origin_id.code or '') - # ... new line - rcd += "\r" # - rcd += "\n" # - - return rcd - - -class AccountIntrastatStatementSaleSection2(models.Model): - _name = 'account.intrastat.statement.sale.section2' - _description = 'Account INTRASTAT - Statement - Sale Section 2' - - statement_id = fields.Many2one('account.intrastat.statement', - string='Statement', - readonly=True, - ondelete="cascade") - sequence = fields.Integer(string='Progressive') - month = fields.Integer(string='Month Ref of Refund') - quarterly = fields.Integer(string='Quarterly Ref of Refund') - year_id = fields.Integer(string='Year Ref of Refund') - partner_id = fields.Many2one('res.partner', string='Partner') - country_partner_id = fields.Many2one('res.country', - string='Country Partner') - vat_code = fields.Char(string='Vat Code Customer') - sign_variation = fields.Selection([ - ('+', '+'), - ('-', '-'), - ], 'Sign Variation') - amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) - transation_nature_id = fields.Many2one( - 'account.intrastat.transation.nature', string='Transation Nature') - intrastat_code_id = fields.Many2one('report.intrastat.code', - string='Intrastat Code Good') - statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', - digits=dp.get_precision('Account')) - invoice_id = fields.Many2one('account.invoice', string='Invoice', - readonly=True) - - @api.onchange('partner_id') - def change_partner_id(self): - if self.partner_id: - data = self.env['account.invoice.intrastat']._get_partner_data( - self.partner_id) - self.country_partner_id = data['country_partner_id'] - self.vat_code = data['vat_code'] - - @api.model - def _prepare_statement_line(self, inv_intra_line, statement_id): - company_id = self._context.get( - 'company_id', self.env.user.company_id) - # sign_variation - sign_variation = False - if inv_intra_line.invoice_id.type in ['out_refund']: - sign_variation = '-' - # Period Ref - ref_period = statement_id._get_period_ref(inv_intra_line.invoice_id) - res = { - 'invoice_id': inv_intra_line.invoice_id.id or False, - 'month': ref_period and ref_period['month'] or False, - 'quarterly': ref_period and ref_period['quarterly'] or False, - 'year_id': ref_period and ref_period['year_id'] or False, - 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': - inv_intra_line.country_partner_id.id or False, - 'vat_code': - (inv_intra_line.invoice_id.partner_id.vat - and inv_intra_line.invoice_id.partner_id.vat[2:] - or False), - 'amount_euro': self.statement_id.round_min_amount( - round(inv_intra_line.amount_euro) or 0, company_id), - 'sign_variation': sign_variation, - 'transation_nature_id': - (inv_intra_line.transation_nature_id and - inv_intra_line.transation_nature_id.id) - or - (company_id.intrastat_sale_transation_nature_id and - company_id.intrastat_sale_transation_nature_id.id) or - False, - 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, - 'statistic_amount_euro': - self.statement_id.round_min_amount( - round(inv_intra_line.statistic_amount_euro) or - ( - company_id.intrastat_sale_statistic_amount and - round(inv_intra_line.amount_euro)) or 0, - company_id), - } - return res - - @api.model - def _prepare_export_line(self): - # Controls - # .. Vat code - if not self.vat_code: - raise ValidationError( - _('Missing Vat code for %s in Sale Section 2') - % (self.partner_id.name,)) - # .. year ref - if not self.year_id: - raise ValidationError( - _('Missing Year Ref on Sale Section 2')) - # .. Sign variation - if not self.sign_variation: - raise ValidationError( - _('Missing Sign Variation on Sale Section 2')) - # ...Period ref - if self.statement_id.period_type == 'M': - if not self.month: - raise ValidationError( - _('Missing Month Ref Variation on Sale Section 2')) - else: - if not self.quarterly: - raise ValidationError( - _('Missing Quarterly Ref Variation on Sale Section 2')) - - rcd = '' - # Mese di riferimento del riepilogo da rettificare - rcd += '{:2s}'.format(str(self.month).zfill(2)) - #  Trimestre di riferimento del riepilogo da rettificare - rcd += '{:1s}'.format(str(self.quarterly).zfill(1)) - # Anno periodo di ref da modificare - start_year = False - if self.year_id: - start_year = self.year_id - - rcd += '{:2s}'.format( - start_year and str(start_year)[2:] or '') - # Codice dello Stato membro dell’acquirente - rcd += '{:2s}'.format(self.country_partner_id.code or '') - #  Codice IVA dell’acquirente - rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - #  Segno da attribuire alle variazioni da X(1) apportare - rcd += '{:1s}'.format(self.sign_variation or '') - # Ammontare delle operazioni in euro - rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) - # Codice della natura della transazione - rcd += '{:1s}'.format( - self.transation_nature_id and self.transation_nature_id.code or '') - # Codice della nomenclatura combinata della merce - rcd += '{:8s}'.format( - self.intrastat_code_id and self.intrastat_code_id.name or '') - #  Valore statistico in euro - rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) - # ... new line - rcd += "\r" # - rcd += "\n" # - - return rcd - - -class AccountIntrastatStatementSaleSection3(models.Model): - _name = 'account.intrastat.statement.sale.section3' - _description = 'Account INTRASTAT - Statement - Sale Section 3' - - statement_id = fields.Many2one('account.intrastat.statement', - string='Statement', - readonly=True, - ondelete="cascade") - sequence = fields.Integer(string='Progressive') - partner_id = fields.Many2one('res.partner', string='Partner') - country_partner_id = fields.Many2one('res.country', - string='Country Partner') - vat_code = fields.Char(string='Vat Code Customer') - amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) - invoice_number = fields.Char(string='Invoice Number') - invoice_date = fields.Date(string='Invoice Date') - intrastat_code_id = fields.Many2one('report.intrastat.code', - string='Intrastat Code Service') - supply_method = fields.Selection([ - ('I', 'Instant'), - ('R', 'Repeatedly'), - ], 'Supply Method') - payment_method = fields.Selection([ - ('B', 'Transfer'), - ('A', 'Accreditation'), - ('X', 'Other'), - ], 'Payment Method') - country_payment_id = fields.Many2one('res.country', 'Country Payment') - invoice_id = fields.Many2one('account.invoice', string='Invoice', - readonly=True) - - @api.onchange('partner_id') - def change_partner_id(self): - if self.partner_id: - data = self.env['account.invoice.intrastat']._get_partner_data( - self.partner_id) - self.country_partner_id = data['country_partner_id'] - self.vat_code = data['vat_code'] - - @api.model - def _prepare_statement_line(self, inv_intra_line): - res = { - 'invoice_id': inv_intra_line.invoice_id.id or False, - 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': - inv_intra_line.country_partner_id.id or False, - 'vat_code': - ( - inv_intra_line.invoice_id.partner_id.vat - and inv_intra_line.invoice_id.partner_id.vat[2:] - or False), - 'amount_euro': self.statement_id.round_min_amount( - round(inv_intra_line.amount_euro) or 0, - inv_intra_line.invoice_id.company_id), - 'invoice_number': inv_intra_line.invoice_number or False, - 'invoice_date': inv_intra_line.invoice_date or False, - 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, - 'supply_method': inv_intra_line.supply_method or False, - 'payment_method': inv_intra_line.payment_method or False, - 'country_payment_id': - inv_intra_line.country_payment_id.id or False, - } - return res - - @api.model - def _prepare_export_line(self): - # Controls - # .. Vat code - if not self.vat_code: - raise ValidationError( - _('Missing Vat code for %s in Sale Section 3') - % (self.partner_id.name,)) - - rcd = '' - # Codice dello Stato membro dell’acquirente - self.country_partner_id.with_context( - control_ISO_code=True).intrastat_validate() - rcd += '{:2s}'.format(self.country_partner_id.code or '') - #  Codice IVA del fornitore - rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - # Ammontare delle operazioni in euro - rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) - # Numero Fattura - rcd += '{:15s}'.format(str(self.invoice_number).zfill(15)) - # Data Fattura - invoice_date_ddmmyy = False - if self.invoice_date: - date_obj = datetime.strptime(self.invoice_date, '%Y-%m-%d') - invoice_date_ddmmyy = date_obj.strftime('%d%m%y') - rcd += '{:2s}'.format(invoice_date_ddmmyy or '') - # Codice del servizio - rcd += '{:6s}'.format( - self.intrastat_code_id and self.intrastat_code_id.name or '') - # Modalità di erogazione - rcd += '{:1s}'.format(self.supply_method or '') - # Modalità di incasso - rcd += '{:1s}'.format(self.payment_method or '') - # Codice del paese di pagamento - rcd += '{:2s}'.format(self.country_payment_id and - self.country_payment_id.code or '') - # ... new line - rcd += "\r" # - rcd += "\n" # - - return rcd - - -class AccountIntrastatStatementSaleSection4(models.Model): - _name = 'account.intrastat.statement.sale.section4' - _description = 'Account INTRASTAT - Statement - Sale Section 4' - - statement_id = fields.Many2one( - 'account.intrastat.statement', string='Statement', - readonly=True, ondelete="cascade") - sequence = fields.Integer(string='Progressive') - custom_id = fields.Many2one('account.intrastat.custom', 'Custom') - month = fields.Integer(string='Month Ref of Refund') - quarterly = fields.Integer(string='Quarterly Ref of Refund') - year_id = fields.Integer(string='Year Ref of Variation') - protocol = fields.Integer(string='Protocol number', size=6) - progressive_to_modify = fields.Integer('Progressive to Modify') - partner_id = fields.Many2one('res.partner', string='Partner') - country_partner_id = fields.Many2one('res.country', - string='Country Partner') - vat_code = fields.Char(string='Vat Code Customer') - amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) - invoice_number = fields.Char(string='Invoice Number') - invoice_date = fields.Date(string='Invoice Date') - intrastat_code_id = fields.Many2one('report.intrastat.code', - string='Intrastat Code Service') - supply_method = fields.Selection([ - ('I', 'Instant'), - ('R', 'Repeatedly'), - ], 'Supply Method') - payment_method = fields.Selection([ - ('B', 'Transfer'), - ('A', 'Accreditation'), - ('X', 'Other'), - ], 'Payment Method') - country_payment_id = fields.Many2one('res.country', 'Country Payment') - invoice_id = fields.Many2one('account.invoice', string='Invoice', - readonly=True) - - @api.onchange('partner_id') - def change_partner_id(self): - if self.partner_id: - data = self.env['account.invoice.intrastat']._get_partner_data( - self.partner_id) - self.country_partner_id = data['country_partner_id'] - self.vat_code = data['vat_code'] - - @api.model - def _prepare_statement_line(self, inv_intra_line, statement_id): - # Period Ref - ref_period = statement_id._get_period_ref(inv_intra_line.invoice_id) - - res = { - 'invoice_id': inv_intra_line.invoice_id.id or False, - 'month': ref_period and ref_period['month'] or False, - 'quarterly': ref_period and ref_period['quarterly'] or False, - 'year_id': ref_period and ref_period['year_id'] or False, - 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': - inv_intra_line.country_partner_id.id or False, - 'vat_code': - ( - inv_intra_line.invoice_id.partner_id.vat - and inv_intra_line.invoice_id.partner_id.vat[2:] - or False), - 'amount_euro': self.statement_id.round_min_amount( - round(inv_intra_line.amount_euro) or 0, - inv_intra_line.invoice_id.company_id), - 'invoice_number': inv_intra_line.invoice_number or False, - 'invoice_date': inv_intra_line.invoice_date or False, - 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, - 'supply_method': inv_intra_line.supply_method or False, - 'payment_method': inv_intra_line.payment_method or False, - 'country_payment_id': - inv_intra_line.country_payment_id.id or False, - 'custom_id': statement_id.custom_id.id - } - return res - - @api.model - def _prepare_export_line(self): - # Controls - # .. Vat code - if not self.vat_code: - raise ValidationError( - _('Missing Vat code for %s in Sale Section 4') - % (self.partner_id.name,)) - # .. year ref - if not self.year_id: - raise ValidationError( - _('Missing Year Ref on Sale Section 4')) - # .. custom_id - if not self.custom_id: - raise ValidationError( - _('Missing custom on Sale Section 4')) - # .. Protocol - if not self.protocol: - raise ValidationError( - _('Missing protocol on Sale Section 4')) - # .. Progressive to modity - if not self.progressive_to_modify: - raise ValidationError( - _('Missing Progressive to modity on Sale Section 4')) - # .. Invoice - if (not self.invoice_number) or (not self.invoice_date): - raise ValidationError( - _('Missing Invoice data on Sale Section 4')) - # .. Supply method - if not self.supply_method: - raise ValidationError( - _('Missing Supply method on Sale Section 4')) - # .. payment_method - if not self.payment_method: - raise ValidationError( - _('Missing Payment method on Sale Section 4')) - # .. country_payment_id - if not self.country_payment_id: - raise ValidationError( - _('Missing Country Payment on Sale Section 4')) - - rcd = '' - # Codice della sezione doganale in cui è stato registrata la - # dichiarazione da rettificare - rcd += '{:6s}'.format(self.custom_id and self.custom_id.code or '') - # Anno di registrazione della dichiarazione da rettificare - start_year = self.year_id - rcd += '{:2s}'.format(start_year and str(start_year)[2:] or '') - # rcd += '{:2s}'.format( - # date_start_year and str(date_start_year.year)[2:] or '') - # Protocollo della dichiarazione da rettificare - rcd += '{:6s}'.format( - self.protocol and str(self.protocol).zfill(6) or '') - # Progressivo della sezione 3 da rettificare - rcd += '{:5s}'.format( - self.progressive_to_modify_id and - str(self.progressive_to_modify_id.sequence).zfill(5) or '') - # Codice dello Stato membro dell’acquirente - # Test anche che ci sia il codice nazione - country_id = (self.country_partner_id - or self.partner_id.country_id) - if country_id: - country_id.with_context(control_ISO_code=True).intrastat_validate() - else: - raise ValidationError( - _('Partner without Country')) - rcd += '{:2s}'.format(country_id.code or '') - #  Codice IVA dell’acquirente - rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - # Ammontare delle operazioni in euro - rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) - # Numero Fattura - rcd += '{:15s}'.format(str(self.invoice_number).zfill(15)) - # Data Fattura - invoice_date_ddmmyy = False - if self.invoice_date: - date_obj = datetime.strptime(self.invoice_date, '%Y-%m-%d') - invoice_date_ddmmyy = date_obj.strftime('%d%m%y') - rcd += '{:2s}'.format(invoice_date_ddmmyy or '') - # Codice del servizio - rcd += '{:6s}'.format( - self.intrastat_code_id and self.intrastat_code_id.name or '') - # Modalità di erogazione - rcd += '{:1s}'.format(self.supply_method or '') - # Modalità di incasso - rcd += '{:1s}'.format(self.payment_method or '') - # Codice del paese di pagamento - rcd += '{:2s}'.format(self.country_payment_id and - self.country_payment_id.code or '') - # ... new line - rcd += "\r" - rcd += "\n" - - return rcd - - -class AccountIntrastatStatementPurchaseSection1(models.Model): - _name = 'account.intrastat.statement.purchase.section1' - _description = 'Account INTRASTAT - Statement - Purchase Section 1' - - statement_id = fields.Many2one('account.intrastat.statement', - string='Statement', - readonly=True, - ondelete="cascade") - sequence = fields.Integer(string='Progressive') - partner_id = fields.Many2one('res.partner', string='Partner') - country_partner_id = fields.Many2one('res.country', - string='Country Partner') - vat_code = fields.Char(string='Vat Code Partner') - amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) - amount_currency = fields.Integer(string='Amount Currency', - digits=dp.get_precision('Account')) - transation_nature_id = fields.Many2one( - 'account.intrastat.transation.nature', string='Transation Nature') - intrastat_code_id = fields.Many2one( - 'report.intrastat.code', string='Intrastat Code Good') - weight_kg = fields.Integer(string='Weight kg') - additional_units = fields.Integer(string='Additional Units') - additional_units_required = fields.Boolean( - string='Additional Units Required', store=True, - related='intrastat_code_id.additional_unit_required') - additional_units_uom = fields.Char( - string='Additional Units UOM', - readonly=True, - related="intrastat_code_id.additional_unit_uom_id.name") - statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', - digits=dp.get_precision('Account')) - delivery_code_id = fields.Many2one('stock.incoterms', - string='Delivery') - transport_code_id = fields.Many2one('account.intrastat.transport', - string='Transport') - country_origin_id = fields.Many2one('res.country', - string='Country Origin') - country_good_origin_id = fields.Many2one('res.country', - string='Country Good Origin') - province_destination_id = fields.Many2one('res.country.state', - string='Province Destination') - invoice_id = fields.Many2one('account.invoice', string='Invoice', - readonly=True) - - @api.onchange('weight_kg') - def change_weight_kg(self): - if self.statement_id.company_id.intrastat_additional_unit_from == \ - 'weight': - self.additional_units = self.weight_kg - - @api.onchange('partner_id') - def change_partner_id(self): - if self.partner_id: - data = self.env['account.invoice.intrastat']._get_partner_data( - self.partner_id) - self.country_partner_id = data['country_partner_id'] - self.vat_code = data['vat_code'] - self.country_origin_id = data['country_origin_id'] - self.country_good_origin_id = data['country_good_origin_id'] - - @api.model - def _prepare_statement_line(self, inv_intra_line): - company_id = self._context.get( - 'company_id', self.env.user.company_id) - res = { - 'invoice_id': inv_intra_line.invoice_id.id or False, - 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': - inv_intra_line.country_partner_id.id or False, - 'vat_code': - ( - inv_intra_line.invoice_id.partner_id.vat - and inv_intra_line.invoice_id.partner_id.vat[2:] - or False), - 'amount_euro': self.statement_id.round_min_amount( - round(inv_intra_line.amount_euro) or 0, company_id), - 'amount_currency': - ( - # >> da valorizzare solo per operazione Paesi non Euro - not inv_intra_line.invoice_id.company_id.currency_id.id - and inv_intra_line.invoice_id.currency_id.id - and round(inv_intra_line.amount_currency) - or 0 - ), - 'transation_nature_id': - ( - (inv_intra_line.transation_nature_id - and inv_intra_line.transation_nature_id.id - ) - or - (company_id.intrastat_purchase_transation_nature_id - and company_id.intrastat_purchase_transation_nature_id.id - ) - or False - ), - 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, - 'weight_kg': - inv_intra_line.weight_kg and round(inv_intra_line.weight_kg) - or 0, - 'additional_units': - inv_intra_line.additional_units and \ - round(inv_intra_line.additional_units) or 0, - 'statistic_amount_euro': - self.statement_id.round_min_amount( - round(inv_intra_line.statistic_amount_euro) or - ( - company_id.intrastat_purchase_statistic_amount and - round(inv_intra_line.amount_euro)) or 0, - company_id), - 'delivery_code_id': - ( - (inv_intra_line.delivery_code_id and - inv_intra_line.delivery_code_id.id) - or (company_id.intrastat_purchase_delivery_code_id and - company_id.intrastat_purchase_delivery_code_id.id) - or False), - 'transport_code_id': - ( - (inv_intra_line.transport_code_id and - inv_intra_line.transport_code_id.id) or - (company_id.intrastat_purchase_transport_code_id and - company_id.intrastat_purchase_transport_code_id.id) - or False), - 'country_origin_id': - ( - inv_intra_line.country_origin_id and - inv_intra_line.country_origin_id.id or False), - 'country_good_origin_id': - ( - inv_intra_line.country_good_origin_id - and inv_intra_line.country_good_origin_id.id or False), - 'province_destination_id': ( - (inv_intra_line.province_destination_id and - inv_intra_line.province_destination_id.id) or - (company_id.intrastat_purchase_province_destination_id - and - company_id.intrastat_purchase_province_destination_id.id) - or False) - } - return res - - @api.model - def _prepare_export_line(self): - # Controls - # .. Vat code - if not self.vat_code: - raise ValidationError( - _('Missing Vat code for %s in Purchase Section 1') - % (self.partner_id.name,)) - - rcd = '' - # Codice dello Stato membro del fornitore - self.country_partner_id.with_context( - control_ISO_code=True).intrastat_validate() - rcd += '{:2s}'.format(self.country_partner_id.code or '') - #  Codice IVA del fornitore - rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - # Ammontare delle operazioni in euro - rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) - # Ammontare delle operazioni in valuta - rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) - # Codice della natura della transazione - rcd += '{:1s}'.format( - self.transation_nature_id and self.transation_nature_id.code or '') - # Codice della nomenclatura combinata della merce - rcd += '{:8s}'.format( - self.intrastat_code_id and self.intrastat_code_id.name or '') - #  Massa netta in chilogrammi - rcd += '{:10s}'.format(str(self.weight_kg).zfill(10)) - #  Quantità espressa nell'unità di misura supplementare - rcd += '{:10s}'.format(str(self.additional_units).zfill(10)) - #  Valore statistico in euro - rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) - #  Codice delle condizioni di consegna - rcd += '{:1s}'.format( - self.delivery_code_id and self.delivery_code_id.code[:1] or '') - #  Codice del modo di trasporto - rcd += '{:1s}'.format( - self.transport_code_id and str(self.transport_code_id.code) or '') - #  Codice del paese di provenienza - rcd += '{:2s}'.format( - self.country_origin_id and self.country_origin_id.code or '') - #  Codice del paese di origine della merce - rcd += '{:2s}'.format( - self.country_good_origin_id and - self.country_good_origin_id.code - or '') - # Codice della provincia di destinazione della merce - rcd += '{:2s}'.format( - self.province_destination_id - and self.province_destination_id.code - or '') - # ... new line - rcd += "\r" # - rcd += "\n" # - - return rcd - - -class AccountIntrastatStatementPurchaseSection2(models.Model): - _name = 'account.intrastat.statement.purchase.section2' - _description = 'Account INTRASTAT - Statement - Purchase Section 2' - - statement_id = fields.Many2one('account.intrastat.statement', - string='Statement', - readonly=True, - ondelete="cascade") - sequence = fields.Integer(string='Progressive') - month = fields.Integer(string='Month Ref of Refund') - quarterly = fields.Integer(string='Quarterly Ref of Refund') - year_id = fields.Integer(string='Year Ref of Refund') - partner_id = fields.Many2one('res.partner', string='Partner') - country_partner_id = fields.Many2one('res.country', - string='Country Partner') - vat_code = fields.Char(string='Vat Code Partner') - sign_variation = fields.Selection([ - ('+', '+'), - ('-', '-'), - ], 'Sign Variation') - amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) - amount_currency = fields.Integer(string='Amount Currency', - digits=dp.get_precision('Account')) - transation_nature_id = fields.Many2one( - 'account.intrastat.transation.nature', string='Transation Nature') - intrastat_code_id = fields.Many2one( - 'report.intrastat.code', string='Intrastat Code Good') - statistic_amount_euro = fields.Integer(string='Statistic Amount Euro', - digits=dp.get_precision('Account')) - invoice_id = fields.Many2one('account.invoice', string='Invoice', - readonly=True) - - @api.onchange('partner_id') - def change_partner_id(self): - if self.partner_id: - data = self.env['account.invoice.intrastat']._get_partner_data( - self.partner_id) - self.country_partner_id = data['country_partner_id'] - self.vat_code = data['vat_code'] - - @api.model - def _prepare_statement_line(self, inv_intra_line, statement_id): - company_id = self._context.get( - 'company_id', self.env.user.company_id) - # sign_variation - sign_variation = False - if inv_intra_line.invoice_id.type in ['in_refund']: - sign_variation = '-' - # Period Ref - ref_period = statement_id._get_period_ref(inv_intra_line.invoice_id) - - res = { - 'invoice_id': inv_intra_line.invoice_id.id or False, - 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, - 'month': ref_period and ref_period['month'] or False, - 'quarterly': ref_period and ref_period['quarterly'] or False, - 'year_id': ref_period and ref_period['year_id'] or False, - 'country_partner_id': - inv_intra_line.country_partner_id.id or False, - 'vat_code': ( - inv_intra_line.invoice_id.partner_id.vat - and inv_intra_line.invoice_id.partner_id.vat[2:] - or False), - 'sign_variation': sign_variation, - 'amount_euro': self.statement_id.round_min_amount( - round(inv_intra_line.amount_euro) or 0, company_id), - 'amount_currency': round(inv_intra_line.amount_currency) or 0, - 'transation_nature_id': ( - inv_intra_line.transation_nature_id and - inv_intra_line.transation_nature_id.id) or ( - company_id.intrastat_purchase_transation_nature_id and - company_id.intrastat_purchase_transation_nature_id.id) or - False, - 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, - 'statistic_amount_euro': - self.statement_id.round_min_amount( - round(inv_intra_line.statistic_amount_euro) or - ( - company_id.intrastat_purchase_statistic_amount and - round(inv_intra_line.amount_euro)) or 0, - company_id), - } - return res - - @api.model - def _prepare_export_line(self): - # Controls - # .. Vat code - if not self.vat_code: - raise ValidationError( - _('Missing Vat code for %s in Purchase Section 2') - % (self.partner_id.name,)) - # .. year ref - if not self.year_id: - raise ValidationError( - _('Missing Year Ref on Purchase Section 2')) - # .. Sign variation - if not self.sign_variation: - raise ValidationError( - _('Missing Sign Variation on Purchase Section 2')) - # ...Period ref - if self.statement_id.period_type == 'M': - if not self.month: - raise ValidationError( - _('Missing Month Ref Variation on Purchase Section 2')) - else: - if not self.quarterly: - raise ValidationError( - _('Missing Quarterly Ref Variation on Purchase Section 2')) - rcd = '' - # Mese di riferimento del riepilogo da rettificare - rcd += '{:2s}'.format(str(self.month).zfill(2)) - #  Trimestre di riferimento del riepilogo da rettificare - rcd += '{:1s}'.format(str(self.quarterly).zfill(1)) - # Anno periodo di ref da modificare - start_year = self.year_id - rcd += '{:2s}'.format(str(start_year)[2:] or '') - # Codice dello Stato membro del fornitore - self.country_partner_id.with_context( - control_ISO_code=True).intrastat_validate() - rcd += '{:2s}'.format(self.country_partner_id.code or '') - #  Codice IVA del fornitore - rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - #  Segno da attribuire alle variazioni da X(1) apportare - rcd += '{:1s}'.format(self.sign_variation or '') - # Ammontare delle operazioni in euro - rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) - # Ammontare delle operazioni in valuta - # >> da valorizzare solo per operazione Paesi non Euro - if not ( - self.invoice_id.company_id.currency_id.id == - self.invoice_id.currency_id.id - ): - rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) - else: - rcd += '{:13s}'.format(str(0).zfill(13)) - # Codice della natura della transazione - rcd += '{:1s}'.format( - self.transation_nature_id and self.transation_nature_id.code or '') - # Codice della nomenclatura combinata della merce - rcd += '{:8s}'.format( - self.intrastat_code_id and self.intrastat_code_id.name or '') - #  Valore statistico in euro - rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) - # ... new line - rcd += "\r" # - rcd += "\n" # - - return rcd - - -class AccountIntrastatStatementPurchaseSection3(models.Model): - _name = 'account.intrastat.statement.purchase.section3' - _description = 'Account INTRASTAT - Statement - Purchase Section 3' - - statement_id = fields.Many2one('account.intrastat.statement', - string='Statement', - readonly=True, - ondelete="cascade") - sequence = fields.Integer(string='Progressive') - partner_id = fields.Many2one('res.partner', string='Partner') - country_partner_id = fields.Many2one('res.country', - string='Country Partner') - vat_code = fields.Char(string='Vat Code Partner') - amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) - amount_currency = fields.Integer(string='Amount Currency', - digits=dp.get_precision('Account')) - invoice_number = fields.Char(string='Invoice Number') - invoice_date = fields.Date(string='Invoice Date') - intrastat_code_id = fields.Many2one('report.intrastat.code', - string='Intrastat Code Service') - supply_method = fields.Selection([ - ('I', 'Instant'), - ('R', 'Repeatedly'), - ], 'Supply Method') - payment_method = fields.Selection([ - ('B', 'Transfer'), - ('A', 'Accreditation'), - ('X', 'Other'), - ], 'Payment Method') - country_payment_id = fields.Many2one('res.country', 'Country Payment') - invoice_id = fields.Many2one( - 'account.invoice', string='Invoice', readonly=True) - - @api.onchange('partner_id') - def change_partner_id(self): - if self.partner_id: - data = self.env['account.invoice.intrastat']._get_partner_data( - self.partner_id) - self.country_partner_id = data['country_partner_id'] - self.vat_code = data['vat_code'] - - @api.model - def _prepare_statement_line(self, inv_intra_line): - res = { - 'invoice_id': inv_intra_line.invoice_id.id or False, - 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, - 'country_partner_id': - inv_intra_line.country_partner_id.id or False, - 'vat_code': ( - inv_intra_line.invoice_id.partner_id.vat - and inv_intra_line.invoice_id.partner_id.vat[2:] - or False), - 'amount_euro': self.statement_id.round_min_amount( - round(inv_intra_line.amount_euro) or 0, - inv_intra_line.invoice_id.company_id), - 'amount_currency': - # >> da valorizzare solo per operazione Paesi non Euro - not inv_intra_line.invoice_id.company_id.currency_id.id - and inv_intra_line.invoice_id.currency_id.id - and round(inv_intra_line.amount_currency) - or 0, - 'invoice_number': inv_intra_line.invoice_number or False, - 'invoice_date': inv_intra_line.invoice_date or False, - 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, - 'supply_method': inv_intra_line.supply_method or False, - 'payment_method': inv_intra_line.payment_method or False, - 'country_payment_id': - inv_intra_line.country_payment_id.id or False, - } - return res - - @api.model - def _prepare_export_line(self): - # Controls - # .. Vat code - if not self.vat_code: - raise ValidationError( - _('Missing Vat code for %s in Purchase Section 3') - % (self.partner_id.name,)) - - rcd = '' - # Codice dello Stato membro del fornitore - self.country_partner_id.with_context( - control_ISO_code=True).intrastat_validate() - rcd += '{:2s}'.format(self.country_partner_id.code or '') - #  Codice IVA del fornitore - rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - # Ammontare delle operazioni in euro - rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) - # Ammontare delle operazioni in valuta - rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) - # Numero Fattura - invoice_number = self.invoice_number or '' - if len(invoice_number) > 15: - invoice_number = invoice_number[-15:] - rcd += '{:15s}'.format(str(invoice_number).zfill(15)) - # Data Fattura - invoice_date_ddmmyy = False - if self.invoice_date: - date_obj = datetime.strptime(self.invoice_date, '%Y-%m-%d') - invoice_date_ddmmyy = date_obj.strftime('%d%m%y') - rcd += '{:2s}'.format(invoice_date_ddmmyy or '') - # Codice del servizio - rcd += '{:6s}'.format( - self.intrastat_code_id and self.intrastat_code_id.name or '') - # Modalità di erogazione - rcd += '{:1s}'.format(self.supply_method or '') - # Modalità di incasso - rcd += '{:1s}'.format(self.payment_method or '') - # Codice del paese di pagamento - rcd += '{:2s}'.format(self.country_payment_id and - self.country_payment_id.code or '') - # ... new line - rcd += "\r" # - rcd += "\n" # - - return rcd - - -class AccountIntrastatStatementPurchaseSection4(models.Model): - _name = 'account.intrastat.statement.purchase.section4' - _description = 'Account INTRASTAT - Statement - Purchase Section 4' - - statement_id = fields.Many2one('account.intrastat.statement', - string='Statement', - readonly=True, - ondelete="cascade") - sequence = fields.Integer(string='Progressive') - custom_id = fields.Many2one('account.intrastat.custom', 'Custom') - month = fields.Integer(string='Month Ref of Refund') - quarterly = fields.Integer(string='Quarterly Ref of Refund') - year_id = fields.Integer(string='Year Ref of Variation') - protocol = fields.Integer(string='Protocol number', size=6) - progressive_to_modify_id = fields.Many2one( - 'account.intrastat.statement.purchase.section1', - 'Progressive to Modify') - progressive_to_modify = fields.Integer('Progressive to Modify') - partner_id = fields.Many2one('res.partner', string='Partner') - country_partner_id = fields.Many2one('res.country', - string='Country Partner') - vat_code = fields.Char(string='Vat Code Partner') - amount_euro = fields.Integer(string='Amount Euro', - digits=dp.get_precision('Account')) - amount_currency = fields.Integer(string='Amount Currency', - digits=dp.get_precision('Account')) - invoice_number = fields.Char(string='Invoice Number') - invoice_date = fields.Char(string='Invoice Date') - intrastat_code_id = fields.Many2one('report.intrastat.code', - string='Intrastat Code Service') - supply_method = fields.Selection([ - ('I', 'Instant'), - ('R', 'Repeatedly'), - ], 'Supply Method') - payment_method = fields.Selection([ - ('B', 'Transfer'), - ('A', 'Accreditation'), - ('X', 'Other'), - ], 'Payment Method') - country_payment_id = fields.Many2one('res.country', 'Country Payment') - invoice_id = fields.Many2one('account.invoice', string='Invoice', - readonly=True) - - @api.onchange('partner_id') - def change_partner_id(self): - if self.partner_id: - data = self.env['account.invoice.intrastat']._get_partner_data( - self.partner_id) - self.country_partner_id = data['country_partner_id'] - self.vat_code = data['vat_code'] - - @api.model - def _prepare_statement_line(self, inv_intra_line, statement_id): - # Period Ref - - ref_period = statement_id._get_period_ref( - inv_intra_line.invoice_id) - res = { - 'invoice_id': inv_intra_line.invoice_id.id or False, - 'partner_id': inv_intra_line.invoice_id.partner_id.id or False, - 'month': ref_period and ref_period['month'] or False, - 'quarterly': ref_period and ref_period['quarterly'] or False, - 'year_id': ref_period and ref_period['year_id'] or False, - 'country_partner_id': - inv_intra_line.country_partner_id.id or False, - 'vat_code': ( - inv_intra_line.invoice_id.partner_id.vat - and inv_intra_line.invoice_id.partner_id.vat[2:] - or False), - 'amount_euro': self.statement_id.round_min_amount( - round(inv_intra_line.amount_euro) or 0, - inv_intra_line.invoice_id.company_id), - 'amount_currency': round(inv_intra_line.amount_currency) or 0, - 'invoice_number': inv_intra_line.invoice_number or False, - 'invoice_date': inv_intra_line.invoice_date or False, - 'intrastat_code_id': inv_intra_line.intrastat_code_id.id or False, - 'supply_method': inv_intra_line.supply_method or False, - 'payment_method': inv_intra_line.payment_method or False, - 'country_payment_id': ( - inv_intra_line.country_payment_id.id or False), - 'custom_id': statement_id.custom_id.id - } - return res - - @api.model - def _prepare_export_line(self): - # Controls - # .. Vat code - if not self.vat_code: - raise ValidationError( - _('Missing Vat code for %s in Purchase Section 4') - % (self.partner_id.name,)) - # .. year ref - if not self.year_id: - raise ValidationError( - _('Missing Year Ref on Purchase Section 4')) - # .. custom_id - if not self.custom_id: - raise ValidationError( - _('Missing custom on Purchase Section 4')) - # .. Protocol - if not self.protocol: - raise ValidationError( - _('Missing protocol on Purchase Section 4')) - # .. Progressive to modity - if not self.progressive_to_modify: - raise ValidationError( - _('Missing Progressive to modity on Purchase Section 4')) - # .. Invoice - if (not self.invoice_number) or (not self.invoice_date): - raise ValidationError( - _('Missing Invoice data on Purchase Section 4')) - # .. Supply method - if not self.supply_method: - raise ValidationError( - _('Missing Supply method on Purchase Section 4')) - # .. payment_method - if not self.payment_method: - raise ValidationError( - _('Missing Payment method on Purchase Section 4')) - # .. country_payment_id - if not self.country_payment_id: - raise ValidationError( - _('Missing Country Payment on Purchase Section 4')) - - rcd = '' - # Codice della sezione doganale in cui è stato registrata la - # dichiarazione da rettificare - rcd += '{:6s}'.format(self.custom_id and self.custom_id.code or '') - # Anno di registrazione della dichiarazione da rettificare - start_year = self.year_id - rcd += '{:2s}'.format(start_year and str(start_year)[2:] or '') - # Protocollo della dichiarazione da rettificare - rcd += '{:6s}'.format( - self.protocol and str(self.protocol).zfill(6) or '') - # Progressivo della sezione 3 da rettificare - rcd += '{:5s}'.format( - self.progressive_to_modify_id and - str(self.progressive_to_modify_id.sequence).zfill(5) - or '') - # Codice dello Stato membro dell’acquirente - # Test anche che ci sia il codice nazione - country_id = ( - self.country_partner_id - or self.partner_id.country_id - ) - if country_id: - country_id.with_context( - control_ISO_code=True).intrastat_validate() - else: - raise ValidationError( - _('Partner without Country')) - rcd += '{:2s}'.format(country_id.code or '') - # Codice IVA dell’acquirente - rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') - # Ammontare delle operazioni in euro - rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) - # Ammontare delle operazioni in valuta - # >> da valorizzare solo per operazione Paesi non Euro - if not ( - self.invoice_id.company_id.currency_id.id == - self.invoice_id.currency_id.id - ): - rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) - else: - rcd += '{:13s}'.format(str(0).zfill(13)) - # Numero Fattura - rcd += '{:15s}'.format(str(self.invoice_number).zfill(15)) - # Data Fattura - invoice_date_ddmmyy = False - if self.invoice_date: - date_obj = datetime.strptime(self.invoice_date, '%Y-%m-%d') - invoice_date_ddmmyy = date_obj.strftime('%d%m%y') - rcd += '{:2s}'.format(invoice_date_ddmmyy or '') - # Codice del servizio - rcd += '{:6s}'.format( - self.intrastat_code_id and self.intrastat_code_id.name or '') - # Modalità di erogazione - rcd += '{:1s}'.format(self.supply_method or '') - # Modalità di incasso - rcd += '{:1s}'.format(self.payment_method or '') - # Codice del paese di pagamento - rcd += '{:2s}'.format(self.country_payment_id and - self.country_payment_id.code or '') - # ... new line - rcd += "\r" - rcd += "\n" - - return rcd diff --git a/l10n_it_intrastat_statement/models/intrastat_statement.py b/l10n_it_intrastat_statement/models/intrastat_statement.py new file mode 100644 index 000000000000..31722683a529 --- /dev/null +++ b/l10n_it_intrastat_statement/models/intrastat_statement.py @@ -0,0 +1,851 @@ +# Copyright 2019 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import models, fields, api, _ +from odoo.exceptions import UserError, ValidationError +from datetime import datetime, date, timedelta + +from dateutil.relativedelta import relativedelta + +from odoo.tools import float_round + + +class AccountIntrastatStatement(models.Model): + _name = 'account.intrastat.statement' + _description = "Account INTRASTAT - Statement" + _rec_name = 'number' + + @api.multi + def round_min_amount(self, amount, company=None, prec_digits=None): + self.ensure_one() + if company is None: + company = self.company_id + + if prec_digits: + round_amount = float_round(amount, precision_digits=prec_digits) + else: + round_amount = round(amount) + + return min(round_amount or 0, company.intrastat_min_amount) + + @api.multi + def _compute_amount_section(self, section_type, section_number): + """ + Compute operation_number and amount for specified section. + + :param section_type: 'purchase' or 'sale' + :param section_number: 1..4 + """ + section_ids_field = \ + self.get_section_field_name(section_type, section_number) + section_op_number_field = \ + '%s_section%s_operation_number' % (section_type, section_number) + section_op_amount_field = \ + '%s_section%s_operation_amount' % (section_type, section_number) + if any(field_name not in self._fields + for field_name in [ + section_ids_field, + section_op_number_field, + section_op_amount_field]): + raise UserError(_("Wrong section type %s or number %s") + % (section_type, section_number)) + for statement in self: + op_number = len(statement[section_ids_field]) + op_amount = statement[section_ids_field].get_amount_euro() + statement.update({ + section_op_number_field: op_number, + section_op_amount_field: op_amount + }) + + @api.depends('sale_section1_ids.amount_euro') + def _compute_amount_sale_s1(self): + self._compute_amount_section('sale', 1) + + @api.depends('sale_section2_ids.amount_euro') + def _compute_amount_sale_s2(self): + self._compute_amount_section('sale', 2) + + @api.depends('sale_section3_ids.amount_euro') + def _compute_amount_sale_s3(self): + self._compute_amount_section('sale', 3) + + @api.depends('sale_section4_ids.amount_euro') + def _compute_amount_sale_s4(self): + self._compute_amount_section('sale', 4) + + @api.depends('purchase_section1_ids.amount_euro') + def _compute_amount_purchase_s1(self): + self._compute_amount_section('purchase', 1) + + @api.depends('purchase_section2_ids.amount_euro') + def _compute_amount_purchase_s2(self): + self._compute_amount_section('purchase', 2) + + @api.depends('purchase_section3_ids.amount_euro') + def _compute_amount_purchase_s3(self): + self._compute_amount_section('purchase', 3) + + @api.depends('purchase_section4_ids.amount_euro') + def _compute_amount_purchase_s4(self): + self._compute_amount_section('purchase', 4) + + @api.model + def _compute_progressive(self): + # From last statement + st = self.search([], order='number desc', limit=1) + return (st.number or 0) + 1 + + @api.multi + def recompute_sequence_lines(self): + for statement in self: + for section_type in ['purchase', 'sale']: + for section_number in range(1, 5): + section_field = self.get_section_field_name( + section_type, section_number) + section = statement[section_field] + sequence = 1 + for line in section: + line.sequence = sequence + sequence += 1 + + @api.model + def _get_sequence(self): + return self.env['ir.sequence'] \ + .next_by_code('intrastat.statement.sequence') + + number = fields.Integer( + default=_compute_progressive) + date = fields.Date( + string="Submission Date", + default=fields.Date.today(), + required=True) + company_id = fields.Many2one( + comodel_name='res.company', + string="Company", + default=lambda self: self.env.user.company_id.id, + required=True) + vat_taxpayer = fields.Char( + string="Vat taxpayer", + required=True, + default=lambda self: + self.env.user.company_id.partner_id.vat + and self.env.user.company_id.partner_id.vat[2:] or False) + intrastat_vat_delegate = fields.Char( + string="Vat delegate", + default=lambda self: self.env.user.company_id.intrastat_delegated_vat) + intrastat_name_delegate = fields.Char( + string="Name delegate", + default=lambda self: self.env.user.company_id.intrastat_delegated_name) + fiscalyear = fields.Integer( + string="Year", + required=True, + default=fields.Date.today().year) + period_type = fields.Selection( + selection=[ + ('M', "Month"), + ('T', "Quarterly"), + ], + string="Period Type", + required=True) + period_number = fields.Integer( + string="Period", + help="Values accepted:\ + - Month : From 1 to 12 \ + - Quarterly: From 1 to 4", + required=True) + date_start = fields.Date( + store=True, + readonly=True, + compute='_compute_dates') + date_stop = fields.Date( + store=True, + readonly=True, + compute='_compute_dates') + content_type = fields.Selection( + selection=[ + ('0', "Normal Period"), + ('8', "Change Period in quarterly: only first month operations"), + ('9', "Change Period in quarterly: only first and second month \ + operations"), + ], + string="Content Type", + required=True, + default='0') + special_cases = fields.Selection( + selection=[ + ('7', "First Statement"), + ('8', "Change VAT or Close Activity"), + ('9', "First Statement in Change VAT or Close Activity"), + ('0', "None of the above cases"), + ], + string="Special Cases", + required=True, + default='0') + intrastat_custom_id = fields.Many2one( + comodel_name='account.intrastat.custom', + string="Custom", + required=True, + default=lambda self: self.env.user.company_id.intrastat_custom_id) + sale = fields.Boolean( + default=True) + purchase = fields.Boolean( + default=True) + intrastat_type_data = fields.Selection( + selection=[ + ('all', "All (Fiscal and Statistic)"), + ('fiscal', "Fiscal"), + ('statistic', "Statistic"), + ], + string="Data Type", + required=True, + default='all') + intrastat_code_type = fields.Selection( + selection=[ + ('service', "Service"), + ('good', "Good") + ], + string="Code Type", + required=True, + default='good') + + sale_statement_sequence = fields.Integer( + default=_get_sequence) + sale_section1_ids = fields.One2many( + comodel_name='account.intrastat.statement.sale.section1', + inverse_name='statement_id', + string="Sale - Section 1") + sale_section1_operation_number = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_sale_s1') + sale_section1_operation_amount = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_sale_s1') + sale_section2_ids = fields.One2many( + comodel_name='account.intrastat.statement.sale.section2', + inverse_name='statement_id', + string="Sale - Section 2") + sale_section2_operation_number = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_sale_s2') + sale_section2_operation_amount = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_sale_s2') + sale_section3_ids = fields.One2many( + comodel_name='account.intrastat.statement.sale.section3', + inverse_name='statement_id', + string="Sale - Section 3") + sale_section3_operation_number = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_sale_s3') + sale_section3_operation_amount = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_sale_s3') + sale_section4_ids = fields.One2many( + comodel_name='account.intrastat.statement.sale.section4', + inverse_name='statement_id', + string="Sale - Section 4") + sale_section4_operation_number = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_sale_s4') + sale_section4_operation_amount = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_sale_s4') + + purchase_statement_sequence = fields.Integer( + default=_get_sequence) + purchase_section1_ids = fields.One2many( + comodel_name='account.intrastat.statement.purchase.section1', + inverse_name='statement_id', + string="Purchase - Section 1") + purchase_section1_operation_number = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_purchase_s1') + purchase_section1_operation_amount = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_purchase_s1') + purchase_section2_ids = fields.One2many( + comodel_name='account.intrastat.statement.purchase.section2', + inverse_name='statement_id', + string="Purchase - Section 2") + purchase_section2_operation_number = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_purchase_s2') + purchase_section2_operation_amount = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_purchase_s2') + purchase_section3_ids = fields.One2many( + comodel_name='account.intrastat.statement.purchase.section3', + inverse_name='statement_id', + string="Purchase - Section 3") + purchase_section3_operation_number = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_purchase_s3') + purchase_section3_operation_amount = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_purchase_s3') + purchase_section4_ids = fields.One2many( + comodel_name='account.intrastat.statement.purchase.section4', + inverse_name='statement_id', + string="Purchase - Section 4") + purchase_section4_operation_number = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_purchase_s4') + purchase_section4_operation_amount = fields.Integer( + store=True, + readonly=True, + compute='_compute_amount_purchase_s4') + + @api.model + def create(self, vals): + statement = super().create(vals) + statement._normalize_statement() + return statement + + @api.multi + def write(self, vals): + res = super().write(vals) + self._normalize_statement() + self.recompute_sequence_lines() + return res + + @api.multi + @api.depends('fiscalyear', 'period_type', 'period_number') + def _compute_dates(self): + for statement in self: + if not statement.fiscalyear \ + or not statement.period_type \ + or not statement.period_number: + continue + + statement._constrain_period_number() + + period_date_start, period_date_stop = \ + statement.get_dates_start_stop() + + statement.date_start = fields.Date.to_date(period_date_start) + statement.date_stop = fields.Date.to_date(period_date_stop) + + @api.multi + def get_dates_start_stop(self): + self.ensure_one() + year = self.fiscalyear + period_date_start = date(year, 1, 1) + period_date_stop = date(year, 12, 31) + + if self.period_type == 'M': + month = self.period_number + period_date_start = date(year, month, 1) + period_date_stop = \ + datetime(year, month, 1) \ + + relativedelta(months=1) \ + - timedelta(days=1) + elif self.period_type == 'T': + quarter = self.period_number + month_start = int(12 / 4 * (quarter - 1) + 1) + period_date_start = date(year, month_start, 1) + period_date_stop = \ + period_date_start \ + + relativedelta(months=3) \ + - timedelta(days=1) + return period_date_start, period_date_stop + + @api.multi + def _get_period_ref(self): + self.ensure_one() + res = { + 'year_id': self.fiscalyear} + + # Month/Quarter + if self.period_type == 'T': + res.update({ + 'quarterly': self.period_number}) + elif self.period_type == 'M': + res.update({ + 'month': self.period_number}) + return res + + @api.multi + def _normalize_statement(self): + # Unlink lines sale/purchase sections + self.ensure_one() + if not self.sale: + self._unlink_sections(section_type='sale') + if not self.purchase: + self._unlink_sections(section_type='purchase') + return True + + @api.multi + def _unlink_sections(self, section_type='all'): + """ + Unlink lines sale/purchase sections. + + :param section_type: 'all' (default), 'sale' or 'purchase' + """ + self.ensure_one() + # sale + if section_type in ['all', 'sale']: + self.sale_section1_ids.unlink() + self.sale_section2_ids.unlink() + self.sale_section3_ids.unlink() + self.sale_section4_ids.unlink() + # purchase + if section_type in ['all', 'purchase']: + self.purchase_section1_ids.unlink() + self.purchase_section2_ids.unlink() + self.purchase_section3_ids.unlink() + self.purchase_section4_ids.unlink() + return True + + @api.multi + def _get_progressive_interchange(self): + self.ensure_one() + prg = 0 + domain = [('date', '=', self.date)] + for st in self.search(domain): + prg += 1 + if st.id == self.id: + break + return prg + + @api.model + def _get_file_name(self): + """Format UA code + %m + %d""" + + # Calcolo progressivo interchange + prg = self._get_progressive_interchange() + if self.env.context.get('export_filename'): + return self.env.context.get('export_filename') + if self.company_id.intrastat_export_file_name: + return self.company_id.intrastat_export_file_name + else: + return '%s%s%s.%s%s' % ( + self.company_id.intrastat_ua_code or '', + '{:2s}'.format(str(self.date.month).zfill(2)), + '{:2s}'.format(str(self.date.day).zfill(2)), + 'I', # doc intrastat + '{:2s}'.format(str(prg).zfill(2)) + ) + + @api.multi + def _prepare_export_head(self): + self.ensure_one() + + rcd = '' + # Codice utente abilitato (mittente) + rcd += '{:4s}'.format(self.company_id.intrastat_ua_code or '') + # Riservato a SDA + rcd += '{:12s}'.format("") + # Nome del flusso + rcd += '{:12s}'.format(self._get_file_name()) + # Riservato a SDA + rcd += '{:12s}'.format("") + # Codice sezione doganale presso la quale si effettua l'operazione + rcd += '{:6s}'.format(self.intrastat_custom_id.code or '') + # Riservato a SDA + rcd += '{:4s}'.format("") + # Codice fiscale o numero partita IVA o codice spedizioniere del + # richiedente (utente autorizzato) + rcd += '{:16s}'.format(self.vat_taxpayer.replace(' ', '')) + # Progressivo sede utente autorizzato + prg = self._get_progressive_interchange() + rcd += '{:3s}'.format(str(prg).zfill(3)) + # Riservato a SDA + rcd += '{:1s}'.format("") + # Numero di record presenti nel flusso + tot_lines = ( + self.sale_section1_operation_number + + self.sale_section2_operation_number + + self.sale_section3_operation_number + + self.sale_section4_operation_number + + self.purchase_section1_operation_number + + self.purchase_section2_operation_number + + self.purchase_section3_operation_number + + self.purchase_section4_operation_number + + 1 + ) # this rec + # Add frontispiece sale + if ( + self.sale_section1_operation_number + or self.sale_section2_operation_number + or self.sale_section3_operation_number + or self.sale_section4_operation_number + ): + tot_lines += 1 + # Add frontispiece purchase + if ( + self.purchase_section1_operation_number + or self.purchase_section2_operation_number + or self.purchase_section3_operation_number + or self.purchase_section4_operation_number + ): + tot_lines += 1 + rcd += '{:5s}'.format(str(tot_lines).zfill(5)) + + rcd += "\r\n" + return rcd + + @api.multi + def _prepare_export_prefix(self, kind='sale'): + """ + :param kind: 'sale' or 'purchase + :return: Export prefix + """ + self.ensure_one() + # Campo fisso: “EUROX” + prefix = 'EUROX' + + # Partita IVA del presentatore o delegato + if self.intrastat_vat_delegate: + prefix += '{:11s}'.format(self.intrastat_vat_delegate) + else: + prefix += '{:11s}'.format(self.vat_taxpayer) + + # Numero progressivo dell’elenco + if kind == 'sale': + prefix += '{:6s}'.format( + str(self.sale_statement_sequence).zfill(6)) + elif kind == 'purchase': + prefix += '{:6s}'.format( + str(self.purchase_statement_sequence).zfill(6)) + return prefix + + @api.model + def _format_negative_number_frontispiece(self, number): + if number >= 0: + return str(number) + # interchange last values with p for 0, q for 1 ...and y for 9 + interchange = ['p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y'] + last_char = str(number)[-1:] + number = list(str(number * -1)) + # change last number + number[len(number) - 1] = interchange[int(last_char)] + return ''.join(number) + + @api.multi + def _prepare_export_frontispiece(self, kind): + self.ensure_one() + rcd = self._prepare_export_prefix(kind) + rcd += '{:1s}'.format("0") + rcd += '{:5s}'.format("".zfill(5)) + # Tipo riepilogo: A = acquisti C = cessioni + if kind == 'purchase': + rcd += '{:1s}'.format("A") + elif kind == 'sale': + rcd += '{:1s}'.format("C") + # Anno + rcd += '{:2s}'.format(str(self.fiscalyear)[2:]) + # Periodicità + rcd += '{:1s}'.format(self.period_type) + # Periodo + rcd += '{:2s}'.format(str(self.period_number).zfill(2)) + # Partita IVA del contribuente + rcd += '{:11s}'.format(self.vat_taxpayer) + # Contenuto degli elenchì + rcd += '{:1s}'.format(self.content_type) + # Casi particolari riferiti al soggetto obbligatò + rcd += '{:1s}'.format(self.special_cases) + # Partita IVA del soggetto delegato + rcd += '{:11s}'.format(self.intrastat_vat_delegate or "".zfill(11)) + # Numero e importo dettagli della sezione 1 + if kind == "purchase": + rcd += '{:5s}'.format( + str(self.purchase_section1_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.purchase_section1_operation_amount).zfill(13)) + elif kind == 'sale': + rcd += '{:5s}'.format( + str(self.sale_section1_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.sale_section1_operation_amount).zfill(13)) + # Numero dettagli della sezione 2 + if kind == "purchase": + rcd += '{:5s}'.format( + str(self.purchase_section2_operation_number).zfill(5)) + amount_format = self._format_negative_number_frontispiece( + self.purchase_section2_operation_amount) + rcd += '{:13s}'.format(str(amount_format).zfill(13)) + elif kind == 'sale': + rcd += '{:5s}'.format( + str(self.sale_section2_operation_number).zfill(5)) + amount_format = self._format_negative_number_frontispiece( + self.sale_section2_operation_amount) + rcd += '{:13s}'.format(str(amount_format).zfill(13)) + # Numero dettagli della sezione 3 + if kind == "purchase": + rcd += '{:5s}'.format( + str(self.purchase_section3_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.purchase_section3_operation_amount).zfill(13)) + else: + rcd += '{:5s}'.format( + str(self.sale_section3_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.sale_section3_operation_amount).zfill(13)) + # Numero dettagli della sezione 4 + if kind == "purchase": + rcd += '{:5s}'.format( + str(self.purchase_section4_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.purchase_section4_operation_amount).zfill(13)) + else: + rcd += '{:5s}'.format( + str(self.sale_section4_operation_number).zfill(5)) + rcd += '{:13s}'.format( + str(self.sale_section4_operation_amount).zfill(13)) + + rcd += "\r\n" + return rcd + + @api.multi + def generate_file_export(self): + self.ensure_one() + file_content = '' + # Head + if not self.env.context.get('export_without_head'): + file_content += self._prepare_export_head() + content_sale = self.env.context.get('sale') + content_purchase = self.env.context.get('purchase') + # Purchase + if ( + self.purchase_section1_operation_number or + self.purchase_section2_operation_number or + self.purchase_section3_operation_number or + self.purchase_section4_operation_number + ) and content_purchase: + # frontispiece + file_content += self._prepare_export_frontispiece("purchase") + # Section 1 + for line in self.purchase_section1_ids: + rcd = self._prepare_export_prefix("purchase") + rcd += '{:1s}'.format("1") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 2 + for line in self.purchase_section2_ids: + rcd = self._prepare_export_prefix("purchase") + rcd += '{:1s}'.format("2") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 3 + for line in self.purchase_section3_ids: + rcd = self._prepare_export_prefix("purchase") + rcd += '{:1s}'.format("3") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 4 + for line in self.purchase_section4_ids: + rcd = self._prepare_export_prefix("purchase") + rcd += '{:1s}'.format("4") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + + # Sale + if ( + (self.sale_section1_operation_number + or self.sale_section2_operation_number + or self.sale_section3_operation_number + or self.sale_section4_operation_number) + and content_sale): + # frontispiece + rec_frontispiece = self._prepare_export_frontispiece("sale") + file_content += rec_frontispiece + # Section 1 + for line in self.sale_section1_ids: + rcd = self._prepare_export_prefix("sale") + rcd += '{:1s}'.format("1") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 2 + for line in self.sale_section2_ids: + rcd = self._prepare_export_prefix("sale") + rcd += '{:1s}'.format("2") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 3 + for line in self.sale_section3_ids: + rcd = self._prepare_export_prefix("sale") + rcd += '{:1s}'.format("3") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + # Section 4 + for line in self.sale_section4_ids: + rcd = self._prepare_export_prefix("sale") + rcd += '{:1s}'.format("4") + rcd += '{:5s}'.format(str(line.sequence).zfill(5)) + rcd += line._prepare_export_line() + file_content += rcd + + # Data validation + if not file_content: + raise ValidationError(_('Nothing to export')) + if not self.sale_section1_ids \ + and not self.sale_section2_ids \ + and not self.sale_section3_ids \ + and not self.sale_section4_ids \ + and not self.purchase_section1_ids \ + and not self.purchase_section2_ids \ + and not self.purchase_section3_ids \ + and not self.purchase_section4_ids: + raise ValidationError(_('Statement without lines')) + + return file_content + + @api.multi + def compute_statement(self): + self.ensure_one() + # Unlink existing lines + self._unlink_sections() + + # Setting period + period_date_start, period_date_stop = self.get_dates_start_stop() + + # Search intrastat lines + domain = [('move_id.date', '>=', period_date_start), + ('move_id.date', '<=', period_date_stop), + ('intrastat', '=', True)] + inv_type = [] + if self.sale: + inv_type += ['out_invoice', 'out_refund'] + if self.purchase: + inv_type += ['in_invoice', 'in_refund'] + domain.append(('type', 'in', inv_type)) + + statement_data = dict() + invoices = self.env['account.invoice'].search(domain) + for inv_intra_line in invoices.mapped('intrastat_line_ids'): + for section_type in ['purchase', 'sale']: + for section_number in range(1, 5): + section_details = (section_type, section_number) + statement_section = '%s_s%s' % section_details + if inv_intra_line.statement_section != statement_section: + continue + statement_section_model_name = \ + self.get_section_model(*section_details) + st_line = self.env[statement_section_model_name] \ + ._prepare_statement_line(inv_intra_line, self) + if not st_line: + continue + statement_section_field = \ + self.get_section_field_name(*section_details) + if statement_section_field not in statement_data: + statement_data[statement_section_field] = list() + st_line['sequence'] = \ + len(statement_data[statement_section_field]) + 1 + statement_data[statement_section_field] \ + .append((0, 0, st_line)) + + self.write(statement_data) + + # Group refund to sale lines if they have the same period of ref + refund_map = [ + (2, 1), # Sale (Purchase) section 2 refunds section 1 + (4, 3), # Sale (Purchase) section 4 refunds section 3 + ] + for section_type in ['purchase', 'sale']: + for section_number, refund_section_number in refund_map: + section_details = (section_type, section_number) + refund_section_details = (section_type, refund_section_number) + section_field = self.get_section_field_name(*section_details) + for line in self[section_field]: + refund_section_model = \ + self.get_section_model(*refund_section_details) + to_refund_model = self.env[refund_section_model] + self.refund_line(line, to_refund_model) + return True + + @staticmethod + def get_section_model(section_type, section_number): + return 'account.intrastat.statement.%s.section%s' \ + % (section_type, section_number) + + @staticmethod + def get_section_field_name(section_type, section_number): + return '%s_section%s_ids' % (section_type, section_number) + + @api.multi + def refund_line(self, line, to_ref_obj): + """Refund line into sale if period ref is the same of the statement""" + self.ensure_one() + to_refund = False + if line.year_id == self.fiscalyear: + if ( + self.period_type == 'M' + and line.month == self.period_number + ): + to_refund = True + + if ( + self.period_type == 'T' + and line.quarterly == self.period_number + ): + to_refund = True + # Execute refund + if to_refund: + domain = [('statement_id', '=', self.id), + ('partner_id', '=', line.partner_id.id), + ('intrastat_code_id', '=', line.intrastat_code_id.id), + ('amount_euro', '>=', line.amount_euro)] + line_to_refund = to_ref_obj.search(domain, limit=1) + if line_to_refund: + if line_to_refund.amount_euro < line.amount_euro: + raise ValidationError( + _('Invoice and refund in the same period with' + ' refund > invoice for partner %s') + % line.partner_id.name) + val = { + 'amount_euro': ( + line_to_refund.amount_euro - line.amount_euro) + } + if 'statistic_amount_euro' in line_to_refund: + val['statistic_amount_euro'] = ( + line_to_refund.statistic_amount_euro - + line.statistic_amount_euro + ) + if 'amount_currency' in line_to_refund: + val['amount_currency'] = ( + line_to_refund.amount_currency - + line.amount_currency) + + line_to_refund.write(val) + line.unlink() + + @api.onchange('company_id') + def change_company_id(self): + self.vat_taxpayer = (self.company_id.partner_id.vat + and self.company_id.partner_id.vat[2:] or False) + self.intrastat_vat_delegate = (self.company_id.intrastat_delegated_vat + or False) + + @api.constrains('period_type', 'period_number') + def _constrain_period_number(self): + for statement in self: + if statement.period_type == 'M' and \ + not (1 <= statement.period_number <= 12): + raise ValidationError( + _("Period Not Valid! Range accepted: from 1 to 12")) + if statement.period_type == 'T' and \ + not (1 <= statement.period_number <= 4): + raise ValidationError( + _("Period Not Valid! Range accepted: from 1 to 4")) diff --git a/l10n_it_intrastat_statement/models/intrastat_statement_purchase_section.py b/l10n_it_intrastat_statement/models/intrastat_statement_purchase_section.py new file mode 100644 index 000000000000..711738d3853a --- /dev/null +++ b/l10n_it_intrastat_statement/models/intrastat_statement_purchase_section.py @@ -0,0 +1,536 @@ +# Copyright 2019 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models, _ +import odoo.addons.decimal_precision as dp +from odoo.exceptions import ValidationError + + +class IntrastatStatementPurchaseSection(models.AbstractModel): + _inherit = 'account.intrastat.statement.section' + _name = 'account.intrastat.statement.purchase.section' + _description = "Fields and methods " \ + "common to all intrastat purchase sections" + + amount_currency = fields.Integer( + string="Amount Currency", + digits=dp.get_precision('Account')) + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + res = super(IntrastatStatementPurchaseSection, self) \ + ._prepare_statement_line(inv_intra_line, statement_id) + company_id = self.env.context.get( + 'company_id', self.env.user.company_id) + invoice_id = inv_intra_line.invoice_id + + # Amounts + dp_model = self.env['decimal.precision'] + amount_currency = statement_id.round_min_amount( + inv_intra_line.amount_currency, + statement_id.company_id or company_id, + dp_model.precision_get('Account')) + + res.update({ + # Only for non-Euro countries + 'amount_currency': + amount_currency + if not invoice_id.company_id.currency_id.id + and invoice_id.currency_id.id + else 0, + }) + return res + + +class IntrastatStatementPurchaseSection1(models.Model): + _inherit = 'account.intrastat.statement.purchase.section' + _name = 'account.intrastat.statement.purchase.section1' + _description = "Account INTRASTAT - Statement - Purchase Section 1" + + transation_nature_id = fields.Many2one( + comodel_name='account.intrastat.transation.nature', + string="Transation Nature") + weight_kg = fields.Integer( + string="Weight kg") + additional_units = fields.Integer( + string="Additional Units") + additional_units_required = fields.Boolean( + string="Additional Units Required", + store=True, + related='intrastat_code_id.additional_unit_required') + additional_units_uom = fields.Char( + string="Additional Units UOM", + readonly=True, + related='intrastat_code_id.additional_unit_uom_id.name') + statistic_amount_euro = fields.Integer( + string="Statistic Amount Euro", + digits=dp.get_precision('Account')) + delivery_code_id = fields.Many2one( + comodel_name='account.incoterms', + string="Delivery") + transport_code_id = fields.Many2one( + comodel_name='account.intrastat.transport', + string="Transport") + country_origin_id = fields.Many2one( + comodel_name='res.country', + string="Country Origin") + country_good_origin_id = fields.Many2one( + comodel_name='res.country', + string="Country Good Origin") + province_destination_id = fields.Many2one( + comodel_name='res.country.state', + string="Province Destination") + + @api.onchange('weight_kg') + def change_weight_kg(self): + if self.statement_id.company_id.intrastat_additional_unit_from == \ + 'weight': + self.additional_units = self.weight_kg + + @api.multi + def apply_partner_data(self, partner_data): + res = super(IntrastatStatementPurchaseSection1, self) \ + .apply_partner_data(partner_data) + if 'country_origin_id' in partner_data: + self.country_origin_id = partner_data['country_origin_id'] + if 'country_good_origin_id' in partner_data: + self.country_good_origin_id = \ + partner_data['country_good_origin_id'] + return res + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + res = super(IntrastatStatementPurchaseSection1, self) \ + ._prepare_statement_line(inv_intra_line, statement_id) + company_id = self.env.context.get( + 'company_id', self.env.user.company_id) + + # Company defaults + delivery_code_id = \ + inv_intra_line.delivery_code_id \ + or company_id.intrastat_purchase_delivery_code_id + province_destination_id = \ + inv_intra_line.province_destination_id \ + or company_id.intrastat_purchase_province_destination_id + statistic_amount = \ + inv_intra_line.statistic_amount_euro \ + or company_id.intrastat_purchase_statistic_amount + transation_nature_id = \ + inv_intra_line.transation_nature_id \ + or company_id.intrastat_purchase_transation_nature_id + transport_code_id = \ + inv_intra_line.transport_code_id \ + or company_id.intrastat_purchase_transport_code_id + + # Amounts + dp_model = self.env['decimal.precision'] + statistic_amount = statement_id.round_min_amount( + statistic_amount, + statement_id.company_id or company_id, + dp_model.precision_get('Account')) + + res.update({ + 'transation_nature_id': transation_nature_id.id, + 'weight_kg': round(inv_intra_line.weight_kg) or 0, + 'additional_units': round(inv_intra_line.additional_units) or 0, + 'statistic_amount_euro': statistic_amount, + 'delivery_code_id': delivery_code_id.id, + 'transport_code_id': transport_code_id, + 'country_origin_id': inv_intra_line.country_origin_id.id, + 'country_good_origin_id': inv_intra_line.country_good_origin_id.id, + 'province_destination_id': province_destination_id.id + }) + return res + + @api.multi + def _prepare_export_line(self): + self.ensure_one() + self._export_line_checks(_("Purchase"), 1) + + rcd = '' + # Codice dello Stato membro del fornitore + country_id = self.country_partner_id or self.partner_id.country_id + rcd += '{:2s}'.format(country_id.code or '') + #  Codice IVA del fornitore + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Ammontare delle operazioni in valuta + rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) + # Codice della natura della transazione + rcd += '{:1s}'.format(self.transation_nature_id.code or '') + # Codice della nomenclatura combinata della merce + rcd += '{:8s}'.format(self.intrastat_code_id.name or '') + #  Massa netta in chilogrammi + rcd += '{:10s}'.format(str(self.weight_kg).zfill(10)) + #  Quantità espressa nell'unità di misura supplementare + rcd += '{:10s}'.format(str(self.additional_units).zfill(10)) + #  Valore statistico in euro + rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) + #  Codice delle condizioni di consegna + rcd += '{:1s}'.format( + self.delivery_code_id and self.delivery_code_id.code[:1] or '') + #  Codice del modo di trasporto + rcd += '{:1s}'.format( + self.transport_code_id and str(self.transport_code_id.code) or '') + #  Codice del paese di provenienza + rcd += '{:2s}'.format(self.country_origin_id.code or '') + #  Codice del paese di origine della merce + rcd += '{:2s}'.format(self.country_good_origin_id.code or '') + # Codice della provincia di destinazione della merce + rcd += '{:2s}'.format(self.province_destination_id.code or '') + + rcd += "\r\n" + return rcd + + +class IntrastatStatementPurchaseSection2(models.Model): + _inherit = 'account.intrastat.statement.purchase.section' + _name = 'account.intrastat.statement.purchase.section2' + _description = "Account INTRASTAT - Statement - Purchase Section 2" + + month = fields.Integer( + string="Month Ref of Refund") + quarterly = fields.Integer( + string="Quarterly Ref of Refund") + year_id = fields.Integer( + string="Year Ref of Refund") + sign_variation = fields.Selection( + selection=[ + ('+', "+"), + ('-', "-")], + string="Sign Variation") + transation_nature_id = fields.Many2one( + comodel_name='account.intrastat.transation.nature', + string="Transation Nature") + statistic_amount_euro = fields.Integer( + string='Statistic Amount Euro', + digits=dp.get_precision('Account')) + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + res = super(IntrastatStatementPurchaseSection2, self) \ + ._prepare_statement_line(inv_intra_line, statement_id) + company_id = self._context.get( + 'company_id', self.env.user.company_id) + + # Company defaults + statistic_amount = \ + inv_intra_line.statistic_amount_euro \ + or company_id.intrastat_purchase_statistic_amount + transation_nature_id = \ + inv_intra_line.transation_nature_id \ + or company_id.intrastat_purchase_transation_nature_id + + # Amounts + dp_model = self.env['decimal.precision'] + statistic_amount = statement_id.round_min_amount( + statistic_amount, + statement_id.company_id or company_id, + dp_model.precision_get('Account')) + + # Period Ref + ref_period = statement_id._get_period_ref() + + # Sign variation + sign_variation = False + if inv_intra_line.invoice_id.type == 'in_refund': + sign_variation = '-' + + res.update({ + 'month': ref_period.get('month'), + 'quarterly': ref_period.get('quarterly'), + 'year_id': ref_period.get('year_id'), + 'sign_variation': sign_variation, + 'transation_nature_id': transation_nature_id, + 'statistic_amount_euro': statistic_amount, + }) + return res + + @api.multi + def _export_line_checks(self, section_number): + super(IntrastatStatementPurchaseSection2, self) \ + ._export_line_checks(section_number) + if not self.year_id: + raise ValidationError( + _("Missing Year Ref on Purchase Section 2")) + if not self.sign_variation: + raise ValidationError( + _("Missing Sign Variation on Purchase Section 2")) + if self.statement_id.period_type == 'M': + if not self.month: + raise ValidationError( + _("Missing Month Ref Variation on Purchase Section 2")) + elif self.statement_id.period_type == 'T': + if not self.quarterly: + raise ValidationError( + _("Missing Quarterly Ref Variation on Purchase Section 2")) + + @api.multi + def _prepare_export_line(self): + self._export_line_checks(_("Purchase"), 2) + + rcd = '' + # Mese di riferimento del riepilogo da rettificare + rcd += '{:2s}'.format(str(self.month).zfill(2)) + #  Trimestre di riferimento del riepilogo da rettificare + rcd += '{:1s}'.format(str(self.quarterly).zfill(1)) + # Anno periodo di ref da modificare + rcd += '{:2s}'.format(self.year_id and str(self.year_id)[2:] or '') + # Codice dello Stato membro del fornitore + country_id = self.country_partner_id or self.partner_id.country_id + rcd += '{:2s}'.format(country_id.code or '') + #  Codice IVA del fornitore + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + #  Segno da attribuire alle variazioni da X(1) apportare + rcd += '{:1s}'.format(self.sign_variation or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Ammontare delle operazioni in valuta + # >> da valorizzare solo per operazione Paesi non Euro + if not ( + self.invoice_id.company_id.currency_id.id == + self.invoice_id.currency_id.id + ): + rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) + else: + rcd += '{:13s}'.format(str(0).zfill(13)) + # Codice della natura della transazione + rcd += '{:1s}'.format( + self.transation_nature_id and self.transation_nature_id.code or '') + # Codice della nomenclatura combinata della merce + rcd += '{:8s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + #  Valore statistico in euro + rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) + + rcd += "\r\n" + return rcd + + @api.multi + def get_amount_euro(self): + amount = 0 + for section in self: + if section.sign_variation == '-': + amount -= section.amount_euro + else: + amount += section.amount_euro + return amount + + +class IntrastatStatementPurchaseSection3(models.Model): + _inherit = 'account.intrastat.statement.purchase.section' + _name = 'account.intrastat.statement.purchase.section3' + _description = "Account INTRASTAT - Statement - Purchase Section 3" + + invoice_number = fields.Char( + string="Invoice Number") + invoice_date = fields.Date( + string="Invoice Date") + supply_method = fields.Selection( + selection=[ + ('I', "Instant"), + ('R', "Repeatedly")], + string="Supply Method") + payment_method = fields.Selection( + selection=[ + ('B', "Transfer"), + ('A', "Accreditation"), + ('X', "Other")], + string="Payment Method") + country_payment_id = fields.Many2one( + comodel_name='res.country', + string="Country Payment") + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + res = super(IntrastatStatementPurchaseSection3, self) \ + ._prepare_statement_line(inv_intra_line, statement_id) + res.update({ + 'invoice_number': inv_intra_line.invoice_number, + 'invoice_date': inv_intra_line.invoice_date, + 'supply_method': inv_intra_line.supply_method, + 'payment_method': inv_intra_line.payment_method, + 'country_payment_id': inv_intra_line.country_payment_id.id, + }) + return res + + @api.multi + def _prepare_export_line(self): + self._export_line_checks(_("Purchase"), 3) + + rcd = '' + # Codice dello Stato membro del fornitore + country_id = self.country_partner_id or self.partner_id.country_id + rcd += '{:2s}'.format(country_id.code or '') + #  Codice IVA del fornitore + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Ammontare delle operazioni in valuta + rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) + # Numero Fattura + invoice_number = self.invoice_number or '' + if len(invoice_number) > 15: + invoice_number = invoice_number[-15:] + rcd += '{:15s}'.format(str(invoice_number).zfill(15)) + # Data Fattura + invoice_date_ddmmyy = False + if self.invoice_date: + invoice_date_ddmmyy = self.invoice_date.strftime('%d%m%y') + rcd += '{:2s}'.format(invoice_date_ddmmyy or '') + # Codice del servizio + rcd += '{:6s}'.format(self.intrastat_code_id.name or '') + # Modalità di erogazione + rcd += '{:1s}'.format(self.supply_method or '') + # Modalità di incasso + rcd += '{:1s}'.format(self.payment_method or '') + # Codice del paese di pagamento + rcd += '{:2s}'.format(self.country_payment_id.code or '') + + rcd += "\r\n" + return rcd + + +class IntrastatStatementPurchaseSection4(models.Model): + _inherit = 'account.intrastat.statement.purchase.section' + _name = 'account.intrastat.statement.purchase.section4' + _description = "Account INTRASTAT - Statement - Purchase Section 4" + + intrastat_custom_id = fields.Many2one( + comodel_name='account.intrastat.custom', + string="Custom") + month = fields.Integer( + string="Month Ref of Refund") + quarterly = fields.Integer( + string="Quarterly Ref of Refund") + year_id = fields.Integer( + string="Year Ref of Variation") + protocol = fields.Integer( + string="Protocol number", + size=6) + progressive_to_modify_id = fields.Many2one( + comodel_name='account.intrastat.statement.purchase.section1') + progressive_to_modify = fields.Integer( + string="Progressive to Modify") + invoice_number = fields.Char( + string="Invoice Number") + invoice_date = fields.Char( + string="Invoice Date") + supply_method = fields.Selection( + selection=[ + ('I', "Instant"), + ('R', "Repeatedly")], + string="Supply Method") + payment_method = fields.Selection( + selection=[ + ('B', "Transfer"), + ('A', "Accreditation"), + ('X', "Other")], + string="Payment Method") + country_payment_id = fields.Many2one( + comodel_name='res.country', + string="Country Payment") + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + res = super(IntrastatStatementPurchaseSection4, self) \ + ._prepare_statement_line(inv_intra_line, statement_id) + + # Period Ref + ref_period = statement_id._get_period_ref() + + res.update({ + 'month': ref_period.get('month'), + 'quarterly': ref_period.get('quarterly'), + 'year_id': ref_period.get('year_id'), + 'invoice_number': inv_intra_line.invoice_number, + 'invoice_date': inv_intra_line.invoice_date, + 'supply_method': inv_intra_line.supply_method, + 'payment_method': inv_intra_line.payment_method, + 'country_payment_id': inv_intra_line.country_payment_id.id, + 'intrastat_custom_id': statement_id.intrastat_custom_id.id + }) + return res + + @api.multi + def _export_line_checks(self, section_number): + super(IntrastatStatementPurchaseSection4, self) \ + ._export_line_checks(section_number) + if not self.year_id: + raise ValidationError( + _("Missing Year Ref on Purchase Section 4")) + if not self.intrastat_custom_id: + raise ValidationError( + _("Missing custom on Purchase Section 4")) + if not self.protocol: + raise ValidationError( + _("Missing protocol on Purchase Section 4")) + if not self.progressive_to_modify: + raise ValidationError( + _("Missing Progressive to modity on Purchase Section 4")) + if (not self.invoice_number) or (not self.invoice_date): + raise ValidationError( + _("Missing Invoice data on Purchase Section 4")) + if not self.supply_method: + raise ValidationError( + _("Missing Supply method on Purchase Section 4")) + if not self.payment_method: + raise ValidationError( + _("Missing Payment method on Purchase Section 4")) + if not self.country_payment_id: + raise ValidationError( + _("Missing Country Payment on Purchase Section 4")) + + @api.multi + def _prepare_export_line(self): + self._export_line_checks(_("Purchase"), 4) + + rcd = '' + # Codice della sezione doganale in cui è stato registrata la + # dichiarazione da rettificare + rcd += '{:6s}'.format(self.intrastat_custom_id.code or '') + # Anno di registrazione della dichiarazione da rettificare + rcd += '{:2s}'.format(self.year_id and str(self.year_id)[2:] or '') + # Protocollo della dichiarazione da rettificare + rcd += '{:6s}'.format( + self.protocol and str(self.protocol).zfill(6) or '') + # Progressivo della sezione 3 da rettificare + rcd += '{:5s}'.format( + self.progressive_to_modify_id and + str(self.progressive_to_modify_id.sequence).zfill(5) + or '') + # Codice dello Stato membro dell’acquirente + country_id = self.country_partner_id or self.partner_id.country_id + rcd += '{:2s}'.format(country_id.code or '') + # Codice IVA dell’acquirente + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Ammontare delle operazioni in valuta + # >> da valorizzare solo per operazione Paesi non Euro + if not ( + self.invoice_id.company_id.currency_id.id == + self.invoice_id.currency_id.id + ): + rcd += '{:13s}'.format(str(self.amount_currency).zfill(13)) + else: + rcd += '{:13s}'.format(str(0).zfill(13)) + # Numero Fattura + rcd += '{:15s}'.format(str(self.invoice_number).zfill(15)) + # Data Fattura + invoice_date_ddmmyy = False + if self.invoice_date: + invoice_date_ddmmyy = self.invoice_date.strftime('%d%m%y') + rcd += '{:2s}'.format(invoice_date_ddmmyy or '') + # Codice del servizio + rcd += '{:6s}'.format(self.intrastat_code_id.name or '') + # Modalità di erogazione + rcd += '{:1s}'.format(self.supply_method or '') + # Modalità di incasso + rcd += '{:1s}'.format(self.payment_method or '') + # Codice del paese di pagamento + rcd += '{:2s}'.format(self.country_payment_id.code or '') + + rcd += "\r\n" + return rcd diff --git a/l10n_it_intrastat_statement/models/intrastat_statement_sale_section.py b/l10n_it_intrastat_statement/models/intrastat_statement_sale_section.py new file mode 100644 index 000000000000..a95563bea628 --- /dev/null +++ b/l10n_it_intrastat_statement/models/intrastat_statement_sale_section.py @@ -0,0 +1,473 @@ +# Copyright 2019 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models, _ +import odoo.addons.decimal_precision as dp +from odoo.exceptions import ValidationError + + +class IntrastatStatementSaleSection(models.AbstractModel): + _inherit = 'account.intrastat.statement.section' + _name = 'account.intrastat.statement.sale.section' + _description = "Fields and methods " \ + "common to all intrastat sale sections" + + +class IntrastatStatementSaleSection1(models.Model): + _inherit = 'account.intrastat.statement.sale.section' + _name = 'account.intrastat.statement.sale.section1' + _description = "Account INTRASTAT - Statement - Sale Section 1" + + transation_nature_id = fields.Many2one( + comodel_name='account.intrastat.transation.nature', + string="Transation Nature") + weight_kg = fields.Integer( + string="Weight kg") + additional_units = fields.Integer( + string="Additional Units") + additional_units_required = fields.Boolean( + string="Additional Units Required", + store=True, + related='intrastat_code_id.additional_unit_required') + additional_units_uom = fields.Char( + string="Additional Units UOM", + readonly=True, + related='intrastat_code_id.additional_unit_uom_id.name') + statistic_amount_euro = fields.Integer( + string="Statistic Amount Euro", + digits=dp.get_precision('Account')) + delivery_code_id = fields.Many2one( + comodel_name='account.incoterms', + string="Delivery") + transport_code_id = fields.Many2one( + comodel_name='account.intrastat.transport', + string="Transport") + country_destination_id = fields.Many2one( + comodel_name='res.country', + string="Country Destination") + province_origin_id = fields.Many2one( + comodel_name='res.country.state', + string="Province Origin") + + @api.multi + def apply_partner_data(self, partner_data): + res = super(IntrastatStatementSaleSection1, self) \ + .apply_partner_data(partner_data) + if 'country_destination_id' in partner_data: + self.country_destination_id = \ + partner_data['country_destination_id'] + return res + + @api.onchange('weight_kg') + def change_weight_kg(self): + if self.statement_id.company_id.intrastat_additional_unit_from == \ + 'weight': + self.additional_units = self.weight_kg + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + res = super(IntrastatStatementSaleSection1, self) \ + ._prepare_statement_line(inv_intra_line, statement_id) + company_id = self.env.user.company_id + + # Company defaults + delivery_code_id = \ + inv_intra_line.delivery_code_id \ + or company_id.intrastat_sale_delivery_code_id + province_origin_id = \ + inv_intra_line.province_origin_id \ + or company_id.intrastat_sale_province_origin_id + statistic_amount = \ + inv_intra_line.statistic_amount_euro \ + or company_id.intrastat_sale_statistic_amount + transation_nature_id = \ + inv_intra_line.transation_nature_id \ + or company_id.intrastat_sale_transation_nature_id + transport_code_id = \ + inv_intra_line.transport_code_id \ + or company_id.intrastat_sale_transport_code_id + + # Amounts + dp_model = self.env['decimal.precision'] + statistic_amount = statement_id.round_min_amount( + statistic_amount, + statement_id.company_id or company_id, + dp_model.precision_get('Account')) + + res.update({ + 'transation_nature_id': transation_nature_id.id, + 'weight_kg': round(inv_intra_line.weight_kg) or 0, + 'additional_units': round(inv_intra_line.additional_units) or 0, + 'statistic_amount_euro': statistic_amount, + 'delivery_code_id': delivery_code_id.id, + 'transport_code_id': transport_code_id.id, + 'country_destination_id': inv_intra_line.country_destination_id.id, + 'province_origin_id': province_origin_id.id, + }) + return res + + @api.model + def _prepare_export_line(self): + self.ensure_one() + self._export_line_checks(_("Sale"), 1) + + rcd = '' + # Codice dello Stato membro dell’acquirente + country_id = self.country_partner_id or self.partner_id.country_id + rcd += '{:2s}'.format(country_id.code or '') + #  Codice IVA dell’acquirente + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Codice della natura della transazione + rcd += '{:1s}'.format(self.transation_nature_id.code or '') + # Codice della nomenclatura combinata della merce + rcd += '{:8s}'.format(self.intrastat_code_id.name or '') + #  Massa netta in chilogrammi + rcd += '{:10s}'.format(str(self.weight_kg).zfill(10)) + #  Quantità espressa nell'unità di misura supplementare + rcd += '{:10s}'.format(str(self.additional_units).zfill(10)) + #  Valore statistico in euro + rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) + #  Codice delle condizioni di consegna + rcd += '{:1s}'.format( + self.delivery_code_id and self.delivery_code_id.code[:1] or '') + #  Codice del modo di trasporto + rcd += '{:1s}'.format( + self.transport_code_id and str(self.transport_code_id.code) or '') + #  Codice del paese di destinazione + rcd += '{:2s}'.format(self.country_destination_id.code or '') + #  Codice del paese di origine della merce + rcd += '{:2s}'.format(self.province_origin_id.code or '') + + rcd += "\r\n" + return rcd + + +class IntrastatStatementSaleSection2(models.Model): + _inherit = 'account.intrastat.statement.sale.section' + _name = 'account.intrastat.statement.sale.section2' + _description = "Account INTRASTAT - Statement - Sale Section 2" + + month = fields.Integer( + string="Month Ref of Refund") + quarterly = fields.Integer( + string="Quarterly Ref of Refund") + year_id = fields.Integer( + string="Year Ref of Refund") + sign_variation = fields.Selection( + selection=[ + ('+', "+"), + ('-', "-")], + string="Sign Variation") + transation_nature_id = fields.Many2one( + comodel_name='account.intrastat.transation.nature', + string="Transation Nature") + statistic_amount_euro = fields.Integer( + string="Statistic Amount Euro", + digits=dp.get_precision('Account')) + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + res = super(IntrastatStatementSaleSection2, self) \ + ._prepare_statement_line(inv_intra_line, statement_id) + company_id = self._context.get( + 'company_id', self.env.user.company_id) + + # Company defaults + transation_nature_id = \ + inv_intra_line.transation_nature_id \ + or company_id.intrastat_sale_transation_nature_id + statistic_amount = \ + inv_intra_line.statistic_amount_euro \ + or company_id.intrastat_sale_statistic_amount + + # Amounts + dp_model = self.env['decimal.precision'] + statistic_amount = statement_id.round_min_amount( + statistic_amount, + statement_id.company_id or company_id, + dp_model.precision_get('Account')) + + # Period Ref + ref_period = statement_id._get_period_ref() + + # Sign variation + sign_variation = False + if inv_intra_line.invoice_id.type == 'out_refund': + sign_variation = '-' + + res.update({ + 'month': ref_period.get('month'), + 'quarterly': ref_period.get('quarterly'), + 'year_id': ref_period.get('year_id'), + 'sign_variation': sign_variation, + 'transation_nature_id': transation_nature_id.id, + 'statistic_amount_euro': statistic_amount, + }) + return res + + @api.multi + def _export_line_checks(self, section_number): + super(IntrastatStatementSaleSection2, self) \ + ._export_line_checks(section_number) + if not self.year_id: + raise ValidationError( + _("Missing Year Ref on Sale Section 2")) + if not self.sign_variation: + raise ValidationError( + _("Missing Sign Variation on Sale Section 2")) + if self.statement_id.period_type == 'M': + if not self.month: + raise ValidationError( + _("Missing Month Ref Variation on Sale Section 2")) + elif self.statement_id.period_type == 'T': + if not self.quarterly: + raise ValidationError( + _("Missing Quarterly Ref Variation on Sale Section 2")) + + @api.model + def _prepare_export_line(self): + self.ensure_one() + self._export_line_checks(_("Sale"), 2) + + rcd = '' + # Mese di riferimento del riepilogo da rettificare + rcd += '{:2s}'.format(str(self.month).zfill(2)) + #  Trimestre di riferimento del riepilogo da rettificare + rcd += '{:1s}'.format(str(self.quarterly).zfill(1)) + # Anno periodo di ref da modificare + rcd += '{:2s}'.format(self.year_id and str(self.year_id)[2:] or '') + # Codice dello Stato membro dell’acquirente + country_id = self.country_partner_id or self.partner_id.country_id + rcd += '{:2s}'.format(country_id.code or '') + #  Codice IVA dell’acquirente + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + #  Segno da attribuire alle variazioni da X(1) apportare + rcd += '{:1s}'.format(self.sign_variation or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Codice della natura della transazione + rcd += '{:1s}'.format( + self.transation_nature_id and self.transation_nature_id.code or '') + # Codice della nomenclatura combinata della merce + rcd += '{:8s}'.format( + self.intrastat_code_id and self.intrastat_code_id.name or '') + #  Valore statistico in euro + rcd += '{:13s}'.format(str(self.statistic_amount_euro).zfill(13)) + + rcd += "\r\n" + return rcd + + @api.multi + def get_amount_euro(self): + amount = 0 + for section in self: + if section.sign_variation == '-': + amount -= section.amount_euro + else: + amount += section.amount_euro + return amount + + +class IntrastatStatementSaleSection3(models.Model): + _inherit = 'account.intrastat.statement.sale.section' + _name = 'account.intrastat.statement.sale.section3' + _description = "Account INTRASTAT - Statement - Sale Section 3" + + invoice_number = fields.Char( + string="Invoice Number") + invoice_date = fields.Date( + string="Invoice Date") + supply_method = fields.Selection( + selection=[ + ('I', "Instant"), + ('R', "Repeatedly")], + string="Supply Method") + payment_method = fields.Selection( + selection=[ + ('B', "Transfer"), + ('A', "Accreditation"), + ('X', "Other"), + ], + string="Payment Method") + country_payment_id = fields.Many2one( + comodel_name='res.country', + string="Country Payment") + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + res = super(IntrastatStatementSaleSection3, self) \ + ._prepare_statement_line(inv_intra_line, statement_id) + res.update({ + 'invoice_number': inv_intra_line.invoice_number, + 'invoice_date': inv_intra_line.invoice_date, + 'supply_method': inv_intra_line.supply_method, + 'payment_method': inv_intra_line.payment_method, + 'country_payment_id': inv_intra_line.country_payment_id.id, + }) + return res + + @api.model + def _prepare_export_line(self): + self.ensure_one() + self._export_line_checks(_("Sale"), 3) + + rcd = '' + # Codice dello Stato membro dell’acquirente + country_id = self.country_partner_id or self.partner_id.country_id + rcd += '{:2s}'.format(country_id.code or '') + #  Codice IVA del fornitore + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Numero Fattura + rcd += '{:15s}'.format(str(self.invoice_number).zfill(15)) + # Data Fattura + invoice_date_ddmmyy = False + if self.invoice_date: + invoice_date_ddmmyy = self.invoice_date.strftime('%d%m%y') + rcd += '{:2s}'.format(invoice_date_ddmmyy or '') + # Codice del servizio + rcd += '{:6s}'.format(self.intrastat_code_id.name or '') + # Modalità di erogazione + rcd += '{:1s}'.format(self.supply_method or '') + # Modalità di incasso + rcd += '{:1s}'.format(self.payment_method or '') + # Codice del paese di pagamento + rcd += '{:2s}'.format(self.country_payment_id.code or '') + + rcd += "\r\n" + return rcd + + +class IntrastatStatementSaleSection4(models.Model): + _inherit = 'account.intrastat.statement.sale.section' + _name = 'account.intrastat.statement.sale.section4' + _description = "Account INTRASTAT - Statement - Sale Section 4" + + intrastat_custom_id = fields.Many2one( + comodel_name='account.intrastat.custom', + string="Custom") + month = fields.Integer( + string="Month Ref of Refund") + quarterly = fields.Integer( + string="Quarterly Ref of Refund") + year_id = fields.Integer( + string="Year Ref of Variation") + protocol = fields.Integer( + string="Protocol number", + size=6) + progressive_to_modify = fields.Integer( + string="Progressive to Modify") + invoice_number = fields.Char( + string="Invoice Number") + invoice_date = fields.Date( + string="Invoice Date") + supply_method = fields.Selection( + selection=[ + ('I', "Instant"), + ('R', "Repeatedly")], + string="Supply Method") + payment_method = fields.Selection( + selection=[ + ('B', "Transfer"), + ('A', "Accreditation"), + ('X', "Other")], + string="Payment Method") + country_payment_id = fields.Many2one( + comodel_name='res.country', + string="Country Payment") + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + res = super(IntrastatStatementSaleSection4, self) \ + ._prepare_statement_line(inv_intra_line, statement_id) + + # Period Ref + ref_period = statement_id._get_period_ref() + + res.update({ + 'month': ref_period.get('month'), + 'quarterly': ref_period.get('quarterly'), + 'year_id': ref_period.get('year_id'), + 'invoice_number': inv_intra_line.invoice_number, + 'invoice_date': inv_intra_line.invoice_date, + 'supply_method': inv_intra_line.supply_method, + 'payment_method': inv_intra_line.payment_method, + 'country_payment_id': inv_intra_line.country_payment_id.id, + 'intrastat_custom_id': statement_id.intrastat_custom_id.id + }) + return res + + @api.multi + def _export_line_checks(self, section_number): + super(IntrastatStatementSaleSection4, self) \ + ._export_line_checks(section_number) + if not self.year_id: + raise ValidationError( + _("Missing Year Ref on Sale Section 4")) + if not self.intrastat_custom_id: + raise ValidationError( + _("Missing custom on Sale Section 4")) + if not self.protocol: + raise ValidationError( + _("Missing protocol on Sale Section 4")) + if not self.progressive_to_modify: + raise ValidationError( + _("Missing Progressive to modity on Sale Section 4")) + if (not self.invoice_number) or (not self.invoice_date): + raise ValidationError( + _("Missing Invoice data on Sale Section 4")) + if not self.supply_method: + raise ValidationError( + _("Missing Supply method on Sale Section 4")) + if not self.payment_method: + raise ValidationError( + _("Missing Payment method on Sale Section 4")) + if not self.country_payment_id: + raise ValidationError( + _("Missing Country Payment on Sale Section 4")) + + @api.model + def _prepare_export_line(self): + self._export_line_checks(_("Sale"), 4) + + rcd = '' + # Codice della sezione doganale in cui è stato registrata la + # dichiarazione da rettificare + rcd += '{:6s}'.format(self.intrastat_custom_id.code or '') + # Anno di registrazione della dichiarazione da rettificare + rcd += '{:2s}'.format(self.year_id and str(self.year_id)[2:] or '') + # Protocollo della dichiarazione da rettificare + rcd += '{:6s}'.format( + self.protocol and str(self.protocol).zfill(6) or '') + # Progressivo della sezione 3 da rettificare + rcd += '{:5s}'.format( + self.progressive_to_modify_id and + str(self.progressive_to_modify_id.sequence).zfill(5) or '') + # Codice dello Stato membro dell’acquirente + country_id = self.country_partner_id or self.partner_id.country_id + rcd += '{:2s}'.format(country_id.code or '') + #  Codice IVA dell’acquirente + rcd += '{:12s}'.format(self.vat_code.replace(' ', '') or '') + # Ammontare delle operazioni in euro + rcd += '{:13s}'.format(str(self.amount_euro).zfill(13)) + # Numero Fattura + rcd += '{:15s}'.format(str(self.invoice_number).zfill(15)) + # Data Fattura + invoice_date_ddmmyy = False + if self.invoice_date: + invoice_date_ddmmyy = self.invoice_date.strftime('%d%m%y') + rcd += '{:2s}'.format(invoice_date_ddmmyy or '') + # Codice del servizio + rcd += '{:6s}'.format(self.intrastat_code_id.name or '') + # Modalità di erogazione + rcd += '{:1s}'.format(self.supply_method or '') + # Modalità di incasso + rcd += '{:1s}'.format(self.payment_method or '') + # Codice del paese di pagamento + rcd += '{:2s}'.format(self.country_payment_id.code or '') + + rcd += "\r\n" + return rcd diff --git a/l10n_it_intrastat_statement/models/intrastat_statement_section.py b/l10n_it_intrastat_statement/models/intrastat_statement_section.py new file mode 100644 index 000000000000..08613dd2ebd7 --- /dev/null +++ b/l10n_it_intrastat_statement/models/intrastat_statement_section.py @@ -0,0 +1,96 @@ +# Copyright 2019 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models, _ +import odoo.addons.decimal_precision as dp +from odoo.exceptions import ValidationError + + +class IntrastatStatementSection(models.AbstractModel): + _name = 'account.intrastat.statement.section' + _description = "Fields and methods common to all intrastat sections" + + statement_id = fields.Many2one( + comodel_name='account.intrastat.statement', + string="Statement", + readonly=True, + ondelete='cascade') + sequence = fields.Integer( + string="Progressive") + partner_id = fields.Many2one( + comodel_name='res.partner', + string="Partner") + country_partner_id = fields.Many2one( + comodel_name='res.country', + string="Country Partner") + vat_code = fields.Char( + string="Vat Code Partner") + amount_euro = fields.Integer( + string="Amount Euro", + digits=dp.get_precision('Account')) + invoice_id = fields.Many2one( + comodel_name='account.invoice', + string="Invoice", + readonly=True) + intrastat_code_id = fields.Many2one( + comodel_name='report.intrastat.code', + string="Intrastat Code Good") + + @api.multi + def apply_partner_data(self, partner_data): + self.ensure_one() + if 'country_partner_id' in partner_data: + self.country_partner_id = partner_data['country_partner_id'] + if 'vat_code' in partner_data: + self.vat_code = partner_data['vat_code'] + + @api.onchange('partner_id') + def change_partner_id(self): + if not self.partner_id: + return + intrastat_model = self.env['account.invoice.intrastat'] + partner_data = intrastat_model._get_partner_data(self.partner_id) + self.apply_partner_data(partner_data) + + @api.model + def _prepare_statement_line(self, inv_intra_line, statement_id=None): + company_id = self.env.context.get( + 'company_id', self.env.user.company_id) + invoice_id = inv_intra_line.invoice_id + partner_id = invoice_id.partner_id + + # Amounts + dp_model = self.env['decimal.precision'] + amount_euro = statement_id.round_min_amount( + inv_intra_line.amount_euro, + statement_id.company_id or company_id, + dp_model.precision_get('Account')) + + return { + 'invoice_id': invoice_id.id, + 'partner_id': partner_id.id, + 'country_partner_id': inv_intra_line.country_partner_id.id, + 'vat_code': partner_id.vat and partner_id.vat[2:], + 'amount_euro': amount_euro, + 'intrastat_code_id': inv_intra_line.intrastat_code_id.id, + } + + @api.multi + def _export_line_checks(self, section_label, section_number): + self.ensure_one() + if not self.vat_code: + raise ValidationError( + _("Missing Vat code for %s in %s Section %s") + % (self.partner_id.display_name, + section_label, + section_number)) + country_id = self.country_partner_id or self.partner_id.country_id + if country_id: + country_id.intrastat_validate() + else: + raise ValidationError(_("Partner %s without Country") + % self.partner_id.display_name) + + @api.multi + def get_amount_euro(self): + return sum(section.amount_euro for section in self) diff --git a/l10n_it_intrastat_statement/readme/CONTRIBUTORS.rst b/l10n_it_intrastat_statement/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..90a379580375 --- /dev/null +++ b/l10n_it_intrastat_statement/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* Alessandro Camilli +* Lorenzo Battistini +* Lara Baggio +* Glauco Prina diff --git a/l10n_it_intrastat_statement/readme/DESCRIPTION.rst b/l10n_it_intrastat_statement/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..ac0fd41988c6 --- /dev/null +++ b/l10n_it_intrastat_statement/readme/DESCRIPTION.rst @@ -0,0 +1,5 @@ +**Italiano** + +Questo modulo si occupa di generare la Dichiarazione Intrastat e le relative stampe + + diff --git a/l10n_it_intrastat_statement/readme/USAGE.rst b/l10n_it_intrastat_statement/readme/USAGE.rst new file mode 100644 index 000000000000..78428da81698 --- /dev/null +++ b/l10n_it_intrastat_statement/readme/USAGE.rst @@ -0,0 +1,55 @@ +**Italiano** + + +**Dichiarazione​ Intrastat** + + +Accedere a ​ Contabilità >> Dichiarazioni Intrastat ed utilizzare​ ​ il​ ​ tasto​ ​ Crea​ ​ per​ ​ creare​ ​ una​ ​ nuova​ ​ dichiarazione: + +Nella​ ​ parte​ ​ superiore​ ​ della​ ​ maschera,​ ​ inserire​ ​ i ​ ​ dati: + +- Azienda:​ ​ popolato​ ​ in​ ​ automatico​ ​ con​ ​ il​ ​ nome​ ​ della​ ​ company +- VAT​ ​ taxpayer:​ ​ la​ ​ partita​ ​ IVA,​ ​ popolata​ ​ in​ ​ automatico​ ​ con​ ​ il​ ​ nome​ ​ della​ ​ company +- Data​ ​ di​ ​ presentazione:​ ​ popolata​ ​ in​ ​ automatico​ ​ con​ ​ la​ ​ data​ ​ corrente +- Year: anno di presentazione, scelta da menù a tendina che visualizza gli anni fiscali configurati​ ​ a ​ ​ sistema +- Tipo periodo: l’orizzonte temporale temporale cui fa riferimento la dichiarazione, scelta da menù​ ​ a ​ ​ tendina​ ​ con​ ​ le​ ​ voci​ ​ “Mese”​ ​ o ​ ​ “Trimestre” +- Periodo: il periodo temporale cui fa riferimento la dichiarazione. In serire il numero del mese (es. 9 per settembre, se nel campo Tipo periodo è stato selezionato “Mese”, oppure in numero del trimestre (es: 1 per il trimestre genn.-marzo), se nel campo Tipo periodo è stato selezionato​ ​ “Trimestre” +- Flag “Vendite” e “Acquisti”: da selezionare in base alla tipologia di operazioni che si vogliono inserire​ ​ nella​ ​ dichiarazione +- Numero:​ ​ progressivo​ ​ della​ ​ dichiarazione,​ ​ proposto​ ​ in​ ​ automatico​ ​ dal​ ​ sistema +- Contenuto​ ​ degli​ ​ elenchi:​ ​ selezionare​ ​ la​ ​ voce​ ​ di​ ​ competenza​ ​ dal​ ​ menù​ ​ a ​ ​ tendina +- Casi​ ​ speciali:​ ​ selezionare​ ​ la​ ​ voce​ ​ di​ ​ competenza​ ​ dal​ ​ menù​ ​ a ​ ​ tendina +- Sezione​ ​ doganale:​ ​ selezionare​ ​ la​ ​ voce​ ​ di​ ​ riferimento,​ ​ dal​ ​ menù​ ​ a ​ ​ tendina + +.. figure:: static/img/dichiarazione.png + :alt: Dichiarazione + :width: 600 px + +Inseriti​ ​ e ​ ​ salvati​ ​ i ​ ​ dati,​ ​ utilizzare​ ​ il​ ​ tasto​ ​ Ricalcola​ ​ per​ ​ popolare​ ​ la​ ​ dichiarazione. Per​ ​ ciascun​ ​ tab​ ​ (”Acquisti”​ ​ e ​ ​ “Vendite”)​ ​ verranno​ ​ inserite​ ​ nelle​ ​ sezioni​ ​ di​ ​ riferimento: + +- Vendita: + - Vendita​ ​ Merci​ ​ - ​ ​ Section​ ​ 1 ​ ​ → ​ ​ fatture​ ​ di​ ​ vendita​ ​ di​ ​ merci + - Rettifica​ ​ Merci​ ​ - ​ ​ Section​ ​ 2 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ vendita​ ​ merci + - Vendita​ ​ Servizi​ ​ - ​ ​ Section​ ​ 3 ​ ​ → ​ ​ fatture​ ​ di​ ​ vendita​ ​ di​ ​ servizi + - Rettifica​ ​ Servizi​ ​ - ​ ​ Section​ ​ 4 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ vendita​ ​ servizi +- Acquisto: + - Acquisto​ ​ Merci​ ​ - ​ ​ Section​ ​ 1 ​ ​ → ​ ​ fatture​ ​ di​ ​ acquisto​ ​ di​ ​ merci + - Rettifica​ ​ Merci​ ​ - ​ ​ Section​ ​ 2 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ acquisto​ ​ merci + - Vendita​ ​ Servizi​ ​ - ​ ​ Section​ ​ 3 ​ ​ → ​ ​ fatture​ ​ di​ ​ acquisto​ ​ di​ ​ servizi + - Rettifica​ ​ Servizi​ ​ - ​ ​ Section​ ​ 4 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ acquisto​ ​ servizi + +I dati presi dalle fatture e dalle note credito indicate come soggette ad Intrastat, relative al periodo di riferimento. + +NB: i record presenti nei tab ​ Rettifica Merci - Section 2 e ​ Rettifica Servizi - Section 4 ​ , sia per gli Acquisti ​ ​ che​ ​ per​ ​ le​ ​ Vendite ​ , ​ ​ vanno​ ​ editati​ ​ per​ ​ inserire​ ​ i ​ ​ dati​ ​ obbligatori​ ​ mancanti. + +Inseriti i dati e slavata la dichiarazione, è possibile procedere all’elaborazione dei file da inviare all’Agenzia​ ​ delle​ ​ Dogane,​ ​ tramite​ ​ l’apposito​ ​ pulsante​ ​ “Export​ ​ File” + +.. figure:: static/img/export_file.png + :alt: Export file + +Il​ ​ pulsante​ ​ fa​ ​ partire​ ​ un​ ​ wizard,​ ​ che​ ​ permette​ ​ di​ ​ scegliere​ ​ quale​ ​ tipo​ ​ di​ ​ file​ ​ estrarre: + +- file​ ​ Invio​ ​ (complessivo) +- file​ ​ acquisti.cee +- file​ ​ cessioni.cee + +Il file potrà essere scaricato tramite l’apposito link mostrato nella maschera del wizard. Di seguito un esempio​ ​ per​ ​ il​ ​ download​ ​ del​ ​ file​ ​ cessioni.cee​ ​ (il​ ​ nome​ ​ del​ ​ file​ ​ da​ ​ scaricare​ ​ è ​ ​ SCAMBI.CEE) diff --git a/l10n_it_intrastat_statement/report/intrastat_mod1_bis.xml b/l10n_it_intrastat_statement/report/intrastat_mod1_bis.xml index 2985081c8bcd..60f407588075 100644 --- a/l10n_it_intrastat_statement/report/intrastat_mod1_bis.xml +++ b/l10n_it_intrastat_statement/report/intrastat_mod1_bis.xml @@ -1,142 +1,131 @@ - - - - + + - - - \ No newline at end of file + diff --git a/l10n_it_intrastat_statement/report/report_intrastat_mod1.xml b/l10n_it_intrastat_statement/report/report_intrastat_mod1.xml index a532233ca23c..457d6cb695eb 100644 --- a/l10n_it_intrastat_statement/report/report_intrastat_mod1.xml +++ b/l10n_it_intrastat_statement/report/report_intrastat_mod1.xml @@ -1,133 +1,141 @@ - + - - - - + + + +
+
+
+

+
+
+ + + + +
ELENCO RIEPILOGATIVO DELLE CESSIONI +
INTRACOMUNITARIE DI BENI E DEI SERVIZI RESI
+
+
+
+ + + + +
Mod.INTRA-1
+
+
+
+ + + + + + + + + + +
PERIODICITÀ ELENCO
PERIODO DI RIFERIMENTOMESE: ANNO: NUMERO DI RIFERIMENTO
+ TRIMESTRE: ANNO: +
+ + + LE INFORMAZIONI DELLE SEZIONI 1 e/o 3 SONO DA RIFERIRSI A (Barrare la casella): + + + + + + + + + +
SOLO 1° MESE DEL TRIMESTRE1° E 2° MESE DEL TRIMESTRE3° TRIMESTRE COMPLETO
+
+ + + + + + + + + + + + + + + + + + + +
SOGGETTO OBBLIGATO
PARTITA IVA:
PERSONA FISICA
COGNOME

NOME

SOGGETTO DIVERSO DA PERSONA FISICA
DENOMINAZIONE / RAGIONE SOCIALE >
BARRARE LA CASELLA NEL CASO NON SIANO STATI PRESENTATI IN PRECEDENZA ELENCHI RIEPILOGATIVI (Mod. INTRA-1 od INTRA-2)BARRARE LA CASELLA IN CASO DI CESSAZIONE DI ATTIVITÀ OVVERO DI VARIAZIONE DELLA PARTITA IVA
+ + + + + + + +
SOGGETTO DELEGATO
PARTITA IVA:
COGNOME E NOME o DENOMINAZIONE / RAGIONE SOCIALE
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DATI RIASSUNTIVI DELL'ELENCO
BENISEZIONE 1TOTALE RIGHE DETTAGLIOAMMONTARE COMPLESSIVO IN EUROBENISEZIONE 2TOTALE RIGHE DETTAGLIOAMMONTARE COMPLESSIVO IN EURO
SERVIZISEZIONE 3TOTALE RIGHE DETTAGLIOAMMONTARE COMPLESSIVO IN EUROSERVIZISEZIONE 4TOTALE RIGHE DETTAGLIOAMMONTARE COMPLESSIVO IN EURO
+ + + + + +
DATA __________________________________________________FIRMA __________________________________________________
+ + + + + + + + + +
SPAZIO RISERVATO ALL'UFFICIO
DATA PRESENTAZIONEPROTOCOLLO

+
+
+
+
+
diff --git a/l10n_it_intrastat_statement/report/report_intrastat_mod2.xml b/l10n_it_intrastat_statement/report/report_intrastat_mod2.xml index 78f199263529..2f5ab547952a 100644 --- a/l10n_it_intrastat_statement/report/report_intrastat_mod2.xml +++ b/l10n_it_intrastat_statement/report/report_intrastat_mod2.xml @@ -1,131 +1,140 @@ - - - - + + - - - + + + +
+
+
+

+
+
+ + + + +
ELENCO RIEPILOGATIVO DEGLI ACQUISTI +
INTRACOMUNITARI DI BENI E DEI SERVIZI RICEVUTI
+
+
+
+ + + + +
Mod.INTRA-2
+
+
+
+ + + + + + + + + + +
PERIODICITÀ ELENCO
PERIODO DI RIFERIMENTOMESE: ANNO: NUMERO DI RIFERIMENTO
TRIMESTRE: ANNO: +
+ + + LE INFORMAZIONI DELLE SEZIONI 1 e/o 3 SONO DA RIFERIRSI A (Barrare la casella): + + + + + + + + + +
SOLO 1° MESE DEL TRIMESTRE1° E 2° MESE DEL TRIMESTRE3° TRIMESTRE COMPLETO
+
+ + + + + + + + + + + + + + + + + + + +
SOGGETTO OBBLIGATO
PARTITA IVA:
PERSONA FISICA
COGNOME

NOME

SOGGETTO DIVERSO DA PERSONA FISICA
DENOMINAZIONE / RAGIONE SOCIALE
BARRARE LA CASELLA NEL CASO NON SIANO STATI PRESENTATI IN PRECEDENZA ELENCHI RIEPILOGATIVI (Mod. INTRA-1 od INTRA-2)BARRARE LA CASELLA IN CASO DI CESSAZIONE DI ATTIVITÀ OVVERO DI VARIAZIONE DELLA PARTITA IVA
+ + + + + + + +
SOGGETTO DELEGATO
PARTITA IVA:
COGNOME E NOME o DENOMINAZIONE / RAGIONE SOCIALE
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DATI RIASSUNTIVI DELL'ELENCO
BENISEZIONE 1TOTALE RIGHE DETTAGLIOAMMONTARE COMPLESSIVO IN EUROBENISEZIONE 2TOTALE RIGHE DETTAGLIOAMMONTARE COMPLESSIVO IN EURO
SERVIZISEZIONE 3TOTALE RIGHE DETTAGLIOAMMONTARE COMPLESSIVO IN EUROSERVIZISEZIONE 4TOTALE RIGHE DETTAGLIOAMMONTARE COMPLESSIVO IN EURO
+ + + + + +
DATA __________________________________________________FIRMA __________________________________________________
+ + + + + + + + + +
SPAZIO RISERVATO ALL'UFFICIO
DATA PRESENTAZIONEPROTOCOLLO

+
+
+
+
+ + diff --git a/l10n_it_intrastat_statement/report/report_intrastat_mod2_bis.xml b/l10n_it_intrastat_statement/report/report_intrastat_mod2_bis.xml index 2ad3a1458251..4b56239e7025 100644 --- a/l10n_it_intrastat_statement/report/report_intrastat_mod2_bis.xml +++ b/l10n_it_intrastat_statement/report/report_intrastat_mod2_bis.xml @@ -1,27 +1,18 @@ - - - + - - - + diff --git a/l10n_it_intrastat_statement/report/reports.xml b/l10n_it_intrastat_statement/report/reports.xml index 527146fc647f..895ce31ca9c3 100644 --- a/l10n_it_intrastat_statement/report/reports.xml +++ b/l10n_it_intrastat_statement/report/reports.xml @@ -1,7 +1,5 @@ - - No Header A4 Vertical 10 @@ -73,5 +71,4 @@ - diff --git a/l10n_it_intrastat_statement/security/rules.xml b/l10n_it_intrastat_statement/security/rules.xml index 2ce61ba936cf..5d33cc4b2047 100644 --- a/l10n_it_intrastat_statement/security/rules.xml +++ b/l10n_it_intrastat_statement/security/rules.xml @@ -1,11 +1,9 @@ - - - - Account INTRASTAT - Statement - multi company - - - ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] - - + + + Account INTRASTAT - Statement - multi company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + diff --git a/l10n_it_intrastat_statement/static/description/index.html b/l10n_it_intrastat_statement/static/description/index.html new file mode 100644 index 000000000000..ca66f7fe2763 --- /dev/null +++ b/l10n_it_intrastat_statement/static/description/index.html @@ -0,0 +1,474 @@ + + + + + + +ITA - Dichiarazione Intrastat + + + +
+

ITA - Dichiarazione Intrastat

+ + +

Beta License: LGPL-3 OCA/l10n-italy Translate me on Weblate Try me on Runbot

+

Italiano

+

Questo modulo si occupa di generare la Dichiarazione Intrastat e le relative stampe

+

Table of contents

+ +
+

Usage

+

Italiano

+

Dichiarazione​ Intrastat

+

Accedere a ​ Contabilità >> Dichiarazioni Intrastat ed utilizzare​ ​ il​ ​ tasto​ ​ Crea​ ​ per​ ​ creare​ ​ una​ ​ nuova​ ​ dichiarazione:

+

Nella​ ​ parte​ ​ superiore​ ​ della​ ​ maschera,​ ​ inserire​ ​ i ​ ​ dati:

+
    +
  • Azienda:​ ​ popolato​ ​ in​ ​ automatico​ ​ con​ ​ il​ ​ nome​ ​ della​ ​ company
  • +
  • VAT​ ​ taxpayer:​ ​ la​ ​ partita​ ​ IVA,​ ​ popolata​ ​ in​ ​ automatico​ ​ con​ ​ il​ ​ nome​ ​ della​ ​ company
  • +
  • Data​ ​ di​ ​ presentazione:​ ​ popolata​ ​ in​ ​ automatico​ ​ con​ ​ la​ ​ data​ ​ corrente
  • +
  • Year: anno di presentazione, scelta da menù a tendina che visualizza gli anni fiscali configurati​ ​ a ​ ​ sistema
  • +
  • Tipo periodo: l’orizzonte temporale temporale cui fa riferimento la dichiarazione, scelta da menù​ ​ a ​ ​ tendina​ ​ con​ ​ le​ ​ voci​ ​ “Mese”​ ​ o ​ ​ “Trimestre”
  • +
  • Periodo: il periodo temporale cui fa riferimento la dichiarazione. In serire il numero del mese (es. 9 per settembre, se nel campo Tipo periodo è stato selezionato “Mese”, oppure in numero del trimestre (es: 1 per il trimestre genn.-marzo), se nel campo Tipo periodo è stato selezionato​ ​ “Trimestre”
  • +
  • Flag “Vendite” e “Acquisti”: da selezionare in base alla tipologia di operazioni che si vogliono inserire​ ​ nella​ ​ dichiarazione
  • +
  • Numero:​ ​ progressivo​ ​ della​ ​ dichiarazione,​ ​ proposto​ ​ in​ ​ automatico​ ​ dal​ ​ sistema
  • +
  • Contenuto​ ​ degli​ ​ elenchi:​ ​ selezionare​ ​ la​ ​ voce​ ​ di​ ​ competenza​ ​ dal​ ​ menù​ ​ a ​ ​ tendina
  • +
  • Casi​ ​ speciali:​ ​ selezionare​ ​ la​ ​ voce​ ​ di​ ​ competenza​ ​ dal​ ​ menù​ ​ a ​ ​ tendina
  • +
  • Sezione​ ​ doganale:​ ​ selezionare​ ​ la​ ​ voce​ ​ di​ ​ riferimento,​ ​ dal​ ​ menù​ ​ a ​ ​ tendina
  • +
+
+Dichiarazione +
+

Inseriti​ ​ e ​ ​ salvati​ ​ i ​ ​ dati,​ ​ utilizzare​ ​ il​ ​ tasto​ ​ Ricalcola​ ​ per​ ​ popolare​ ​ la​ ​ dichiarazione. Per​ ​ ciascun​ ​ tab​ ​ (”Acquisti”​ ​ e ​ ​ “Vendite”)​ ​ verranno​ ​ inserite​ ​ nelle​ ​ sezioni​ ​ di​ ​ riferimento:

+
    +
  • Vendita: +- Vendita​ ​ Merci​ ​ - ​ ​ Section​ ​ 1 ​ ​ → ​ ​ fatture​ ​ di​ ​ vendita​ ​ di​ ​ merci +- Rettifica​ ​ Merci​ ​ - ​ ​ Section​ ​ 2 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ vendita​ ​ merci +- Vendita​ ​ Servizi​ ​ - ​ ​ Section​ ​ 3 ​ ​ → ​ ​ fatture​ ​ di​ ​ vendita​ ​ di​ ​ servizi +- Rettifica​ ​ Servizi​ ​ - ​ ​ Section​ ​ 4 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ vendita​ ​ servizi
  • +
  • Acquisto: +- Acquisto​ ​ Merci​ ​ - ​ ​ Section​ ​ 1 ​ ​ → ​ ​ fatture​ ​ di​ ​ acquisto​ ​ di​ ​ merci +- Rettifica​ ​ Merci​ ​ - ​ ​ Section​ ​ 2 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ acquisto​ ​ merci +- Vendita​ ​ Servizi​ ​ - ​ ​ Section​ ​ 3 ​ ​ → ​ ​ fatture​ ​ di​ ​ acquisto​ ​ di​ ​ servizi +- Rettifica​ ​ Servizi​ ​ - ​ ​ Section​ ​ 4 ​ ​ → ​ ​ note​ ​ credito​ ​ su​ ​ acquisto​ ​ servizi
  • +
+

I dati presi dalle fatture e dalle note credito indicate come soggette ad Intrastat, relative al periodo di riferimento.

+

NB: i record presenti nei tab ​ Rettifica Merci - Section 2 e ​ Rettifica Servizi - Section 4 ​ , sia per gli Acquisti ​ ​ che​ ​ per​ ​ le​ ​ Vendite ​ , ​ ​ vanno​ ​ editati​ ​ per​ ​ inserire​ ​ i ​ ​ dati​ ​ obbligatori​ ​ mancanti.

+

Inseriti i dati e slavata la dichiarazione, è possibile procedere all’elaborazione dei file da inviare all’Agenzia​ ​ delle​ ​ Dogane,​ ​ tramite​ ​ l’apposito​ ​ pulsante​ ​ “Export​ ​ File”

+
+Export file +
+

Il​ ​ pulsante​ ​ fa​ ​ partire​ ​ un​ ​ wizard,​ ​ che​ ​ permette​ ​ di​ ​ scegliere​ ​ quale​ ​ tipo​ ​ di​ ​ file​ ​ estrarre:

+
    +
  • file​ ​ Invio​ ​ (complessivo)
  • +
  • file​ ​ acquisti.cee
  • +
  • file​ ​ cessioni.cee
  • +
+

Il file potrà essere scaricato tramite l’apposito link mostrato nella maschera del wizard. Di seguito un esempio​ ​ per​ ​ il​ ​ download​ ​ del​ ​ file​ ​ cessioni.cee​ ​ (il​ ​ nome​ ​ del​ ​ file​ ​ da​ ​ scaricare​ ​ è ​ ​ SCAMBI.CEE)

+
+
+

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

+
    +
  • Openforce
  • +
  • Link IT srl
  • +
+
+
+

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

+

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

+
+
+
+ + diff --git a/l10n_it_intrastat_statement/static/img/agenzia_dogane.jpg b/l10n_it_intrastat_statement/static/img/agenzia_dogane.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b051e4244eaf95e68b219e1b6228336f78c4e913 GIT binary patch literal 14510 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 - view_form_intrastat_statement_company res.company @@ -13,5 +12,4 @@ - - \ No newline at end of file +
diff --git a/l10n_it_intrastat_statement/views/intrastat.xml b/l10n_it_intrastat_statement/views/intrastat.xml index 6da1feb59ebe..d7ed73cda499 100644 --- a/l10n_it_intrastat_statement/views/intrastat.xml +++ b/l10n_it_intrastat_statement/views/intrastat.xml @@ -1,10 +1,9 @@ - - + account.intrastat.statement.tree.view account.intrastat.statement @@ -22,7 +21,7 @@ - + account.intrastat.statement.form.view account.intrastat.statement @@ -40,16 +39,16 @@ - - + + - - - + + + @@ -65,25 +64,25 @@ - + - - + + - - + + - - + + - - + + @@ -113,25 +112,25 @@ - + - - + + - - + + - - + + - - + + @@ -170,14 +169,14 @@ account.intrastat.statement - + + @@ -366,7 +365,7 @@ - + @@ -389,7 +388,7 @@ - + @@ -588,7 +587,7 @@ - + @@ -611,7 +610,7 @@ - + diff --git a/l10n_it_intrastat_statement/wizard/__init__.py b/l10n_it_intrastat_statement/wizard/__init__.py index 66d1d65ce960..7279ae162569 100644 --- a/l10n_it_intrastat_statement/wizard/__init__.py +++ b/l10n_it_intrastat_statement/wizard/__init__.py @@ -1 +1,3 @@ +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + from . import export_file diff --git a/l10n_it_intrastat_statement/wizard/export_file.py b/l10n_it_intrastat_statement/wizard/export_file.py index 4b30588fe0fb..94c90905e4dd 100644 --- a/l10n_it_intrastat_statement/wizard/export_file.py +++ b/l10n_it_intrastat_statement/wizard/export_file.py @@ -1,23 +1,30 @@ -from openerp import models, api, fields +# Copyright 2019 Simone Rubino - Agile Business Group +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + import base64 -from openerp.tools.translate import _ +from odoo import api, fields, models, _ class AccountIntrastatExportFile(models.TransientModel): _name = "account.intrastat.export.file" - - name = fields.Char(string='File Name', readonly=True) - data = fields.Binary(string='File', readonly=True) + _description = "Intrastat export file" + + name = fields.Char( + string="File Name", + readonly=True) + data = fields.Binary( + string="File", + readonly=True) state = fields.Selection( - [ - ('choose', 'choose'), - ('get', 'get') - ], - string='State', default='choose') + selection=[ + ('choose', "Choose"), + ('get', "Get")], + string="State", + default='choose') @api.multi def act_getfile(self): - + self.ensure_one() statement_id = self.env.context.get('active_id') statement = self.env['account.intrastat.statement'].browse( statement_id) diff --git a/l10n_it_intrastat_statement/wizard/export_file_view.xml b/l10n_it_intrastat_statement/wizard/export_file_view.xml index 8722b81487e3..bfe54a26ed23 100644 --- a/l10n_it_intrastat_statement/wizard/export_file_view.xml +++ b/l10n_it_intrastat_statement/wizard/export_file_view.xml @@ -8,16 +8,16 @@
-

Export Complete

-

Here is the exported file:

+

Export Complete

+

Here is the exported file: