From 5f33346dc1ed3cbcb4eebf1e078f08d2f61f5679 Mon Sep 17 00:00:00 2001 From: eLBati Date: Sun, 21 Apr 2019 09:50:34 +0200 Subject: [PATCH 01/28] Renamed to l10n_it_vat_statement_communication Make terms translatable Make translations IMP README Merge l10n_it_vat_statement_communication_bridge ADD readme dir and translations IMP Quadro VP view with better selection of statements REF compute_from_liquidazioni for extensibility ADD chatter --- .../README.rst | 93 +++ .../__init__.py | 3 + .../__manifest__.py | 26 + .../data/comunicazioneIvp_2017_v1.xsd | 156 +++++ .../data/fornituraIvp_2017_v1.xsd | 31 + .../data/fornitura_v3.xsd | 32 + .../data/intestazioneIvp_2017_v1.xsd | 44 ++ .../data/typesDati_v3.xsd | 188 ++++++ .../data/typesProvincie_v3.xsd | 285 ++++++++ .../i18n/it.po | 564 ++++++++++++++++ .../models/__init__.py | 3 + .../models/comunicazione_liquidazione.py | 613 ++++++++++++++++++ .../readme/CONTRIBUTORS.rst | 2 + .../readme/DESCRIPTION.rst | 3 + .../readme/ROADMAP.rst | 15 + .../readme/USAGE.rst | 2 + .../security/ir.model.access.csv | 3 + .../security/security.xml | 13 + .../static/description/index.html | 435 +++++++++++++ .../views/comunicazione_liquidazione.xml | 204 ++++++ .../wizard/__init__.py | 3 + .../wizard/export_file.py | 49 ++ .../wizard/export_file_view.xml | 56 ++ 23 files changed, 2823 insertions(+) create mode 100644 l10n_it_vat_statement_communication/README.rst create mode 100644 l10n_it_vat_statement_communication/__init__.py create mode 100644 l10n_it_vat_statement_communication/__manifest__.py create mode 100644 l10n_it_vat_statement_communication/data/comunicazioneIvp_2017_v1.xsd create mode 100644 l10n_it_vat_statement_communication/data/fornituraIvp_2017_v1.xsd create mode 100644 l10n_it_vat_statement_communication/data/fornitura_v3.xsd create mode 100644 l10n_it_vat_statement_communication/data/intestazioneIvp_2017_v1.xsd create mode 100644 l10n_it_vat_statement_communication/data/typesDati_v3.xsd create mode 100644 l10n_it_vat_statement_communication/data/typesProvincie_v3.xsd create mode 100644 l10n_it_vat_statement_communication/i18n/it.po create mode 100644 l10n_it_vat_statement_communication/models/__init__.py create mode 100644 l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py create mode 100644 l10n_it_vat_statement_communication/readme/CONTRIBUTORS.rst create mode 100644 l10n_it_vat_statement_communication/readme/DESCRIPTION.rst create mode 100644 l10n_it_vat_statement_communication/readme/ROADMAP.rst create mode 100644 l10n_it_vat_statement_communication/readme/USAGE.rst create mode 100644 l10n_it_vat_statement_communication/security/ir.model.access.csv create mode 100644 l10n_it_vat_statement_communication/security/security.xml create mode 100644 l10n_it_vat_statement_communication/static/description/index.html create mode 100644 l10n_it_vat_statement_communication/views/comunicazione_liquidazione.xml create mode 100644 l10n_it_vat_statement_communication/wizard/__init__.py create mode 100644 l10n_it_vat_statement_communication/wizard/export_file.py create mode 100644 l10n_it_vat_statement_communication/wizard/export_file_view.xml diff --git a/l10n_it_vat_statement_communication/README.rst b/l10n_it_vat_statement_communication/README.rst new file mode 100644 index 000000000000..5171245d787d --- /dev/null +++ b/l10n_it_vat_statement_communication/README.rst @@ -0,0 +1,93 @@ +==================================== +ITA - Comunicazione liquidazione IVA +==================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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/10.0/l10n_it_vat_statement_communication + :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-10-0/l10n-italy-10-0-l10n_it_vat_statement_communication + :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/10.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Comunicazione liquidazione IVA ed export file XML, conforme alle specifiche dell''Agenzia delle Entrate. + +**Table of contents** + +.. contents:: + :local: + +Known issues / Roadmap +====================== + +Qualora questo modulo venisse installato in un DB dove ``l10n_it_comunicazione_liquidazione_iva`` è già installato, è necessario eseguire la sequente procedura: + +1 - Installare ``openupgradelib`` + +2 - Lanciare odoo con il paramentro ``shell`` + +3 - Eseguire i seguenti comandi + +>>> from openupgradelib import openupgrade +>>> openupgrade.update_module_names(env.cr, [('l10n_it_comunicazione_liquidazione_iva', 'l10n_it_vat_statement_communication'),], merge_modules=False,) +>>> env.cr.commit() + +4 - Riavviare odoo + +5 - Aggiornare ``l10n_it_vat_statement_communication`` + +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 di Camilli Alessandro + +Contributors +~~~~~~~~~~~~ + +* Alessandro Camilli +* Lorenzo Battistini + +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_vat_statement_communication/__init__.py b/l10n_it_vat_statement_communication/__init__.py new file mode 100644 index 000000000000..2673fe188464 --- /dev/null +++ b/l10n_it_vat_statement_communication/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models, wizard diff --git a/l10n_it_vat_statement_communication/__manifest__.py b/l10n_it_vat_statement_communication/__manifest__.py new file mode 100644 index 000000000000..d2bcda710f7d --- /dev/null +++ b/l10n_it_vat_statement_communication/__manifest__.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Alessandro Camilli - Openforce +# Copyright 2017-2019 Lorenzo Battistini +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). +{ + 'name': 'ITA - Comunicazione liquidazione IVA', + 'summary': 'Comunicazione liquidazione IVA ed export file xml' + 'conforme alle specifiche dell\'Agenzia delle Entrate', + 'version': '10.0.1.0.0', + 'category': 'Account', + 'author': "Openforce di Camilli Alessandro, " + "Odoo Community Association (OCA)", + 'website': 'https://github.com/OCA/l10n-italy', + 'license': 'LGPL-3', + 'depends': [ + 'account_vat_period_end_statement', + 'account_accountant', 'l10n_it_codici_carica', 'l10n_it_fiscalcode' + ], + 'data': [ + 'security/ir.model.access.csv', + 'views/comunicazione_liquidazione.xml', + 'wizard/export_file_view.xml', + 'security/security.xml', + ], + 'installable': True, +} diff --git a/l10n_it_vat_statement_communication/data/comunicazioneIvp_2017_v1.xsd b/l10n_it_vat_statement_communication/data/comunicazioneIvp_2017_v1.xsd new file mode 100644 index 000000000000..40e2770ba1a0 --- /dev/null +++ b/l10n_it_vat_statement_communication/data/comunicazioneIvp_2017_v1.xsd @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tipo semplice che identifica numeri positivi con 2 cifre decimali. La lunghezza massima prevista è di 16 caratteri, il separatore decimale previsto è la virgola. + + + + + + + diff --git a/l10n_it_vat_statement_communication/data/fornituraIvp_2017_v1.xsd b/l10n_it_vat_statement_communication/data/fornituraIvp_2017_v1.xsd new file mode 100644 index 000000000000..046f7c204899 --- /dev/null +++ b/l10n_it_vat_statement_communication/data/fornituraIvp_2017_v1.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/l10n_it_vat_statement_communication/data/fornitura_v3.xsd b/l10n_it_vat_statement_communication/data/fornitura_v3.xsd new file mode 100644 index 000000000000..e37eb55007cf --- /dev/null +++ b/l10n_it_vat_statement_communication/data/fornitura_v3.xsd @@ -0,0 +1,32 @@ + + + + + + + + + + Documento trasmesso + + + + + + + + + diff --git a/l10n_it_vat_statement_communication/data/intestazioneIvp_2017_v1.xsd b/l10n_it_vat_statement_communication/data/intestazioneIvp_2017_v1.xsd new file mode 100644 index 000000000000..20a35837f17c --- /dev/null +++ b/l10n_it_vat_statement_communication/data/intestazioneIvp_2017_v1.xsd @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l10n_it_vat_statement_communication/data/typesDati_v3.xsd b/l10n_it_vat_statement_communication/data/typesDati_v3.xsd new file mode 100644 index 000000000000..47e8ad0dee1c --- /dev/null +++ b/l10n_it_vat_statement_communication/data/typesDati_v3.xsd @@ -0,0 +1,188 @@ + + + + + + + + + Tipo semplice costituito da caratteri alfanumerici maiuscoli e dai caratteri: punto, virgola, apice, trattino, spazio, barra semplice, °, ^, ampersand, parentesi aperta e chiusa, doppie virgolette, barra rovesciata, la barra dritta, il più, le maiuscole accentate e la Ü. Tali caratteri non sono ammesi come primo carattere tranne: i numeri da 0 a 9, i caratteri maiuscoli da A a Z, il meno e le dopppie virgolette. + + + + + + + + Tipo semplice che identifica numeri naturali positivi e negativi con al massimo 16 cifre. + + + + + + + + + Tipo semplice che esprime una percentuale e dunque consente valori positivi non superiori a 100, con al massimo 2 cifre decimali. Il separatore decimale previsto è la virgola. + + + + + + + + + Tipo semplice che identifica numeri positivi con al massimo 5 cifre decimali. La lunghezza massima prevista è di 16 caratteri, il separatore decimale previsto è la virgola. + + + + + + + + + Tipo semplice che identifica numeri positivi con 2 cifre decimali. La lunghezza massima prevista è di 16 caratteri, il separatore decimale previsto è la virgola. + + + + + + + + + Tipo semplice che identifica i numeri naturali da 1 a 9. + + + + + + + + + Tipo semplice che identifica numeri naturali positivi con al massimo 16 cifre. + + + + + + + + Tipo semplice che identifica la partita IVA rispettandone i vincoli di struttura. + + + + + + + + + Tipo semplice che identifica un codice fiscale numerico rispettandone i vincoli di struttura. + + + + + + + + + Tipo semplice che identifica un codice fiscale provvisorio o alfanumerico rispettandone i vincoli di struttura. + + + + + + + + Tipo semplice che consente esclusivamente i valori 0 e 1. + + + + + + + + Tipo semplice che consente esclusivamente 12 caratteri con i valori 0 e 1. + + + + + + + + Tipo semplice che identifica una data nel formato ggmmaaaa. La data indicata non deve essere successiva alla data corrente. + + + + + + + + + Tipo semplice che identifica un anno nel formato aaaa. Sono ammessi anni dal 1800 al 2099. + + + + + + + + + Tipo semplice che identifica una data nel formato ggmmaaaa. + + + + + + + + + Tipo semplice che identifica una data nel formato mmaaaa. + + + + + + + + + Tipo semplice che identifica un elemento di tipo email + + + + + + + + Tipo semplice che identifica il numero di giorni in un anno e va da 1 a 365 + + + + + + + + + + Tipo semplice che identifica un elemento di tipo telefono + + + + + + + + Tipo semplice che identifica un elemento di tipo cap + + + + + + diff --git a/l10n_it_vat_statement_communication/data/typesProvincie_v3.xsd b/l10n_it_vat_statement_communication/data/typesProvincie_v3.xsd new file mode 100644 index 000000000000..26f8f7b8fe09 --- /dev/null +++ b/l10n_it_vat_statement_communication/data/typesProvincie_v3.xsd @@ -0,0 +1,285 @@ + + + + + + + + + Tipo semplice costituito dalle sigle delle provincie italiane in vigore. + + + + + + Tipo semplice costituito dalle sigle delle provincie italiane in vigore, dalle sigle delle provincie croate di Fiume, Pola e Zara e dalla sigla “EE” che indica un paese estero. + + + + + + Tipo semplice costituito dalle sigle delle provincie italiane in vigore e dalla sigla “EE” che indica un paese estero. + + + + + + + Elenco delle provincie italiane in vigore, valori ammessi: + + Agrigento AG + Alessandria AL + Ancona AN + Aosta AO + Ascoli Piceno AP + L'Aquila AQ + Arezzo AR + Asti AT + Avellino AV + Bari BA + Bergamo BG + Biella BI + Belluno BL + Benevento BN + Bologna BO + Brindisi BR + Brescia BS + Barletta-Andria-Trani BT + Bolzano BZ + Cagliari CA + Campobasso CB + Caserta CE + Chieti CH + Carbonia-Iglessias CI + Caltanissetta CL + Cuneo CN + Como CO + Cremona CR + Cosenza CS + Catania CT + Catanzaro CZ + Enna EN + Forlì-Cesena FC + Ferrara FE + Foggia FG + Firenze FI + Fermo FM + Frosinone FR + Genova GE + Gorizia GO + Grosseto GR + Imperia IM + Isernia IS + Crotone KR + Lecco LC + Lecce LE + Livorno LI + Lodi LO + Latina LT + Lucca LU + Monza e Brianza MB + Macerata MC + Messina ME + Milano MI + Mantova MN + Modena MO + Massa e Carrara MS + Matera MT + Napoli NA + Novara NO + Nuoro NU + Ogliastra OG + Oristano OR + Olbia-Tempio OT + Palermo PA + Piacenza PC + Padova PD + Pescara PE + Perugia PG + Pisa PI + Pordenone PN + Prato PO + Parma PR + Pistoia PT + Pesaro e Urbino PU + Pavia PV + Potenza PZ + Ravenna RA + Reggio Calabria RC + Reggio Emilia RE + Ragusa RG + Rieti RI + Roma RM + Rimini RN + Rovigo RO + Salerno SA + iena SI + Sondrio SO + La Spezia SP + Siracusa SR + Sassari SS + Savona SV + Taranto TA + Teramo TE + Trento TN + Torino TO + Trapani TP + Terni TR + Trieste TS + Treviso TV + Udine UD + Varese VA + Verbano-Cusio-Ossola VB + Vercelli VC + Venezia VE + Vicenza VI + Verona VR + Medio Campidano VS + Viterbo VT + Vibo Valentia VV + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fiume + + + + + Pola + + + + + Zara + + + + + + + + + + diff --git a/l10n_it_vat_statement_communication/i18n/it.po b/l10n_it_vat_statement_communication/i18n/it.po new file mode 100644 index 000000000000..6cdb7b77b685 --- /dev/null +++ b/l10n_it_vat_statement_communication/i18n/it.po @@ -0,0 +1,564 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_it_vat_statement_communication +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-04-22 15:22+0000\n" +"PO-Revision-Date: 2019-04-22 17:24+0200\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"Language: it\n" +"X-Generator: Poedit 2.0.6\n" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP10 Auto UE payments" +msgstr "VP10 Versamenti auto UE" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP11 Tax credits" +msgstr "VP11 Crediti d'imposta" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP12 Due interests for quarterly statements" +msgstr "VP12 Interessi dovuti per liquidazioni trimestrali" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP13 Due down payment" +msgstr "VP13 Acconto dovuto" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP14 VAT to pay" +msgstr "VP14 IVA da versare" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP2 Profitable operations total (without VAT)" +msgstr "VP2 Totale operazioni attive (al netto dell'IVA)" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP3 Unprofitable operations total (without VAT)" +msgstr "VP3 Totale operazioni passive (al netto dell'IVA)" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP4 Due VAT" +msgstr "VP4 IVA esigibile" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP5 Deducted VAT" +msgstr "VP5 IVA detratta" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP6 Debit VAT" +msgstr "VP6 IVA dovuta" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP7 Previous period debit, not grater than 25,82 €" +msgstr "VP7 Debito periodo precedente, non superiore a 25,82 €" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP8 Previous period credit" +msgstr "VP8 Credito periodo precedente" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP9 Previous year credit" +msgstr "VP9 Credito anno precedente" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid " or credit" +msgstr " o a credito" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_versamento_auto_UE +msgid "Auto UE payment" +msgstr "Versamento auto UE" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.wizard_liquidazione_export_file +msgid "Cancel" +msgstr "Annulla" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.wizard_liquidazione_export_file +msgid "Click on Export to generate VAT statement communication file." +msgstr "Fare click suEsporta per generare il file della comunicazione della liquidazione IVA." + +#. module: l10n_it_vat_statement_communication +#: selection:comunicazione.liquidazione.vp,exceptional_events:0 +msgid "Code 1" +msgstr "Code 1" + +#. module: l10n_it_vat_statement_communication +#: selection:comunicazione.liquidazione.vp,exceptional_events:0 +msgid "Code 9" +msgstr "Code 9" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_delegate_commitment +msgid "Commitment" +msgstr "Impegno" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_comunicazione_id +msgid "Communication" +msgstr "Comunicazione" + +#. module: l10n_it_vat_statement_communication +#: selection:comunicazione.liquidazione,delegate_commitment:0 +msgid "Communication prepared by sender" +msgstr "Comunicazione preparata da chi effettua l'invio" + +#. module: l10n_it_vat_statement_communication +#: selection:comunicazione.liquidazione,delegate_commitment:0 +msgid "Communication prepared by taxpayer" +msgstr "Comunicazione preparata dal contribuente" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_company_id +msgid "Company" +msgstr "Azienda" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_controller_vat +msgid "Controller TIN" +msgstr "P.IVA controllante" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_create_uid +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_export_file_create_uid +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_create_date +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_export_file_create_date +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_create_date +msgid "Created on" +msgstr "Creato il" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_iva_a_credito +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_iva_a_credito +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_iva_dovuta_credito +msgid "Credit VAT" +msgstr "IVA a credito" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_date_commitment +msgid "Date commitment" +msgstr "Data impegno" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_iva_dovuta_debito +msgid "Debit VAT" +msgstr "IVA a debito" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_form +msgid "Declarant" +msgstr "Dichiarante" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:173 +#, python-format +msgid "Declarant Fiscalcode is required. You can enable the section with different declarant option" +msgstr "Il codice fiscale del dichiarante è obbligatorio. È possibile abilitare la sezione con le varie opzioni per il dichiarante" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_declarant_different +msgid "Declarant different from taxpayer" +msgstr "Dichiarante diverso dal contribuente" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_declarant_sign +msgid "Declarant sign" +msgstr "Firma dichiarante" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_iva_detratta +msgid "Deducted VAT" +msgstr "IVA detratta" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_delegate_sign +msgid "Delegate sign" +msgstr "Firma incaricato" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:36 +#, python-format +msgid "Dichiarazione già esiste con identificativo {}" +msgstr "Dichiarazione già esiste con identificativo {}" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_display_name +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_export_file_display_name +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_display_name +msgid "Display Name" +msgstr "Nome Visualizzato" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_iva_esigibile +msgid "Due VAT" +msgstr "IVA esigibile" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_accounto_dovuto +msgid "Due down payment" +msgstr "Acconto dovuto" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_interessi_dovuti +msgid "Due interests for quarterly statements" +msgstr "Interessi dovuti per liquidazioni trimestrali" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_exceptional_events +msgid "Exceptional events" +msgstr "Eventi eccezionali" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.wizard_liquidazione_export_file +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.wizard_liquidazione_export_file_exit +msgid "Export" +msgstr "Esportazione" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.wizard_liquidazione_export_file +msgid "Export File" +msgstr "Esporta file" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model,name:l10n_it_vat_statement_communication.model_comunicazione_liquidazione_export_file +msgid "Export VAT statement communication XML file" +msgstr "Esporta il file XML della comunicazione della liquidazione IVA" + +#. module: l10n_it_vat_statement_communication +#: model:ir.actions.act_window,name:l10n_it_vat_statement_communication.action_liquidazione_export_file +msgid "Export VAT statement communication file" +msgstr "Esporta il file della comunicazione della liquidazione IVA" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_export_file_file_export +msgid "File" +msgstr "File" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_export_file_name +msgid "File Name" +msgstr "Nome File" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_declarant_fiscalcode +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_delegate_fiscalcode +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_taxpayer_fiscalcode +msgid "Fiscalcode" +msgstr "Codice fiscale" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_declarant_fiscalcode_company +msgid "Fiscalcode company" +msgstr "Codice fiscale azienda" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:183 +#, python-format +msgid "For group's statement, controller's TIN must be empty" +msgstr "Per la liquidazione del gruppo, la P.IVA del controllante deve essere vuota" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_form +msgid "Frontispiece" +msgstr "Frontespizio" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_form +msgid "General data" +msgstr "Dati generali" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_liquidazione_del_gruppo +msgid "Group's statement" +msgstr "Liquidazione del gruppo" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:186 +#, python-format +msgid "Group's statement not valid, as fiscal code is 16 characters" +msgstr "Liquidazione del gruppo non valida, visto che il codice fiscale è d 16 caratteri" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_export_file_id +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_id +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_id +msgid "ID" +msgstr "ID" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_identificativo +msgid "Identifier" +msgstr "Identificativo" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione___last_update +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_export_file___last_update +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp___last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_export_file_write_uid +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_write_uid +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_write_uid +msgid "Last Updated by" +msgstr "Ultima modifica di" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_export_file_write_date +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_write_date +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_write_date +msgid "Last Updated on" +msgstr "Ultima modifica il" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_last_month +msgid "Last month" +msgstr "Ultimo mese" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_month +msgid "Month" +msgstr "Mese" + +#. module: l10n_it_vat_statement_communication +#: selection:comunicazione.liquidazione.vp,period_type:0 +msgid "Monthly" +msgstr "Mensile" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_name +msgid "Name" +msgstr "Nome" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_period_type +msgid "Period type" +msgstr "Tipo periodo" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_credito_periodo_precedente +msgid "Previous period credit" +msgstr "Credito periodo precedente" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_debito_periodo_precedente +msgid "Previous period debit" +msgstr "Debito periodo precedente" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_credito_anno_precedente +msgid "Previous year credit" +msgstr "Credito anno precedente" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_imponibile_operazioni_attive +msgid "Profitable operations total (without VAT)" +msgstr "Totale operazioni attive (al netto dell'IVA)" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_quarter +msgid "Quarter" +msgstr "Trimestre" + +#. module: l10n_it_vat_statement_communication +#: selection:comunicazione.liquidazione.vp,period_type:0 +msgid "Quarterly" +msgstr "Trimestrale" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "Recompute" +msgstr "Ricalcolare" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "Reference period" +msgstr "Periodo di riferimento" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_codice_carica_id +msgid "Role code" +msgstr "Codice carica" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_form +msgid "Signature" +msgstr "Firma" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:192 +#, python-format +msgid "Specify role code of declarant" +msgstr "Specificare codice carica del dichiarante" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_form +msgid "Statement communication" +msgstr "Comunicazione liquidazione" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_tree +msgid "Statement communications" +msgstr "Comunicazioni liquidazioni" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_subcontracting +msgid "Subcontracting" +msgstr "Esternalizzazione" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_crediti_imposta +msgid "Tax credits" +msgstr "Crediti d'imposta" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "Tax statement" +msgstr "Liquidazione imposta" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_form +msgid "Taxpayer" +msgstr "Contribuente" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:165 +#, python-format +msgid "Taxpayer Fiscalcode is required. It's accepted codes with lenght 11 or 16 chars" +msgstr "Il codice fiscale del contribuente è obbligatorio. Sono accettati codici di 11 o 16 caratteri" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_form +msgid "Telematic communication commitment" +msgstr "Impegno comunicazione telematica" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "This will overwrite all VP* values" +msgstr "Questo sovrascriverà tutti i valori VP*" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_imponibile_operazioni_passive +msgid "Unprofitable operations total (without VAT)" +msgstr "Totale operazioni passive (al netto dell'IVA)" + +#. module: l10n_it_vat_statement_communication +#: model:ir.actions.act_window,name:l10n_it_vat_statement_communication.action_comunicazione_liquidazione +#: model:ir.model,name:l10n_it_vat_statement_communication.model_comunicazione_liquidazione +#: model:ir.ui.menu,name:l10n_it_vat_statement_communication.menu_comunicazione_liquidazione +msgid "VAT statement communication" +msgstr "Comunicazione liquidazione IVA" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model,name:l10n_it_vat_statement_communication.model_comunicazione_liquidazione_vp +msgid "VAT statement communication - VP table" +msgstr "Comunicazione liquidazione IVA. Quadro VP" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_liquidazioni_ids +msgid "VAT statements" +msgstr "Liquidazioni IVA" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VAT statements to communicate" +msgstr "Liquidazioni IVA da comunicare" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_iva_da_versare +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_vp_iva_da_versare +msgid "VAT to pay" +msgstr "IVA da versare" + +#. module: l10n_it_vat_statement_communication +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_form +#: model:ir.ui.view,arch_db:l10n_it_vat_statement_communication.view_comunicazione_liquidazione_vp_form +msgid "VP table" +msgstr "Quadro VP" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_quadri_vp_ids +msgid "VP tables" +msgstr "Quadri VP" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_taxpayer_vat +msgid "Vat" +msgstr "IVA" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:213 +#, python-format +msgid "With delegate in commitment section, you need to check 'delegate sign'" +msgstr "Con l'incaricato nella sezione impegno, è necessario selezionare 'firma incaricato'" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:204 +#, python-format +msgid "With intermediary fiscal code, you need to specify commitment code" +msgstr "Con il codice fiscale dell'intermediario, è necessario specificare il codice impegno" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:208 +#, python-format +msgid "With intermediary fiscal code, you need to specify commitment date" +msgstr "Con il codice fiscale dell'intermediario, è necessario specificare la data impegno" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:198 +#, python-format +msgid "With this role code, you need to specify fiscal code of declarant company" +msgstr "Con questo codice carica, è necessario specificare il codice fiscale dell'azienda dichiarante" + +#. module: l10n_it_vat_statement_communication +#: model:ir.model.fields,field_description:l10n_it_vat_statement_communication.field_comunicazione_liquidazione_year +msgid "Year" +msgstr "Anno" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:159 +#, python-format +msgid "Year required" +msgstr "Anno richiesto" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:47 +#, python-format +msgid "month" +msgstr "mese" + +#. module: l10n_it_vat_statement_communication +#: code:addons/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py:49 +#, python-format +msgid "quarter" +msgstr "trimestre" diff --git a/l10n_it_vat_statement_communication/models/__init__.py b/l10n_it_vat_statement_communication/models/__init__.py new file mode 100644 index 000000000000..07183b16d7c5 --- /dev/null +++ b/l10n_it_vat_statement_communication/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import comunicazione_liquidazione diff --git a/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py b/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py new file mode 100644 index 000000000000..80a91d4370d3 --- /dev/null +++ b/l10n_it_vat_statement_communication/models/comunicazione_liquidazione.py @@ -0,0 +1,613 @@ +# -*- coding: utf-8 -*- + + +from odoo import api, fields, models, _ +from datetime import datetime +from odoo.exceptions import ValidationError +from lxml import etree + + +NS_IV = 'urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp' +NS_XSI = 'http://www.w3.org/2001/XMLSchema-instance' +NS_LOCATION = 'urn:www.agenziaentrate.gov.it:specificheTecniche:sco:ivp' +NS_MAP = { + 'iv': NS_IV, + 'xsi': NS_XSI, +} +etree.register_namespace("vi", NS_IV) + + +class ComunicazioneLiquidazione(models.Model): + _inherit = ['mail.thread'] + _name = 'comunicazione.liquidazione' + _description = 'VAT statement communication' + + @api.model + def _default_company(self): + company_id = self._context.get( + 'company_id', self.env.user.company_id.id) + return company_id + + @api.constrains('identificativo') + def _check_identificativo(self): + domain = [('identificativo', '=', self.identificativo)] + dichiarazioni = self.search(domain) + if len(dichiarazioni) > 1: + raise ValidationError( + _("Dichiarazione già esiste con identificativo {}" + ).format(self.identificativo)) + + @api.multi + def _compute_name(self): + for dich in self: + name = "" + for quadro in dich.quadri_vp_ids: + if not name: + period_type = '' + if quadro.period_type == 'month': + period_type = _('month') + else: + period_type = _('quarter') + name += '{} {}'.format(str(dich.year), period_type) + if quadro.period_type == 'month': + name += ', {}'.format(str(quadro.month)) + else: + name += ', {}'.format(str(quadro.quarter)) + dich.name = name + + def _get_identificativo(self): + dichiarazioni = self.search([]) + if dichiarazioni: + return len(dichiarazioni) + 1 + else: + return 1 + + company_id = fields.Many2one( + 'res.company', string='Company', required=True, + default=_default_company) + identificativo = fields.Integer(string='Identifier', + default=_get_identificativo) + name = fields.Char(string='Name', compute="_compute_name") + year = fields.Integer(string='Year', required=True, size=4) + last_month = fields.Integer(string='Last month') + liquidazione_del_gruppo = fields.Boolean(string='Group\'s statement') + taxpayer_vat = fields.Char(string='Vat', required=True) + controller_vat = fields.Char(string='Controller TIN') + taxpayer_fiscalcode = fields.Char(string='Fiscalcode') + declarant_different = fields.Boolean( + string='Declarant different from taxpayer') + declarant_fiscalcode = fields.Char(string='Fiscalcode') + declarant_fiscalcode_company = fields.Char(string='Fiscalcode company') + codice_carica_id = fields.Many2one('codice.carica', string='Role code') + declarant_sign = fields.Boolean(string='Declarant sign', default=True) + + delegate_fiscalcode = fields.Char(string='Fiscalcode') + delegate_commitment = fields.Selection( + [('1', 'Communication prepared by taxpayer'), + ('2', 'Communication prepared by sender')], + string='Commitment') + delegate_sign = fields.Boolean(string='Delegate sign') + date_commitment = fields.Date(string='Date commitment') + quadri_vp_ids = fields.One2many( + 'comunicazione.liquidazione.vp', 'comunicazione_id', + string="VP tables") + iva_da_versare = fields.Float( + string='VAT to pay', readonly=True) + iva_a_credito = fields.Float( + string='Credit VAT', readonly=True) + + @api.model + def create(self, vals): + comunicazione = super(ComunicazioneLiquidazione, self).create(vals) + comunicazione._validate() + return comunicazione + + @api.multi + def write(self, vals): + super(ComunicazioneLiquidazione, self).write(vals) + for comunicazione in self: + comunicazione._validate() + return True + + @api.onchange('company_id') + def onchange_company_id(self): + if self.company_id: + if self.company_id.partner_id.vat: + self.taxpayer_vat = self.company_id.partner_id.vat[2:] + else: + self.taxpayer_vat = '' + self.taxpayer_fiscalcode = \ + self.company_id.partner_id.fiscalcode + + def get_export_xml(self): + self._validate() + x1_Fornitura = self._export_xml_get_fornitura() + + x1_1_Intestazione = self._export_xml_get_intestazione() + + attrs = { + 'identificativo': str(self.identificativo).zfill(5) + } + x1_2_Comunicazione = etree.Element( + etree.QName(NS_IV, "Comunicazione"), attrs) + x1_2_1_Frontespizio = self._export_xml_get_frontespizio() + x1_2_Comunicazione.append(x1_2_1_Frontespizio) + + x1_2_2_DatiContabili = etree.Element( + etree.QName(NS_IV, "DatiContabili")) + nr_modulo = 0 + for quadro in self.quadri_vp_ids: + nr_modulo += 1 + modulo = self.with_context( + nr_modulo=nr_modulo)._export_xml_get_dati_modulo(quadro) + x1_2_2_DatiContabili.append(modulo) + x1_2_Comunicazione.append(x1_2_2_DatiContabili) + # Composizione struttura xml con le varie sezioni generate + x1_Fornitura.append(x1_1_Intestazione) + x1_Fornitura.append(x1_2_Comunicazione) + + xml_string = etree.tostring( + x1_Fornitura, encoding='utf8', method='xml', pretty_print=True) + return xml_string + + def _validate(self): + """ + Controllo congruità dati della comunicazione + """ + # Anno obbligatorio + if not self.year: + raise ValidationError( + _("Year required")) + + # Codice Fiscale + if not self.taxpayer_fiscalcode \ + or len(self.taxpayer_fiscalcode) not in [11, 16]: + raise ValidationError( + _("Taxpayer Fiscalcode is required. It's accepted codes \ + with lenght 11 or 16 chars")) + + # Codice Fiscale dichiarante Obbligatorio se il codice fiscale + # del contribuente è di 11 caratteri + if self.taxpayer_fiscalcode and len(self.taxpayer_fiscalcode) == 11\ + and not self.declarant_fiscalcode: + raise ValidationError( + _("Declarant Fiscalcode is required. You can enable the \ + section with different declarant option")) + + # LiquidazioneGruppo: elemento opzionale, di tipo DatoCB_Type. + # Se presente non deve essere presente l'elemento PIVAControllante. + # Non può essere presente se l'elemento CodiceFiscale è lungo 16 + # caratteri. + if self.liquidazione_del_gruppo: + if self.controller_vat: + raise ValidationError( + _("For group's statement, controller's TIN must be empty")) + if len(self.taxpayer_fiscalcode) == 16: + raise ValidationError( + _("Group's statement not valid, as fiscal code is 16 " + "characters")) + # CodiceCaricaDichiarante + if self.declarant_fiscalcode: + if not self.codice_carica_id: + raise ValidationError( + _("Specify role code of declarant")) + # CodiceFiscaleSocieta: + # Obbligatori per codice carica 9 + if self.codice_carica_id and self.codice_carica_id.code == '9': + if not self.declarant_fiscalcode_company: + raise ValidationError( + _("With this role code, you need to specify fiscal code " + "of declarant company")) + # ImpegnoPresentazione:: + if self.delegate_fiscalcode: + if not self.delegate_commitment: + raise ValidationError( + _("With intermediary fiscal code, you need to specify " + "commitment code")) + if not self.date_commitment: + raise ValidationError( + _("With intermediary fiscal code, you need to specify " + "commitment date")) + # ImpegnoPresentazione:: + if self.delegate_fiscalcode and not self.delegate_sign: + raise ValidationError( + _("With delegate in commitment section, you need to check " + "'delegate sign'")) + return True + + def _export_xml_get_fornitura(self): + x1_Fornitura = etree.Element( + etree.QName(NS_IV, "Fornitura"), nsmap=NS_MAP) + return x1_Fornitura + + def _export_xml_validate(self): + return True + + def _export_xml_get_intestazione(self): + x1_1_Intestazione = etree.Element(etree.QName(NS_IV, "Intestazione")) + # Codice Fornitura + x1_1_1_CodiceFornitura = etree.SubElement( + x1_1_Intestazione, etree.QName(NS_IV, "CodiceFornitura")) + code = str(self.year)[-2:] + x1_1_1_CodiceFornitura.text = unicode('IVP{}'.format(code)) + # Codice Fiscale Dichiarante + if self.declarant_fiscalcode: + x1_1_2_CodiceFiscaleDichiarante = etree.SubElement( + x1_1_Intestazione, etree.QName(NS_IV, + "CodiceFiscaleDichiarante")) + x1_1_2_CodiceFiscaleDichiarante.text = unicode( + self.declarant_fiscalcode) + # Codice Carica + if self.codice_carica_id: + x1_1_3_CodiceCarica = etree.SubElement( + x1_1_Intestazione, etree.QName(NS_IV, "CodiceCarica")) + x1_1_3_CodiceCarica.text = unicode(self.codice_carica_id.code) + return x1_1_Intestazione + + def _export_xml_get_frontespizio(self): + x1_2_1_Frontespizio = etree.Element(etree.QName(NS_IV, "Frontespizio")) + # Codice Fiscale + x1_2_1_1_CodiceFiscale = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "CodiceFiscale")) + x1_2_1_1_CodiceFiscale.text = unicode(self.taxpayer_fiscalcode) \ + if self.taxpayer_fiscalcode else '' + # Anno Imposta + x1_2_1_2_AnnoImposta = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "AnnoImposta")) + x1_2_1_2_AnnoImposta.text = str(self.year) + # Partita IVA + x1_2_1_3_PartitaIVA = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "PartitaIVA")) + x1_2_1_3_PartitaIVA.text = self.taxpayer_vat + # PIVA Controllante + if self.controller_vat: + x1_2_1_4_PIVAControllante = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "PIVAControllante")) + x1_2_1_4_PIVAControllante.text = self.controller_vat + # Ultimo Mese + if self.last_month: + x1_2_1_5_UltimoMese = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "UltimoMese")) + x1_2_1_5_UltimoMese.text = self.last_month + # Liquidazione Gruppo + x1_2_1_6_LiquidazioneGruppo = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "LiquidazioneGruppo")) + x1_2_1_6_LiquidazioneGruppo.text = \ + '1' if self.liquidazione_del_gruppo else '0' + # CF Dichiarante + if self.declarant_fiscalcode: + x1_2_1_7_CFDichiarante = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "CFDichiarante")) + x1_2_1_7_CFDichiarante.text = self.declarant_fiscalcode + # CodiceCaricaDichiarante + if self.codice_carica_id: + x1_2_1_8_CodiceCaricaDichiarante = etree.SubElement( + x1_2_1_Frontespizio, + etree.QName(NS_IV, "CodiceCaricaDichiarante")) + x1_2_1_8_CodiceCaricaDichiarante.text = self.codice_carica_id.code + # CodiceFiscaleSocieta + if self.declarant_fiscalcode_company: + x1_2_1_9_CodiceFiscaleSocieta = etree.SubElement( + x1_2_1_Frontespizio, + etree.QName(NS_IV, "CodiceFiscaleSocieta")) + x1_2_1_9_CodiceFiscaleSocieta.text =\ + self.declarant_fiscalcode_company.code + # FirmaDichiarazione + x1_2_1_10_FirmaDichiarazione = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "FirmaDichiarazione")) + x1_2_1_10_FirmaDichiarazione.text = '1' if self.declarant_sign else '0' + # CFIntermediario + if self.delegate_fiscalcode: + x1_2_1_11_CFIntermediario = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "CFIntermediario")) + x1_2_1_11_CFIntermediario.text = self.delegate_fiscalcode + # ImpegnoPresentazione + if self.delegate_commitment: + x1_2_1_12_ImpegnoPresentazione = etree.SubElement( + x1_2_1_Frontespizio, etree.QName( + NS_IV, "ImpegnoPresentazione")) + x1_2_1_12_ImpegnoPresentazione.text = self.delegate_commitment + # DataImpegno + if self.date_commitment: + x1_2_1_13_DataImpegno = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "DataImpegno")) + x1_2_1_13_DataImpegno.text = datetime.strptime( + self.date_commitment, "%Y-%m-%d").strftime('%d%m%Y') + # FirmaIntermediario + if self.delegate_fiscalcode: + x1_2_1_14_FirmaIntermediario = etree.SubElement( + x1_2_1_Frontespizio, etree.QName(NS_IV, "FirmaIntermediario")) + x1_2_1_14_FirmaIntermediario.text =\ + '1' if self.delegate_sign else '0' + + return x1_2_1_Frontespizio + + def _export_xml_get_dati_modulo(self, quadro): + # 1.2.2.1 Modulo + xModulo = etree.Element( + etree.QName(NS_IV, "Modulo")) + # Numero Modulo + NumeroModulo = etree.SubElement( + xModulo, etree.QName(NS_IV, "NumeroModulo")) + NumeroModulo.text = str(self._context.get('nr_modulo', 1)) + + if quadro.period_type == 'month': + # 1.2.2.1.1 Mese + Mese = etree.SubElement( + xModulo, etree.QName(NS_IV, "Mese")) + Mese.text = str(quadro.month) + else: + # 1.2.2.1.2 Trimestre + Trimestre = etree.SubElement( + xModulo, etree.QName(NS_IV, "Trimestre")) + Trimestre.text = str(quadro.quarter) + # Da escludere per liquidazione del gruppo + if not self.liquidazione_del_gruppo: + # 1.2.2.1.3 Subfornitura + if quadro.subcontracting: + Subfornitura = etree.SubElement( + xModulo, etree.QName(NS_IV, "Subfornitura")) + Subfornitura.text = '1' if quadro.subcontracting \ + else '0' + # 1.2.2.1.4 EventiEccezionali + if quadro.exceptional_events: + EventiEccezionali = etree.SubElement( + xModulo, etree.QName(NS_IV, "EventiEccezionali")) + EventiEccezionali.text = quadro.exceptional_events + # 1.2.2.1.5 TotaleOperazioniAttive + TotaleOperazioniAttive = etree.SubElement( + xModulo, etree.QName(NS_IV, "TotaleOperazioniAttive")) + TotaleOperazioniAttive.text = "{:.2f}"\ + .format(quadro.imponibile_operazioni_attive).replace('.', ',') + # 1.2.2.1.6 TotaleOperazioniPassive + TotaleOperazioniPassive = etree.SubElement( + xModulo, etree.QName(NS_IV, "TotaleOperazioniPassive")) + TotaleOperazioniPassive.text = "{:.2f}"\ + .format(quadro.imponibile_operazioni_passive).replace('.', ',') + # 1.2.2.1.7 IvaEsigibile + IvaEsigibile = etree.SubElement( + xModulo, etree.QName(NS_IV, "IvaEsigibile")) + IvaEsigibile.text = "{:.2f}".format(quadro.iva_esigibile)\ + .replace('.', ',') + # 1.2.2.1.8 IvaDetratta + IvaDetratta = etree.SubElement( + xModulo, etree.QName(NS_IV, "IvaDetratta")) + IvaDetratta.text = "{:.2f}".format(quadro.iva_detratta)\ + .replace('.', ',') + # 1.2.2.1.9 IvaDovuta + if quadro.iva_dovuta_debito: + IvaDovuta = etree.SubElement( + xModulo, etree.QName(NS_IV, "IvaDovuta")) + IvaDovuta.text = "{:.2f}".format(quadro.iva_dovuta_debito)\ + .replace('.', ',') + # 1.2.2.1.10 IvaCredito + if quadro.iva_dovuta_credito: + IvaCredito = etree.SubElement( + xModulo, etree.QName(NS_IV, "IvaCredito")) + IvaCredito.text = "{:.2f}".format(quadro.iva_dovuta_credito)\ + .replace('.', ',') + # 1.2.2.1.11 DebitoPrecedente + DebitoPrecedente = etree.SubElement( + xModulo, etree.QName(NS_IV, "DebitoPrecedente")) + DebitoPrecedente.text = "{:.2f}".format( + quadro.debito_periodo_precedente).replace('.', ',') + # 1.2.2.1.12 CreditoPeriodoPrecedente + CreditoPeriodoPrecedente = etree.SubElement( + xModulo, etree.QName(NS_IV, "CreditoPeriodoPrecedente")) + CreditoPeriodoPrecedente.text = "{:.2f}".format( + quadro.credito_periodo_precedente).replace('.', ',') + # 1.2.2.1.13 CreditoAnnoPrecedente + CreditoAnnoPrecedente = etree.SubElement( + xModulo, etree.QName(NS_IV, "CreditoAnnoPrecedente")) + CreditoAnnoPrecedente.text = "{:.2f}".format( + quadro.credito_anno_precedente).replace('.', ',') + # 1.2.2.1.14 VersamentiAutoUE + VersamentiAutoUE = etree.SubElement( + xModulo, etree.QName(NS_IV, "VersamentiAutoUE")) + VersamentiAutoUE.text = "{:.2f}".format( + quadro.versamento_auto_UE).replace('.', ',') + # 1.2.2.1.15 CreditiImposta + CreditiImposta = etree.SubElement( + xModulo, etree.QName(NS_IV, "CreditiImposta")) + CreditiImposta.text = "{:.2f}".format( + quadro.crediti_imposta).replace('.', ',') + # 1.2.2.1.16 InteressiDovuti + InteressiDovuti = etree.SubElement( + xModulo, etree.QName(NS_IV, "InteressiDovuti")) + InteressiDovuti.text = "{:.2f}".format( + quadro.interessi_dovuti).replace('.', ',') + # 1.2.2.1.17 Acconto + Acconto = etree.SubElement( + xModulo, etree.QName(NS_IV, "Acconto")) + Acconto.text = "{:.2f}".format( + quadro.accounto_dovuto).replace('.', ',') + # 1.2.2.1.18 ImportoDaVersare + ImportoDaVersare = etree.SubElement( + xModulo, etree.QName(NS_IV, "ImportoDaVersare")) + ImportoDaVersare.text = "{:.2f}".format( + quadro.iva_da_versare).replace('.', ',') + # 1.2.2.1.19 ImportoACredito + ImportoACredito = etree.SubElement( + xModulo, etree.QName(NS_IV, "ImportoACredito")) + ImportoACredito.text = "{:.2f}".format( + quadro.iva_a_credito).replace('.', ',') + + return xModulo + + +class ComunicazioneLiquidazioneVp(models.Model): + _name = 'comunicazione.liquidazione.vp' + _description = 'VAT statement communication - VP table' + + @api.multi + @api.depends('iva_esigibile', 'iva_detratta') + def _compute_VP6_iva_dovuta_credito(self): + for quadro in self: + quadro.iva_dovuta_debito = 0 + quadro.iva_dovuta_credito = 0 + if quadro.iva_esigibile >= quadro.iva_detratta: + quadro.iva_dovuta_debito = quadro.iva_esigibile - \ + quadro.iva_detratta + else: + quadro.iva_dovuta_credito = quadro.iva_detratta - \ + quadro.iva_esigibile + + @api.multi + @api.depends('iva_dovuta_debito', 'iva_dovuta_credito', + 'debito_periodo_precedente', 'credito_periodo_precedente', + 'credito_anno_precedente', 'versamento_auto_UE', + 'crediti_imposta', 'interessi_dovuti', 'accounto_dovuto') + def _compute_VP14_iva_da_versare_credito(self): + """ + Tot Iva a debito = (VP6, col.1 + VP7 + VP12) + Tot Iva a credito = (VP6, col.2 + VP8 + VP9 + VP10 + VP11 + VP13) + """ + for quadro in self: + quadro.iva_da_versare = 0 + quadro.iva_a_credito = 0 + debito = ( + quadro.iva_dovuta_debito + quadro.debito_periodo_precedente + + quadro.interessi_dovuti + ) + credito = quadro.iva_dovuta_credito \ + + quadro.credito_periodo_precedente\ + + quadro.credito_anno_precedente \ + + quadro.versamento_auto_UE + quadro.crediti_imposta \ + + quadro.accounto_dovuto + if debito >= credito: + quadro.iva_da_versare = debito - credito + else: + quadro.iva_a_credito = credito - debito + + comunicazione_id = fields.Many2one('comunicazione.liquidazione', + string='Communication', readonly=True) + period_type = fields.Selection( + [('month', 'Monthly'), + ('quarter', 'Quarterly')], + string='Period type', default='month') + month = fields.Integer(string='Month', default=False) + quarter = fields.Integer(string='Quarter', default=False) + subcontracting = fields.Boolean(string='Subcontracting') + exceptional_events = fields.Selection( + [('1', 'Code 1'), ('9', 'Code 9')], string='Exceptional events') + + imponibile_operazioni_attive = fields.Float( + string='Profitable operations total (without VAT)') + imponibile_operazioni_passive = fields.Float( + string='Unprofitable operations total (without VAT)') + iva_esigibile = fields.Float(string='Due VAT') + iva_detratta = fields.Float(string='Deducted VAT') + iva_dovuta_debito = fields.Float( + string='Debit VAT', + compute="_compute_VP6_iva_dovuta_credito", store=True) + iva_dovuta_credito = fields.Float( + string='Credit VAT', + compute="_compute_VP6_iva_dovuta_credito", store=True) + debito_periodo_precedente = fields.Float( + string='Previous period debit') + credito_periodo_precedente = fields.Float( + string='Previous period credit') + credito_anno_precedente = fields.Float(string='Previous year credit') + versamento_auto_UE = fields.Float(string='Auto UE payment') + crediti_imposta = fields.Float(string='Tax credits') + interessi_dovuti = fields.Float( + string='Due interests for quarterly statements') + accounto_dovuto = fields.Float(string='Due down payment') + iva_da_versare = fields.Float( + string='VAT to pay', + compute="_compute_VP14_iva_da_versare_credito", store=True) + iva_a_credito = fields.Float( + string='Credit VAT', + compute="_compute_VP14_iva_da_versare_credito", store=True) + liquidazioni_ids = fields.Many2many( + 'account.vat.period.end.statement', + 'comunicazione_iva_liquidazioni_rel', + 'comunicazione_id', + 'liquidazione_id', + string='VAT statements') + + def _reset_values(self): + for quadro in self: + quadro.imponibile_operazioni_attive = 0 + quadro.imponibile_operazioni_passive = 0 + quadro.iva_esigibile = 0 + quadro.iva_detratta = 0 + quadro.debito_periodo_precedente = 0 + quadro.credito_periodo_precedente = 0 + quadro.credito_anno_precedente = 0 + quadro.versamento_auto_UE = 0 + quadro.crediti_imposta = 0 + quadro.interessi_dovuti = 0 + quadro.accounto_dovuto = 0 + + def _get_tax_context(self, period): + return { + 'from_date': period.date_start, + 'to_date': period.date_end, + } + + def _compute_imponibile_operazioni_attive(self, liq, period): + self.ensure_one() + debit_taxes = self.env['account.tax'] + for debit in liq.debit_vat_account_line_ids: + debit_taxes |= debit.tax_id + for debit_tax in debit_taxes: + tax = debit_taxes.with_context( + self._get_tax_context(period)).browse(debit_tax.id) + self.imponibile_operazioni_attive += ( + tax.base_balance) + + def _compute_imponibile_operazioni_passive(self, liq, period): + self.ensure_one() + credit_taxes = self.env['account.tax'] + for credit in liq.credit_vat_account_line_ids: + credit_taxes |= credit.tax_id + for credit_tax in credit_taxes: + tax = credit_taxes.with_context( + self._get_tax_context(period)).browse(credit_tax.id) + self.imponibile_operazioni_passive -= ( + tax.base_balance) + + @api.multi + @api.onchange('liquidazioni_ids') + def compute_from_liquidazioni(self): + + for quadro in self: + # Reset valori + quadro._reset_values() + + interests_account_id = quadro.comunicazione_id.company_id.\ + of_account_end_vat_statement_interest_account_id.id or False + + for liq in quadro.liquidazioni_ids: + + for period in liq.date_range_ids: + quadro._compute_imponibile_operazioni_attive(liq, period) + quadro._compute_imponibile_operazioni_passive(liq, period) + + # Iva esigibile + for vat_amount in liq.debit_vat_account_line_ids: + quadro.iva_esigibile += vat_amount.amount + # Iva detratta + for vat_amount in liq.credit_vat_account_line_ids: + quadro.iva_detratta += vat_amount.amount + # credito/debito periodo precedente + quadro.debito_periodo_precedente =\ + liq.previous_debit_vat_amount + quadro.credito_periodo_precedente =\ + liq.previous_credit_vat_amount + # Credito anno precedente (NON GESTITO) + # Versamenti auto UE (NON GESTITO) + # Crediti d’imposta (NON GESTITO) + # Da altri crediti e debiti calcolo: + # 1 - Interessi dovuti per liquidazioni trimestrali + # 2 - Decremento iva esigibile con righe positive + # 3 - Decremento iva detratta con righe negative + for line in liq.generic_vat_account_line_ids: + if interests_account_id and \ + (line.account_id.id == interests_account_id): + quadro.interessi_dovuti += (-1 * line.amount) + elif line.amount > 0: + quadro.iva_esigibile -= line.amount + else: + quadro.iva_detratta += line.amount diff --git a/l10n_it_vat_statement_communication/readme/CONTRIBUTORS.rst b/l10n_it_vat_statement_communication/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..c53452a8462e --- /dev/null +++ b/l10n_it_vat_statement_communication/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Alessandro Camilli +* Lorenzo Battistini diff --git a/l10n_it_vat_statement_communication/readme/DESCRIPTION.rst b/l10n_it_vat_statement_communication/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..886f9e0f186b --- /dev/null +++ b/l10n_it_vat_statement_communication/readme/DESCRIPTION.rst @@ -0,0 +1,3 @@ +Comunicazione liquidazione IVA ed export file XML, conforme alle specifiche dell''Agenzia delle Entrate. + +I dati possono essere caricati da liquidazioni IVA effettuate in odoo tramite `account_vat_period_end_statement` diff --git a/l10n_it_vat_statement_communication/readme/ROADMAP.rst b/l10n_it_vat_statement_communication/readme/ROADMAP.rst new file mode 100644 index 000000000000..5d4acfca4681 --- /dev/null +++ b/l10n_it_vat_statement_communication/readme/ROADMAP.rst @@ -0,0 +1,15 @@ +Qualora questo modulo venisse installato in un DB dove ``l10n_it_comunicazione_liquidazione_iva`` è già installato, è necessario eseguire la sequente procedura: + +1 - Installare ``openupgradelib`` + +2 - Lanciare odoo con il paramentro ``shell`` + +3 - Eseguire i seguenti comandi + +>>> from openupgradelib import openupgrade +>>> openupgrade.update_module_names(env.cr, [('l10n_it_comunicazione_liquidazione_iva', 'l10n_it_vat_statement_communication'),], merge_modules=False,) +>>> env.cr.commit() + +4 - Riavviare odoo + +5 - Aggiornare ``l10n_it_vat_statement_communication`` diff --git a/l10n_it_vat_statement_communication/readme/USAGE.rst b/l10n_it_vat_statement_communication/readme/USAGE.rst new file mode 100644 index 000000000000..9c293caad627 --- /dev/null +++ b/l10n_it_vat_statement_communication/readme/USAGE.rst @@ -0,0 +1,2 @@ +- Creare una nuova comunicazione. +- Nel "Quadro VP" aggiungere una voce selezionando in alto la liquidazione, precedentemente creata, da inserire. diff --git a/l10n_it_vat_statement_communication/security/ir.model.access.csv b/l10n_it_vat_statement_communication/security/ir.model.access.csv new file mode 100644 index 000000000000..4125502e6ef8 --- /dev/null +++ b/l10n_it_vat_statement_communication/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +account_comunicazione_liquidazione_manager,comunicazione.liquidazione,model_comunicazione_liquidazione,account.group_account_manager,1,1,1,1 +account_comunicazione_liquidazione_vp_manager,comunicazione.liquidazione.vp,model_comunicazione_liquidazione_vp,account.group_account_manager,1,1,1,1 diff --git a/l10n_it_vat_statement_communication/security/security.xml b/l10n_it_vat_statement_communication/security/security.xml new file mode 100644 index 000000000000..f4b1103c3a23 --- /dev/null +++ b/l10n_it_vat_statement_communication/security/security.xml @@ -0,0 +1,13 @@ + + + + + + VAT statement communication multi-company + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + + + diff --git a/l10n_it_vat_statement_communication/static/description/index.html b/l10n_it_vat_statement_communication/static/description/index.html new file mode 100644 index 000000000000..0cd73c73b301 --- /dev/null +++ b/l10n_it_vat_statement_communication/static/description/index.html @@ -0,0 +1,435 @@ + + + + + + +ITA - Comunicazione liquidazione IVA + + + +
+

ITA - Comunicazione liquidazione IVA

+ + +

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

+

Comunicazione liquidazione IVA ed export file XML, conforme alle specifiche dell’‘Agenzia delle Entrate.

+

Table of contents

+ +
+

Known issues / Roadmap

+

Qualora questo modulo venisse installato in un DB dove l10n_it_comunicazione_liquidazione_iva è già installato, è necessario eseguire la sequente procedura:

+

1 - Installare openupgradelib

+

2 - Lanciare odoo con il paramentro shell

+

3 - Eseguire i seguenti comandi

+
+>>> from openupgradelib import openupgrade
+>>> openupgrade.update_module_names(env.cr, [('l10n_it_comunicazione_liquidazione_iva', 'l10n_it_vat_statement_communication'),], merge_modules=False,)
+>>> env.cr.commit()
+
+

4 - Riavviare odoo

+

5 - Aggiornare l10n_it_vat_statement_communication

+
+
+

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 di Camilli Alessandro
  • +
+
+
+

Contributors

+
    +
  • Alessandro Camilli
  • +
  • Lorenzo Battistini
  • +
+
+
+

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_vat_statement_communication/views/comunicazione_liquidazione.xml b/l10n_it_vat_statement_communication/views/comunicazione_liquidazione.xml new file mode 100644 index 000000000000..12fa2ec09ed8 --- /dev/null +++ b/l10n_it_vat_statement_communication/views/comunicazione_liquidazione.xml @@ -0,0 +1,204 @@ + + + + + comunicazione.liquidazione.tree + comunicazione.liquidazione + + + + + + + + + + + comunicazione.liquidazione.form + comunicazione.liquidazione + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+
+ + + VAT statement communication + comunicazione.liquidazione + + + + + + + comunicazione.liquidazione.vp.form + comunicazione.liquidazione.vp + +
+ + + +