diff --git a/l10n_it_account/README.rst b/l10n_it_account/README.rst new file mode 100644 index 00000000000..fa13c020c62 --- /dev/null +++ b/l10n_it_account/README.rst @@ -0,0 +1,109 @@ +====================== +ITA - Contabilità base +====================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:71590caf9a8eecc55bd35ab5ec4abec74c99155bcb910ee20295990b86515e4e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png + :target: https://odoo-community.org/page/development-status + :alt: Production/Stable +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--italy-lightgray.png?logo=github + :target: https://github.com/OCA/l10n-italy/tree/18.0/l10n_it_account + :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-18-0/l10n-italy-18-0-l10n_it_account + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-italy&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +**Italiano** + +Modulo di supporto per la contabilità. + +Usato da moduli come l10n_it_vat_registries e +account_vat_period_end_statement + +Nota: lo script di migrazione non è stato testato. + +**English** + +Accounting-related modules helpers. + +Used by modules like l10n_it_vat_registries and +account_vat_period_end_statement + +Notice: the migration script hasn't been tested. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Agile Business Group +* Abstract + +Contributors +------------ + +- Davide Corio +- Lorenzo Battistini +- Alex Comba +- Sergio Zanchetta +- Gianmarco Conte - Dinamiche Aziendali Sr + +- Marco Colombo - Phi S.r.l. +- `TAKOBI `__: + + - Simone Rubino + +Other credits +------------- + +The development of this module has been financially supported by: + +- Odoo Italia Network + +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_account/__init__.py b/l10n_it_account/__init__.py new file mode 100644 index 00000000000..69f7babdfb1 --- /dev/null +++ b/l10n_it_account/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/l10n_it_account/__manifest__.py b/l10n_it_account/__manifest__.py new file mode 100644 index 00000000000..f8da1a26ea2 --- /dev/null +++ b/l10n_it_account/__manifest__.py @@ -0,0 +1,43 @@ +# Copyright 2015 Abstract srl () +# Copyright 2015-2017 Agile Business Group () +# Copyright 2015 Link It Spa () +# Copyright 2018 Sergio Zanchetta (Associazione PNLUG - Gruppo Odoo) +# Copyright 2018 Lorenzo Battistini +# Copyright 2020 Gianmarco Conte +# Copyright 2022 Marco Colombo +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "ITA - Contabilità base", + "summary": "Modulo base usato come dipendenza di altri moduli contabili", + "version": "18.0.1.0.0", + "development_status": "Production/Stable", + "category": "Hidden", + "author": "Agile Business Group, Abstract, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/l10n-italy", + "license": "AGPL-3", + "depends": [ + "account_fiscal_year", + "account_tax_balance", + "date_range", + "web", + "l10n_it", + ], + "data": [ + "views/account_menuitem.xml", + "views/partner_view.xml", + "views/res_config_settings_views.xml", + "reports/account_reports_view.xml", + ], + "assets": { + "web.report_assets_common": [ + "l10n_it_account/static/src/css/*.css", + ] + }, + "installable": True, + "external_dependencies": { + "python": [ + "openupgradelib", + ], + }, +} diff --git a/l10n_it_account/i18n/es_AR.po b/l10n_it_account/i18n/es_AR.po new file mode 100644 index 00000000000..6a4522d4964 --- /dev/null +++ b/l10n_it_account/i18n/es_AR.po @@ -0,0 +1,153 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_it_account +# +# Translators: +# Anael M , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-12-08 03:45+0000\n" +"PO-Revision-Date: 2017-12-08 03:45+0000\n" +"Last-Translator: Anael M , 2017\n" +"Language-Team: Spanish (Argentina) (https://www.transifex.com/oca/" +"teams/23907/es_AR/)\n" +"Language: es_AR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "" +"
\n" +" TIN: " +msgstr "" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "" +" / \n" +" " +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_account +msgid "Account" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_group +msgid "Account Group" +msgstr "" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.product_template_form_view +#: model_terms:ir.ui.view,arch_db:l10n_it_account.res_config_settings_view_form +#: model_terms:ir.ui.view,arch_db:l10n_it_account.view_partner_property_form +msgid "Accounting" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_group__account_ids +msgid "Accounts" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_account__account_balance_sign +#: model:ir.model.fields,field_description:l10n_it_account.field_account_group__account_balance_sign +msgid "Balance sign" +msgstr "" + +#. module: l10n_it_account +#. odoo-python +#: code:addons/l10n_it_account/models/account_account.py:0 +#, python-format +msgid "Balance sign's value can only be 1 or -1." +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_type_action_accounting +msgid "Date Range Types" +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_action_accounting +msgid "Date Ranges" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__deductible_balance +msgid "Deductible Balance" +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_generator_action +msgid "Generate Date Ranges" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__cee_type +msgid "Include in VAT register" +msgstr "" + +#. module: l10n_it_account +#. odoo-python +#: code:addons/l10n_it_account/models/account_group.py:0 +#, python-format +msgid "Incoherent balance signs for '{}' and its subgroups." +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_base_language_install +msgid "Install Language" +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.account_italian_localization +msgid "Italian Localization" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_res_lang +msgid "Languages" +msgstr "" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "Page:" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__parent_tax_ids +msgid "Parent Taxes" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields.selection,name:l10n_it_account.selection__account_tax__cee_type__purchase +msgid "Purchase" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields.selection,name:l10n_it_account.selection__account_tax__cee_type__sale +msgid "Sale" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_tax +msgid "Tax" +msgstr "Impuesto" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__undeductible_balance +msgid "Undeductible Balance" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,help:l10n_it_account.field_account_tax__cee_type +msgid "" +"Use in the case of tax with 'VAT integration'. This specifies the VAT " +"register (sales / purchases) where the tax must be computed." +msgstr "" diff --git a/l10n_it_account/i18n/it.po b/l10n_it_account/i18n/it.po new file mode 100644 index 00000000000..96981c780cd --- /dev/null +++ b/l10n_it_account/i18n/it.po @@ -0,0 +1,206 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_it_account +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0+e\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-04-21 10:38+0000\n" +"PO-Revision-Date: 2025-01-09 11:06+0000\n" +"Last-Translator: mymage \n" +"Language-Team: \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.6.2\n" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "" +"
\n" +" TIN: " +msgstr "" +"
\n" +" P. IVA: " + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "" +" / \n" +" " +msgstr "" +" / \n" +" " + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_account +msgid "Account" +msgstr "Conto" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_group +msgid "Account Group" +msgstr "Gruppo contabile" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.product_template_form_view +#: model_terms:ir.ui.view,arch_db:l10n_it_account.res_config_settings_view_form +#: model_terms:ir.ui.view,arch_db:l10n_it_account.view_partner_property_form +msgid "Accounting" +msgstr "Contabilità" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_group__account_ids +msgid "Accounts" +msgstr "Conti" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_account__account_balance_sign +#: model:ir.model.fields,field_description:l10n_it_account.field_account_group__account_balance_sign +msgid "Balance sign" +msgstr "Segno del saldo" + +#. module: l10n_it_account +#. odoo-python +#: code:addons/l10n_it_account/models/account_account.py:0 +#, python-format +msgid "Balance sign's value can only be 1 or -1." +msgstr "Il valore del segno per il saldo può essere solo 1 o -1." + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_type_action_accounting +msgid "Date Range Types" +msgstr "Tipi di intervallo date" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_action_accounting +msgid "Date Ranges" +msgstr "Intervalli date" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__deductible_balance +msgid "Deductible Balance" +msgstr "Saldo deducibile" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_generator_action +msgid "Generate Date Ranges" +msgstr "Generazione intervalli date" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__cee_type +msgid "Include in VAT register" +msgstr "Includere nel registro IVA" + +#. module: l10n_it_account +#. odoo-python +#: code:addons/l10n_it_account/models/account_group.py:0 +#, python-format +msgid "Incoherent balance signs for '{}' and its subgroups." +msgstr "Segni del saldo incoerenti per \"{}\" e i sottogruppi." + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_base_language_install +msgid "Install Language" +msgstr "Installa lingua" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.account_italian_localization +msgid "Italian Localization" +msgstr "Fiscalità italiana" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_res_lang +msgid "Languages" +msgstr "Lingue" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "Page:" +msgstr "Pagina:" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__parent_tax_ids +msgid "Parent Taxes" +msgstr "Imposte padre" + +#. module: l10n_it_account +#: model:ir.model.fields.selection,name:l10n_it_account.selection__account_tax__cee_type__purchase +msgid "Purchase" +msgstr "Acquisto" + +#. module: l10n_it_account +#: model:ir.model.fields.selection,name:l10n_it_account.selection__account_tax__cee_type__sale +msgid "Sale" +msgstr "Vendita" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_tax +msgid "Tax" +msgstr "Imposta" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__undeductible_balance +msgid "Undeductible Balance" +msgstr "Saldo non deducibile" + +#. module: l10n_it_account +#: model:ir.model.fields,help:l10n_it_account.field_account_tax__cee_type +msgid "" +"Use in the case of tax with 'VAT integration'. This specifies the VAT " +"register (sales / purchases) where the tax must be computed." +msgstr "" +"Utilizzare nel caso di imposta per \"integrazione IVA\". Specifica il " +"registro IVA (vendite / acquisti) nel quale deve essere calcolata l'imposta." + +#~ msgid "" +#~ "
\n" +#~ " TIN: " +#~ msgstr "" +#~ "
\n" +#~ " IVA: " + +#~ msgid "Date ranges" +#~ msgstr "Intervalli date" + +#~ msgid "" +#~ "
\n" +#~ " TIN: " +#~ msgstr "" +#~ "
\n" +#~ " IVA:" + +#~ msgid "Account Type" +#~ msgstr "Tipo conto" + +#, python-format +#~ msgid "" +#~ "Can't set '{}' as parent for group '{}'.\n" +#~ "{}" +#~ msgstr "" +#~ "Impossibile impostare \"{}\" come padre per il gruppo \"{}\".\n" +#~ "{}" + +#~ msgid "Display Name" +#~ msgstr "Nome visualizzato" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Last Modified on" +#~ msgstr "Ultima modifica il" + +#~ msgid "A recursion in '{}' parents has been found." +#~ msgstr "Trovata una ricorsività in \"{}\" padre." + +#~ msgid "Assigned accounts." +#~ msgstr "Conti assegnati." + +#~ msgid "Cannot link accounts of different types to group '{}'." +#~ msgstr "Impossibile collegare conti di tipo diverso al gruppo '{}'." + +#~ msgid "Pag:" +#~ msgstr "Pag:" diff --git a/l10n_it_account/i18n/l10n_it_account.pot b/l10n_it_account/i18n/l10n_it_account.pot new file mode 100644 index 00000000000..5fcf5704112 --- /dev/null +++ b/l10n_it_account/i18n/l10n_it_account.pot @@ -0,0 +1,147 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_it_account +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "" +"
\n" +" TIN: " +msgstr "" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "" +" / \n" +" " +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_account +msgid "Account" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_group +msgid "Account Group" +msgstr "" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.product_template_form_view +#: model_terms:ir.ui.view,arch_db:l10n_it_account.res_config_settings_view_form +#: model_terms:ir.ui.view,arch_db:l10n_it_account.view_partner_property_form +msgid "Accounting" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_group__account_ids +msgid "Accounts" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_account__account_balance_sign +#: model:ir.model.fields,field_description:l10n_it_account.field_account_group__account_balance_sign +msgid "Balance sign" +msgstr "" + +#. module: l10n_it_account +#. odoo-python +#: code:addons/l10n_it_account/models/account_account.py:0 +#, python-format +msgid "Balance sign's value can only be 1 or -1." +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_type_action_accounting +msgid "Date Range Types" +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_action_accounting +msgid "Date Ranges" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__deductible_balance +msgid "Deductible Balance" +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_generator_action +msgid "Generate Date Ranges" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__cee_type +msgid "Include in VAT register" +msgstr "" + +#. module: l10n_it_account +#. odoo-python +#: code:addons/l10n_it_account/models/account_group.py:0 +#, python-format +msgid "Incoherent balance signs for '{}' and its subgroups." +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_base_language_install +msgid "Install Language" +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.account_italian_localization +msgid "Italian Localization" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_res_lang +msgid "Languages" +msgstr "" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "Page:" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__parent_tax_ids +msgid "Parent Taxes" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields.selection,name:l10n_it_account.selection__account_tax__cee_type__purchase +msgid "Purchase" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields.selection,name:l10n_it_account.selection__account_tax__cee_type__sale +msgid "Sale" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_tax +msgid "Tax" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__undeductible_balance +msgid "Undeductible Balance" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,help:l10n_it_account.field_account_tax__cee_type +msgid "" +"Use in the case of tax with 'VAT integration'. This specifies the VAT " +"register (sales / purchases) where the tax must be computed." +msgstr "" diff --git a/l10n_it_account/i18n/sl.po b/l10n_it_account/i18n/sl.po new file mode 100644 index 00000000000..e257867c6ac --- /dev/null +++ b/l10n_it_account/i18n/sl.po @@ -0,0 +1,156 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_it_account +# +# Translators: +# OCA Transbot , 2017 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-07-26 14:46+0000\n" +"PO-Revision-Date: 2017-07-26 14:46+0000\n" +"Last-Translator: OCA Transbot , 2017\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " +"n%100==4 ? 2 : 3);\n" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "" +"
\n" +" TIN: " +msgstr "" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "" +" / \n" +" " +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_account +msgid "Account" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_group +msgid "Account Group" +msgstr "" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.product_template_form_view +#: model_terms:ir.ui.view,arch_db:l10n_it_account.res_config_settings_view_form +#: model_terms:ir.ui.view,arch_db:l10n_it_account.view_partner_property_form +msgid "Accounting" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_group__account_ids +msgid "Accounts" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_account__account_balance_sign +#: model:ir.model.fields,field_description:l10n_it_account.field_account_group__account_balance_sign +msgid "Balance sign" +msgstr "" + +#. module: l10n_it_account +#. odoo-python +#: code:addons/l10n_it_account/models/account_account.py:0 +#, python-format +msgid "Balance sign's value can only be 1 or -1." +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_type_action_accounting +msgid "Date Range Types" +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_action_accounting +msgid "Date Ranges" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__deductible_balance +msgid "Deductible Balance" +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.menu_date_range_generator_action +msgid "Generate Date Ranges" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__cee_type +msgid "Include in VAT register" +msgstr "" + +#. module: l10n_it_account +#. odoo-python +#: code:addons/l10n_it_account/models/account_group.py:0 +#, python-format +msgid "Incoherent balance signs for '{}' and its subgroups." +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_base_language_install +msgid "Install Language" +msgstr "" + +#. module: l10n_it_account +#: model:ir.ui.menu,name:l10n_it_account.account_italian_localization +msgid "Italian Localization" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_res_lang +msgid "Languages" +msgstr "" + +#. module: l10n_it_account +#: model_terms:ir.ui.view,arch_db:l10n_it_account.internal_layout +msgid "Page:" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__parent_tax_ids +msgid "Parent Taxes" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields.selection,name:l10n_it_account.selection__account_tax__cee_type__purchase +msgid "Purchase" +msgstr "Nabava" + +#. module: l10n_it_account +#: model:ir.model.fields.selection,name:l10n_it_account.selection__account_tax__cee_type__sale +msgid "Sale" +msgstr "Prodaja" + +#. module: l10n_it_account +#: model:ir.model,name:l10n_it_account.model_account_tax +msgid "Tax" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,field_description:l10n_it_account.field_account_tax__undeductible_balance +msgid "Undeductible Balance" +msgstr "" + +#. module: l10n_it_account +#: model:ir.model.fields,help:l10n_it_account.field_account_tax__cee_type +msgid "" +"Use in the case of tax with 'VAT integration'. This specifies the VAT " +"register (sales / purchases) where the tax must be computed." +msgstr "" + +#~ msgid "Pag:" +#~ msgstr "Plač:" diff --git a/l10n_it_account/migrations/18.0.1.0.0/post-migration.py b/l10n_it_account/migrations/18.0.1.0.0/post-migration.py new file mode 100644 index 00000000000..33178c93b43 --- /dev/null +++ b/l10n_it_account/migrations/18.0.1.0.0/post-migration.py @@ -0,0 +1,49 @@ +from openupgradelib import openupgrade +from psycopg2 import sql + +from odoo import SUPERUSER_ID, api + +OLD_MODULE_NAME = "l10n_it_account_tax_kind" +MODEL = "account.tax" +OLD_MODEL = "account.tax.kind" +RENAMED_FIELDS = [ + ( + "law_reference", + "l10n_it_law_reference", + ), +] + + +def migrate(cr, version): + env = api.Environment(cr, SUPERUSER_ID, {}) + if openupgrade.is_module_installed(env.cr, OLD_MODULE_NAME): + openupgrade.logged_query( + env.cr, + sql.SQL(f""" + UPDATE + {MODEL.replace(".", "_")} + SET + l10n_it_exempt_reason = kind_id.code + FROM + {OLD_MODEL.replace(".", "_")} AS kind + WHERE + {MODEL.replace(".", "_")}.kind_id = kind.id + AND {MODEL.replace(".", "_")}.kind_id IS NOT NULL + """), + ) + + field_spec = [] + for renamed_field in RENAMED_FIELDS: + old_field, new_field = renamed_field + field_spec.append( + ( + MODEL, + MODEL.replace(".", "_"), + old_field, + new_field, + ) + ) + openupgrade.rename_fields( + env, + field_spec, + ) diff --git a/l10n_it_account/models/__init__.py b/l10n_it_account/models/__init__.py new file mode 100644 index 00000000000..bf09a2c3496 --- /dev/null +++ b/l10n_it_account/models/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import account_tax diff --git a/l10n_it_account/models/account_tax.py b/l10n_it_account/models/account_tax.py new file mode 100644 index 00000000000..afb6a1d54c1 --- /dev/null +++ b/l10n_it_account/models/account_tax.py @@ -0,0 +1,222 @@ +# Copyright 2022 Simone Rubino - TAKOBI +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class AccountTax(models.Model): + _inherit = "account.tax" + + cee_type = fields.Selection( + [("sale", "Sale"), ("purchase", "Purchase")], + string="Include in VAT register", + help="Use in the case of tax with 'VAT integration'. This " + "specifies the VAT register (sales / purchases) where the " + "tax must be computed.", + ) + parent_tax_ids = fields.Many2many( + "account.tax", + "account_tax_filiation_rel", + "child_tax", + "parent_tax", + string="Parent Taxes", + ) + + deductible_balance = fields.Float(compute="_compute_deductible_balance") + undeductible_balance = fields.Float(compute="_compute_undeductible_balance") + + @api.depends_context( + "from_date", + "to_date", + "company_ids", + "target_move", + ) + def _compute_deductible_balance(self): + for tax in self: + account_ids = ( + tax.mapped("invoice_repartition_line_ids.account_id") + | tax.mapped("refund_repartition_line_ids.account_id") + ).ids + balance_regular = tax.compute_balance( + tax_or_base="tax", financial_type="regular", account_ids=account_ids + ) + balance_refund = tax.compute_balance( + tax_or_base="tax", financial_type="refund", account_ids=account_ids + ) + tax.deductible_balance = balance_regular + balance_refund + + @api.depends_context( + "from_date", + "to_date", + "company_ids", + "target_move", + ) + def _compute_undeductible_balance(self): + for tax in self: + account_ids = ( + tax.mapped("invoice_repartition_line_ids.account_id") + | tax.mapped("refund_repartition_line_ids.account_id") + ).ids + balance_regular = tax.compute_balance( + tax_or_base="tax", + financial_type="regular", + exclude_account_ids=account_ids, + ) + balance_refund = tax.compute_balance( + tax_or_base="tax", + financial_type="refund", + exclude_account_ids=account_ids, + ) + tax.undeductible_balance = balance_regular + balance_refund + + def compute_balance( + self, + tax_or_base="tax", + financial_type=None, + account_ids=None, + exclude_account_ids=None, + ): + balance = super().compute_balance( + tax_or_base=tax_or_base, + financial_type=financial_type, + ) + if account_ids is not None: + domain = self.get_move_lines_domain( + tax_or_base=tax_or_base, + financial_type=financial_type, + account_ids=account_ids, + ) + balance = self.env["account.move.line"].read_group(domain, ["balance"], [])[ + 0 + ]["balance"] + balance = balance and -balance or 0 + elif exclude_account_ids is not None: + domain = self.get_move_lines_domain( + tax_or_base=tax_or_base, + financial_type=financial_type, + exclude_account_ids=exclude_account_ids, + ) + balance = self.env["account.move.line"].read_group(domain, ["balance"], [])[ + 0 + ]["balance"] + balance = balance and -balance or 0 + return balance + + def get_move_lines_domain( + self, + tax_or_base="tax", + financial_type=None, + account_ids=None, + exclude_account_ids=None, + ): + domain = super().get_move_lines_domain( + tax_or_base=tax_or_base, + financial_type=financial_type, + ) + if account_ids is not None: + domain.append( + ( + "account_id", + "in", + account_ids, + ) + ) + elif exclude_account_ids is not None: + domain.append( + ( + "account_id", + "not in", + exclude_account_ids, + ) + ) + return domain + + def _get_tax_amount(self): + self.ensure_one() + res = 0.0 + if self.amount_type == "group": + for child in self.children_tax_ids: + res += child.amount + else: + res = self.amount + return res + + def _get_tax_name(self): + self.ensure_one() + name = self.name + if self.parent_tax_ids and len(self.parent_tax_ids) == 1: + name = self.parent_tax_ids[0].name + return name + + def _compute_totals_tax(self, data): + """ + Args: + data: date range, journals and registry_type + Returns: + A tuple: (tax_name, base, tax, deductible, undeductible) + + """ + self.ensure_one() + context = { + "from_date": data["from_date"], + "to_date": data["to_date"], + } + registry_type = data.get("registry_type", "customer") + if data.get("journal_ids"): + context["vat_registry_journal_ids"] = data["journal_ids"] + + tax = self.env["account.tax"].with_context(**context).browse(self.id) + tax_name = tax._get_tax_name() + if not tax.children_tax_ids: + base_balance = tax.base_balance + balance = tax.balance + deductible_balance = tax.deductible_balance + undeductible_balance = tax.undeductible_balance + if registry_type == "supplier": + base_balance = -base_balance + balance = -balance + deductible_balance = -deductible_balance + undeductible_balance = -undeductible_balance + return ( + tax_name, + base_balance, + balance, + deductible_balance, + undeductible_balance, + ) + else: + # TODO remove? + base_balance = tax.base_balance + + tax_balance = 0 + deductible = 0 + undeductible = 0 + for child in tax.children_tax_ids: + child_balance = child.balance + if ( + data["registry_type"] == "customer" and child.cee_type == "sale" + ) or ( + data["registry_type"] == "supplier" and child.cee_type == "purchase" + ): + # Prendo la parte di competenza di ogni registro e lo + # sommo sempre + child_balance = child_balance + + elif child.cee_type: + continue + + tax_balance += child_balance + account_ids = ( + child.mapped("invoice_repartition_line_ids.account_id") + | child.mapped("refund_repartition_line_ids.account_id") + ).ids + if account_ids: + deductible += child_balance + else: + undeductible += child_balance + if registry_type == "supplier": + base_balance = -base_balance + tax_balance = -tax_balance + deductible = -deductible + undeductible = -undeductible + return (tax_name, base_balance, tax_balance, deductible, undeductible) diff --git a/l10n_it_account/pyproject.toml b/l10n_it_account/pyproject.toml new file mode 100644 index 00000000000..4231d0cccb3 --- /dev/null +++ b/l10n_it_account/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/l10n_it_account/readme/CONTRIBUTORS.md b/l10n_it_account/readme/CONTRIBUTORS.md new file mode 100644 index 00000000000..9fda3d53a89 --- /dev/null +++ b/l10n_it_account/readme/CONTRIBUTORS.md @@ -0,0 +1,9 @@ +- Davide Corio +- Lorenzo Battistini \<\> +- Alex Comba \<\> +- Sergio Zanchetta \<\> +- Gianmarco Conte - Dinamiche Aziendali Sr + \<\> +- Marco Colombo - Phi S.r.l. \<\> +- [TAKOBI](https://takobi.online): + - Simone Rubino \<\> diff --git a/l10n_it_account/readme/CREDITS.md b/l10n_it_account/readme/CREDITS.md new file mode 100644 index 00000000000..4371e5a71a0 --- /dev/null +++ b/l10n_it_account/readme/CREDITS.md @@ -0,0 +1,3 @@ +The development of this module has been financially supported by: + +- Odoo Italia Network diff --git a/l10n_it_account/readme/DESCRIPTION.md b/l10n_it_account/readme/DESCRIPTION.md new file mode 100644 index 00000000000..0b47c4d74e2 --- /dev/null +++ b/l10n_it_account/readme/DESCRIPTION.md @@ -0,0 +1,17 @@ +**Italiano** + +Modulo di supporto per la contabilità. + +Usato da moduli come l10n_it_vat_registries e +account_vat_period_end_statement + +Nota: lo script di migrazione non è stato testato. + +**English** + +Accounting-related modules helpers. + +Used by modules like l10n_it_vat_registries and +account_vat_period_end_statement + +Notice: the migration script hasn't been tested. diff --git a/l10n_it_account/reports/account_reports_view.xml b/l10n_it_account/reports/account_reports_view.xml new file mode 100644 index 00000000000..634878bc23a --- /dev/null +++ b/l10n_it_account/reports/account_reports_view.xml @@ -0,0 +1,148 @@ + + + + + Italian Accounting Reports A4 Portrait + + A4 + 0 + 0 + Portrait + 35 + 15 + 5 + 5 + + 30 + 90 + + + + Italian Accounting Reports A4 Landscape + + A4 + 0 + 0 + Landscape + 35 + 15 + 5 + 5 + + 30 + 90 + + + + + + diff --git a/l10n_it_account/static/description/icon.png b/l10n_it_account/static/description/icon.png new file mode 100644 index 00000000000..2aa4dd28bdc Binary files /dev/null and b/l10n_it_account/static/description/icon.png differ diff --git a/l10n_it_account/static/description/index.html b/l10n_it_account/static/description/index.html new file mode 100644 index 00000000000..d695f90bf5f --- /dev/null +++ b/l10n_it_account/static/description/index.html @@ -0,0 +1,451 @@ + + + + + +ITA - Contabilità base + + + +
+

ITA - Contabilità base

+ + +

Production/Stable License: AGPL-3 OCA/l10n-italy Translate me on Weblate Try me on Runboat

+

Italiano

+

Modulo di supporto per la contabilità.

+

Usato da moduli come l10n_it_vat_registries e +account_vat_period_end_statement

+

Nota: lo script di migrazione non è stato testato.

+

English

+

Accounting-related modules helpers.

+

Used by modules like l10n_it_vat_registries and +account_vat_period_end_statement

+

Notice: the migration script hasn’t been tested.

+

Table of contents

+ +
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • Agile Business Group
  • +
  • Abstract
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

The development of this module has been financially supported by:

+
    +
  • Odoo Italia Network
  • +
+
+
+

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_account/static/src/css/l10n_it_account.css b/l10n_it_account/static/src/css/l10n_it_account.css new file mode 100644 index 00000000000..e70c1014386 --- /dev/null +++ b/l10n_it_account/static/src/css/l10n_it_account.css @@ -0,0 +1,61 @@ +table { + border: 0px solid transparent !important; +} +thead { + background: #f5f5f5; +} + +.left_with_line { + text-align: left; + vertical-align: text-top; + border-top: 1px solid #a1a1a1; + padding: 5px; +} +.right_with_line { + text-align: right; + vertical-align: text-top; + border-top: 1px solid #a1a1a1; + padding: 5px; +} +.left_without_line { + text-align: left; + vertical-align: text-top; + padding: 5px; +} +.right_without_line { + text-align: right; + vertical-align: text-top; + padding: 5px; +} +.left_with_line_bottom { + text-align: left; + vertical-align: text-top; + border-bottom: 1px solid #a1a1a1; + padding: 5px; +} +.right_with_line_bottom { + text-align: right; + vertical-align: text-top; + border-bottom: 1px solid #a1a1a1; + padding: 5px; +} +.left_without_line_bold { + text-align: left; + vertical-align: text-top; + padding: 5px; + font-weight: bold; +} +.right_without_line_bold { + text-align: right; + vertical-align: text-top; + padding: 5px; + font-weight: bold; + white-space: nowrap; +} + +.first_th_row { + border-style: solid; + border-width: 1px; + border-color: #a1a1a1; + background: #fff; +} diff --git a/l10n_it_account/tests/__init__.py b/l10n_it_account/tests/__init__.py new file mode 100644 index 00000000000..660d694f88a --- /dev/null +++ b/l10n_it_account/tests/__init__.py @@ -0,0 +1 @@ +from . import test_l10n_it_account diff --git a/l10n_it_account/tests/test_l10n_it_account.py b/l10n_it_account/tests/test_l10n_it_account.py new file mode 100644 index 00000000000..5982f5c44d3 --- /dev/null +++ b/l10n_it_account/tests/test_l10n_it_account.py @@ -0,0 +1,210 @@ +# Copyright 2022 Simone Rubino - TAKOBI +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +import datetime + +from odoo import fields +from odoo.tests import Form, tagged + +from odoo.addons.account.tests.common import AccountTestInvoicingCommon + + +@tagged("post_install", "-at_install") +class TestAccount(AccountTestInvoicingCommon): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.iva_22I5 = cls.env["account.tax"].create( + { + "name": "IVA al 22% detraibile al 50%", + "description": "22I5", + "amount": 22, + "amount_type": "percent", + "type_tax_use": "purchase", + "price_include": False, + "invoice_repartition_line_ids": [ + (5, 0, 0), + ( + 0, + 0, + { + "factor_percent": 100, + "repartition_type": "base", + }, + ), + ( + 0, + 0, + { + "factor_percent": 50, + "repartition_type": "tax", + "account_id": cls.company_data["default_account_assets"].id, + }, + ), + ( + 0, + 0, + { + "factor_percent": 50, + "repartition_type": "tax", + }, + ), + ], + "refund_repartition_line_ids": [ + (5, 0, 0), + ( + 0, + 0, + { + "factor_percent": 100, + "repartition_type": "base", + }, + ), + ( + 0, + 0, + { + "factor_percent": 50, + "repartition_type": "tax", + }, + ), + ( + 0, + 0, + { + "factor_percent": 50, + "repartition_type": "tax", + "account_id": cls.company_data["default_account_assets"].id, + }, + ), + ], + } + ) + cls.vat_not_deductible = cls.env["account.tax"].create( + { + "name": "VAT 22% not deductible", + "description": "NOTDED", + "amount": 22, + "amount_type": "percent", + "type_tax_use": "purchase", + "price_include": False, + "invoice_repartition_line_ids": [ + ( + 0, + 0, + { + "factor_percent": 100, + "repartition_type": "base", + }, + ), + ( + 0, + 0, + { + "factor_percent": 100, + "repartition_type": "tax", + }, + ), + ], + "refund_repartition_line_ids": [ + ( + 0, + 0, + { + "factor_percent": 100, + "repartition_type": "base", + }, + ), + ( + 0, + 0, + { + "factor_percent": 100, + "repartition_type": "tax", + }, + ), + ], + } + ) + + def test_vat_22_50(self): + today = fields.Date.today() + move_form = Form( + self.env["account.move"].with_context(default_move_type="in_invoice") + ) + move_form.partner_id = self.env.ref("base.res_partner_12") + move_form.invoice_date = today + with move_form.invoice_line_ids.new() as line_form: + line_form.name = "test line" + line_form.price_unit = 100 + line_form.tax_ids.clear() + line_form.tax_ids.add(self.iva_22I5) + rslt = move_form.save() + rslt.action_post() + context = { + "from_date": today, + "to_date": today, + } + tax = self.env["account.tax"].with_context(**context).browse(self.iva_22I5.id) + self.assertEqual(tax.balance, -22) + self.assertEqual(tax.deductible_balance, -11) + self.assertEqual(tax.undeductible_balance, -11) + + def test_vat_22_not_deductible(self): + today = fields.Date.today() + self.init_invoice( + "in_invoice", + invoice_date=today, + amounts=[100], + taxes=self.vat_not_deductible, + post=True, + ) + context = { + "from_date": today, + "to_date": today, + } + tax = ( + self.env["account.tax"] + .with_context(**context) + .browse(self.vat_not_deductible.id) + ) + self.assertEqual(tax.balance, -22) + self.assertEqual(tax.deductible_balance, 0) + self.assertEqual(tax.undeductible_balance, -22) + + def test_partially_deductible_balance_recomputation(self): + """Check that deductible and not deductible balances + are computed correctly for different dates.""" + today = fields.Date.today() + self.init_invoice( + "in_invoice", + partner=self.env.ref("base.res_partner_12"), + invoice_date=today, + post=True, + amounts=[100], + taxes=self.iva_22I5, + ) + tomorrow = today + datetime.timedelta(days=1) + self.init_invoice( + "in_invoice", + partner=self.env.ref("base.res_partner_12"), + invoice_date=tomorrow, + post=True, + amounts=[200], + taxes=self.iva_22I5, + ) + + # Check today's balance + self.check_date_balance(self.iva_22I5, today, -11, -11) + + # Check tomorrow's balance + self.check_date_balance(self.iva_22I5, tomorrow, -22, -22) + + def check_date_balance(self, tax, date, deductible, not_deductible): + """Compare expected balances with tax's balance in specified date.""" + tax = tax.with_context( + from_date=date, + to_date=date, + ) + self.assertEqual(tax.deductible_balance, deductible) + self.assertEqual(tax.undeductible_balance, not_deductible) diff --git a/l10n_it_account/views/account_menuitem.xml b/l10n_it_account/views/account_menuitem.xml new file mode 100644 index 00000000000..08f7b4095b0 --- /dev/null +++ b/l10n_it_account/views/account_menuitem.xml @@ -0,0 +1,31 @@ + + + + + + Accounting + + + + + + + + + diff --git a/l10n_it_account/views/partner_view.xml b/l10n_it_account/views/partner_view.xml new file mode 100644 index 00000000000..9db01a79625 --- /dev/null +++ b/l10n_it_account/views/partner_view.xml @@ -0,0 +1,16 @@ + + + + + + res.partner.inherit.view.form + res.partner + + + + Accounting + + + + diff --git a/l10n_it_account/views/res_config_settings_views.xml b/l10n_it_account/views/res_config_settings_views.xml new file mode 100644 index 00000000000..8eeb0111c48 --- /dev/null +++ b/l10n_it_account/views/res_config_settings_views.xml @@ -0,0 +1,16 @@ + + + + + + res.config.settings.inherit.view.form + res.config.settings + + + + Accounting + + + +