From 94965a5ade5923a5f010cc5a532bcab1fb825b24 Mon Sep 17 00:00:00 2001 From: sergiocorato Date: Fri, 2 Dec 2022 16:12:35 +0100 Subject: [PATCH] [MIG] assets_management filtering only compulsory changes from #2704 --- assets_management/__manifest__.py | 5 +- assets_management/data/asset_data.xml | 2 +- assets_management/i18n/it.po | 1476 +++++++---------- assets_management/models/__init__.py | 2 - assets_management/models/account_account.py | 3 +- assets_management/models/account_invoice.py | 128 -- .../models/account_invoice_line.py | 92 - assets_management/models/account_journal.py | 3 +- assets_management/models/account_move.py | 16 +- assets_management/models/account_move_line.py | 9 +- assets_management/models/asset.py | 17 +- .../models/asset_accounting_info.py | 38 +- assets_management/models/asset_category.py | 2 - .../models/asset_depreciation.py | 43 +- .../models/asset_depreciation_line.py | 20 +- .../models/asset_depreciation_line_type.py | 2 - .../models/asset_depreciation_mode.py | 5 +- .../models/asset_depreciation_type.py | 1 - assets_management/readme/USAGE.rst | 16 +- assets_management/report/asset_journal.py | 91 +- .../report/asset_journal_xlsx.py | 579 ++++--- assets_management/report/asset_previsional.py | 58 +- .../report/asset_previsional_xlsx.py | 563 ++++--- assets_management/report/reports.xml | 123 +- .../security/ir.model.access.csv | 18 + assets_management/security/res_groups.xml | 2 +- .../static/description/index.html | 4 +- assets_management/static/src/css/report.css | 33 +- .../tests/test_assets_management.py | 398 ++++- assets_management/views/account_invoice.xml | 150 -- assets_management/views/asset.xml | 11 +- .../views/asset_accounting_info.xml | 29 +- .../views/asset_depreciation_line.xml | 2 - assets_management/wizard/__init__.py | 1 - .../wizard/account_invoice_manage_asset.py | 667 -------- .../account_invoice_manage_asset_view.xml | 311 ---- .../wizard/account_move_manage_asset.py | 179 +- .../wizard/account_move_manage_asset_view.xml | 22 +- .../wizard/asset_generate_depreciation.py | 1 - .../wizard/asset_journal_report.py | 7 - .../wizard/asset_previsional_report.py | 3 - 41 files changed, 1968 insertions(+), 3164 deletions(-) delete mode 100644 assets_management/models/account_invoice.py delete mode 100644 assets_management/models/account_invoice_line.py mode change 100755 => 100644 assets_management/security/ir.model.access.csv delete mode 100644 assets_management/views/account_invoice.xml mode change 100755 => 100644 assets_management/views/asset.xml delete mode 100644 assets_management/wizard/account_invoice_manage_asset.py delete mode 100644 assets_management/wizard/account_invoice_manage_asset_view.xml diff --git a/assets_management/__manifest__.py b/assets_management/__manifest__.py index 53acd7fc5651..65b4e9886b8e 100644 --- a/assets_management/__manifest__.py +++ b/assets_management/__manifest__.py @@ -4,7 +4,7 @@ { "name": "ITA - Gestione Cespiti", - "version": "12.0.1.0.0", + "version": "14.0.1.0.0", "category": "Localization/Italy", "summary": "Gestione Cespiti", "author": "Openforce, Odoo Community Association (OCA)", @@ -12,7 +12,6 @@ "license": "AGPL-3", "depends": [ "account", - "account_cancel", "account_financial_report", "account_fiscal_year", "mail", @@ -30,7 +29,6 @@ "report/reports.xml", "views/action_client.xml", "views/asset_menuitems.xml", - "views/account_invoice.xml", "views/account_move.xml", "views/asset.xml", "views/asset_accounting_info.xml", @@ -41,7 +39,6 @@ "views/asset_depreciation_mode.xml", "views/asset_depreciation_type.xml", "views/asset_tag.xml", - "wizard/account_invoice_manage_asset_view.xml", "wizard/account_move_manage_asset_view.xml", "wizard/asset_generate_depreciation_view.xml", "wizard/asset_journal_report_view.xml", diff --git a/assets_management/data/asset_data.xml b/assets_management/data/asset_data.xml index 97c5236dbea6..44305f64ea84 100644 --- a/assets_management/data/asset_data.xml +++ b/assets_management/data/asset_data.xml @@ -1,5 +1,5 @@ - + diff --git a/assets_management/i18n/it.po b/assets_management/i18n/it.po index 4000519af60c..7cee0a9c3676 100644 --- a/assets_management/i18n/it.po +++ b/assets_management/i18n/it.po @@ -4,18 +4,16 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 12.0+e\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-26 05:37+0000\n" -"PO-Revision-Date: 2021-12-17 13:39+0000\n" -"Last-Translator: Lorenzo Battistini \n" +"POT-Creation-Date: 2022-12-23 08:16+0000\n" +"PO-Revision-Date: 2022-12-23 08:16+0000\n" +"Last-Translator: \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 4.3.2\n" +"Plural-Forms: \n" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_body @@ -33,13 +31,13 @@ msgstr "" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_category_data #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_category_data msgid "Asset Category: " -msgstr "Categoria bene: " +msgstr "Categoria: " #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_title #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_title msgid "Asset: " -msgstr "Bene ammortizzabile: " +msgstr "Cespite: " #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_table_header @@ -53,17 +51,7 @@ msgstr "Codice" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_year_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_totals_header msgid "Curr. Year Dep. Fund" -msgstr "Fondo amm.to anno corr." - -#. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -msgid "Customer Credit Notes" -msgstr "Note credito cliente" - -#. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -msgid "Customer Invoices" -msgstr "Fatture cliente" +msgstr "Fondo Amm.to anno corrente" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_year_depreciation_table_header @@ -77,7 +65,7 @@ msgstr "Valore ammortizzabile" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_depreciation_table_header msgid "Dep. Percentage (%)" -msgstr "Percentuale amm.to (%)" +msgstr "Amm.to (%)" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_depreciation_table_header @@ -89,13 +77,13 @@ msgstr "Valore ammortizzabile" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_depreciation_table_header msgid "Depreciation Mode" -msgstr "Metodo ammortamento" +msgstr "Metodo" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_depreciation_table_header msgid "Depreciation Type" -msgstr "Tipo ammortamento" +msgstr "Natura" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_year_depreciation_table_header @@ -103,19 +91,19 @@ msgstr "Tipo ammortamento" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_year_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_totals_header msgid "Depreciation" -msgstr "Ammortamento" +msgstr "Amm." #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_accounting_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_accounting_table_header msgid "Document Date" -msgstr "Data documento" +msgstr "Data Documento" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_accounting_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_accounting_table_header msgid "Document Nr" -msgstr "N° documento" +msgstr "N. Documento" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_year_depreciation_table_header @@ -131,7 +119,7 @@ msgstr "Plusvalenza / Minusvalenza" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_year_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_totals_header msgid "In Amount" -msgstr "Valore +" +msgstr "Rettifica positiva" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_year_depreciation_table_header @@ -139,13 +127,13 @@ msgstr "Valore +" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_year_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_totals_header msgid "Out Amount" -msgstr "Valore -" +msgstr "" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_accounting_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_accounting_table_header msgid "Partner" -msgstr "Partner" +msgstr "" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_year_depreciation_table_header @@ -153,13 +141,13 @@ msgstr "Partner" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_year_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_totals_header msgid "Prev. Year Dep. Fund" -msgstr "Fondo amm.to anno prec." +msgstr "Fondo Amm.to anno precedente" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_depreciation_table_header msgid "Pro Rata Temporis" -msgstr "Pro Rata Temporis" +msgstr "" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_table_header @@ -171,13 +159,13 @@ msgstr "Valore acquisto" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_table_header msgid "Purchased as New / Used" -msgstr "Acquistato come nuovo / usato" +msgstr "Acquistato Nuovo / Usato" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_accounting_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_accounting_table_header msgid "Ref" -msgstr "Rif" +msgstr "Rif." #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_year_depreciation_table_header @@ -185,13 +173,13 @@ msgstr "Rif" #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_year_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_totals_header msgid "Residual" -msgstr "Residuo" +msgstr "Residuo da ammortizzare" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_depreciation_table_header msgid "Starting From" -msgstr "Data inizio" +msgstr "Data inizio amm.to" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_table_header @@ -217,16 +205,6 @@ msgstr "Tipo" msgid "VAT" msgstr "P.IVA" -#. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -msgid "Vendor Bills" -msgstr "Fatture fornitore" - -#. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -msgid "Vendor Credit Notes" -msgstr "Note credito fornitore" - #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_journal_asset_year_depreciation_table_header #: model_terms:ir.ui.view,arch_db:assets_management.template_asset_previsional_asset_year_depreciation_table_header @@ -261,16 +239,26 @@ msgstr "Azione richiesta" msgid "Activities" msgstr "Attività" +#. module: assets_management +#: model:ir.model.fields,field_description:assets_management.field_asset_asset__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "Decorazione eccezione attività" + #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__activity_state msgid "Activity State" -msgstr "Stato attività" +msgstr "Stato delle Attività" + +#. module: assets_management +#: model:ir.model.fields,field_description:assets_management.field_asset_asset__activity_type_icon +msgid "Activity Type Icon" +msgstr "Icona tipo attività" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:248 -#: code:addons/assets_management/report/asset_journal_xlsx.py:350 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:246 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:319 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__amount #, python-format msgid "Amount" @@ -303,7 +291,6 @@ msgstr "Valore ammortizzato" #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_totals__amount_depreciation_fund_curr_year #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__amount_depreciation_fund_curr_year #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_totals__amount_depreciation_fund_curr_year -#, fuzzy msgid "Amount Depreciation Fund Curr Year" msgstr "F.do amm.to Anno Corrente" @@ -312,7 +299,6 @@ msgstr "F.do amm.to Anno Corrente" #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_totals__amount_depreciation_fund_prev_year #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__amount_depreciation_fund_prev_year #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_totals__amount_depreciation_fund_prev_year -#, fuzzy msgid "Amount Depreciation Fund Prev Year" msgstr "F.do amm.to Anno Precedente" @@ -333,7 +319,6 @@ msgstr "Totale Plusvalenza" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__amount_historical #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__amount_historical -#, fuzzy msgid "Amount Historical" msgstr "Valore Storico" @@ -341,13 +326,13 @@ msgstr "Valore Storico" #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__amount_in #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__amount_in msgid "Amount In" -msgstr "Valore +" +msgstr "Rettifica positiva" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__amount_in_detail #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__amount_in_detail msgid "Amount In Detail" -msgstr "Dettaglio Valore +" +msgstr "Dettaglio Rettifica positiva" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__amount_in_total @@ -355,7 +340,7 @@ msgstr "Dettaglio Valore +" #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__amount_in_total #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_totals__amount_in_total msgid "Amount In Total" -msgstr "Totale Valore +" +msgstr "Totale Rettifica positiva" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__amount_loss @@ -375,13 +360,13 @@ msgstr "Totale Minusvalenza" #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__amount_out #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__amount_out msgid "Amount Out" -msgstr "Valore -" +msgstr "Rettifica negativa" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__amount_out_detail #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__amount_out_detail msgid "Amount Out Detail" -msgstr "Dettaglio Valore -" +msgstr "Dettaglio Rettifica negativa" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__amount_out_total @@ -389,7 +374,7 @@ msgstr "Dettaglio Valore -" #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__amount_out_total #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_totals__amount_out_total msgid "Amount Out Total" -msgstr "Totale Valore -" +msgstr "Totale Rettifica negativa" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__amount_residual @@ -405,8 +390,8 @@ msgid "Application by" msgstr "Applica su" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:152 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:150 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__asset_id #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__asset_id #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__asset_id @@ -415,17 +400,16 @@ msgstr "Applica su" #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional__asset_ids #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__asset_id #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__asset_id -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__asset_id #: model_terms:ir.ui.view,arch_db:assets_management.asset_accounting_info_search_view #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view #, python-format msgid "Asset" -msgstr "Bene" +msgstr "Cespite" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_category__asset_account_id msgid "Asset Account" -msgstr "Conto bene" +msgstr "Conto Cespite" #. module: assets_management #: model:ir.model,name:assets_management.model_asset_accounting_info @@ -435,84 +419,85 @@ msgstr "Collegamenti contabili" #. module: assets_management #: model:ir.model,name:assets_management.model_asset_category msgid "Asset Category" -msgstr "Categoria bene" +msgstr "Categorie beni ammortizzabili" #. module: assets_management #: model:ir.model,name:assets_management.model_asset_category_depreciation_type msgid "Asset Category - Depreciation Type" -msgstr "" +msgstr "Categorie beni ammortizzabili - Natura ammortamento" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_asset__asset_code #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__asset_code msgid "Asset Code" -msgstr "Codice bene" +msgstr "Codice" #. module: assets_management #: model:ir.ui.menu,name:assets_management.menu_asset_configuration msgid "Asset Configuration" -msgstr "Configurazione bene" +msgstr "Configurazione" #. module: assets_management -#: selection:asset.accounting.info,relation_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_accounting_info__relation_type__create msgid "Asset Creation" -msgstr "Creazione bene" +msgstr "Creazione Cespite" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view msgid "Asset Depreciation" -msgstr "Ammortamento bene" +msgstr "Amm." #. module: assets_management #: model:ir.model,name:assets_management.model_asset_depreciation_mode msgid "Asset Depreciation Mode" -msgstr "Metodo ammortamento bene" +msgstr "Metodi Amm." #. module: assets_management #: model:ir.model,name:assets_management.model_asset_depreciation_mode_line msgid "Asset Depreciation Mode Line" -msgstr "Riga metodo ammortamento bene" +msgstr "Riga metodo Amm. Cespite" #. module: assets_management #: model:ir.model,name:assets_management.model_asset_depreciation_type msgid "Asset Depreciation Type" -msgstr "Natura Ammortamento" +msgstr "Natura Amm." #. module: assets_management -#: selection:asset.accounting.info,relation_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_accounting_info__relation_type__dismiss msgid "Asset Dismissal" -msgstr "Dismissioni" +msgstr "Dismissione Cespite" #. module: assets_management +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 #: model:ir.actions.act_window,name:assets_management.action_wizard_asset_journal_report #: model:ir.ui.menu,name:assets_management.menu_wizard_asset_journal_report +#, python-format msgid "Asset Journal" msgstr "Registro beni ammortizzabili" #. module: assets_management #: model:ir.actions.client,name:assets_management.act_client_asset_journal_report msgid "Asset Journal Report" -msgstr "Registro beni ammortizzabili" +msgstr "Stampa Giornale Cespiti" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_asset__asset_name #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__asset_name #: model_terms:ir.ui.view,arch_db:assets_management.asset_form_view #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Asset Name" -msgstr "Nome bene ammortizzabile" +msgstr "Nome Cespite" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal__asset_order_fname #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional__asset_order_fname msgid "Asset Order Fname" -msgstr "" +msgstr "Codice Cespite" #. module: assets_management -#: selection:asset.accounting.info,relation_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_accounting_info__relation_type__partial_dismiss msgid "Asset Partial Dismissal" -msgstr "Dismissione parziale" +msgstr "Dismissione parziale Cespite" #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_wizard_asset_previsional_report @@ -540,18 +525,18 @@ msgstr "Registro Previsionale XLSX" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__asset_order_fname #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__asset_order_fname msgid "Asset Print Order" -msgstr "" +msgstr "Ordine Stampa Beni Ammortizzabili" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_asset__asset_purchase_amount #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__asset_purchase_amount msgid "Asset Purchase Amount" -msgstr "Valore acquisto bene" +msgstr "Valore Acquisto" #. module: assets_management #: model:ir.actions.report,name:assets_management.report_asset_journal_html msgid "Asset Report HTML" -msgstr "" +msgstr "Registro beni ammortizzabili - HTML" #. module: assets_management #: model:ir.actions.report,name:assets_management.report_asset_journal_pdf @@ -572,49 +557,49 @@ msgstr "Registro beni ammortizzabili" #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_asset__asset_state #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__asset_state msgid "Asset State" -msgstr "Stato bene" +msgstr "Stato" #. module: assets_management #: model:ir.model,name:assets_management.model_asset_tag msgid "Asset Tags" -msgstr "Etichette bene" +msgstr "Tag" #. module: assets_management -#: selection:asset.accounting.info,relation_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_accounting_info__relation_type__update msgid "Asset Update" -msgstr "Aggiornamento bene" +msgstr "Aggiornamento Cespite" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_asset__asset_used #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__asset_used msgid "Asset Used" -msgstr "Bene usato" +msgstr "Cespite usato" #. module: assets_management #: model:res.groups,name:assets_management.group_asset_user msgid "Asset Users" -msgstr "Utenti bene" +msgstr "Utenti" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__depreciation_id msgid "Asset depreciation" -msgstr "Ammortamento bene" +msgstr "Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__depreciation_type_id msgid "Asset depreciation type" -msgstr "Tipo ammortamento bene" +msgstr "Tipo Amm. Cespite" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:489 -#: code:addons/assets_management/models/asset_depreciation.py:496 -#: code:addons/assets_management/models/asset_depreciation.py:507 +#: code:addons/assets_management/models/asset_depreciation.py:0 +#: code:addons/assets_management/models/asset_depreciation.py:0 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "Asset dismissal: " -msgstr "Dismissione bene: " +msgstr "Dismissione cespite: " #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:389 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "Asset: " msgstr "Cespite: " @@ -622,31 +607,28 @@ msgstr "Cespite: " #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_asset #: model:ir.model,name:assets_management.model_asset_asset -#: model:ir.model.fields,field_description:assets_management.field_account_invoice__asset_ids -#: model:ir.model.fields,field_description:assets_management.field_account_invoice_line__asset_ids +#: model:ir.model.fields,field_description:assets_management.field_account_bank_statement_line__asset_ids #: model:ir.model.fields,field_description:assets_management.field_account_move__asset_ids #: model:ir.model.fields,field_description:assets_management.field_account_move_line__asset_ids +#: model:ir.model.fields,field_description:assets_management.field_account_payment__asset_ids #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__asset_ids #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__asset_ids #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__asset_ids #: model:ir.ui.menu,name:assets_management.menu_asset #: model:ir.ui.menu,name:assets_management.menu_asset_asset -#: model_terms:ir.ui.view,arch_db:assets_management.invoice_form_inherit -#: model_terms:ir.ui.view,arch_db:assets_management.invoice_supplier_form_inherit -#: model_terms:ir.ui.view,arch_db:assets_management.view_invoice_line_form_inherit #: model_terms:ir.ui.view,arch_db:assets_management.view_move_form_inherit #: model_terms:ir.ui.view,arch_db:assets_management.view_move_line_form_inherit #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_journal_report_form_view #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_previsional_report_form_view msgid "Assets" -msgstr "Cespiti" +msgstr "Beni ammortizzabili" #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_asset_accounting_info -#: model:ir.model.fields,field_description:assets_management.field_account_invoice__asset_accounting_info_ids -#: model:ir.model.fields,field_description:assets_management.field_account_invoice_line__asset_accounting_info_ids +#: model:ir.model.fields,field_description:assets_management.field_account_bank_statement_line__asset_accounting_info_ids #: model:ir.model.fields,field_description:assets_management.field_account_move__asset_accounting_info_ids #: model:ir.model.fields,field_description:assets_management.field_account_move_line__asset_accounting_info_ids +#: model:ir.model.fields,field_description:assets_management.field_account_payment__asset_accounting_info_ids #: model:ir.ui.menu,name:assets_management.menu_asset_accounting_info msgid "Assets Accounting Info" msgstr "Info contabili" @@ -654,39 +636,39 @@ msgstr "Info contabili" #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_asset_depreciation_mode msgid "Assets Depreciation Mode" -msgstr "Metodi ammortamento" +msgstr "Metodi Amm." #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_asset_depreciation_type msgid "Assets Depreciation Type" -msgstr "Tipo ammortamento beni" +msgstr "Natura Amm." #. module: assets_management #: model:ir.model,name:assets_management.model_asset_depreciation msgid "Assets Depreciations" -msgstr "Ammortamenti beni" +msgstr "Ammortamenti" #. module: assets_management -#: code:addons/assets_management/report/asset_journal.py:288 +#: code:addons/assets_management/report/asset_journal.py:0 #, python-format msgid "Assets Depreciations " -msgstr "Ammortamenti beni " +msgstr "Amm.ti Cespiti " #. module: assets_management #: model:ir.model,name:assets_management.model_asset_depreciation_line msgid "Assets Depreciations Lines" -msgstr "Righe ammortamenti beni" +msgstr "Linee Amm." #. module: assets_management #: model:ir.ui.menu,name:assets_management.menu_asset_management msgid "Assets Management" -msgstr "Gestione cespiti" +msgstr "Gestione" #. module: assets_management -#: code:addons/assets_management/report/asset_previsional.py:315 +#: code:addons/assets_management/report/asset_previsional.py:0 #, python-format msgid "Assets Previsional Depreciations " -msgstr "Ammortamenti previsionali " +msgstr "Previsione Amm.ti Cespiti " #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.asset_search_view @@ -696,7 +678,7 @@ msgstr "Beni ammortizzabili" #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_asset_category msgid "Assets category" -msgstr "Categoria beni" +msgstr "Categorie beni ammortizzabili" #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_asset_tag @@ -704,42 +686,23 @@ msgid "Assets tag" msgstr "Etichetta beni" #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:200 -#, python-format -msgid "At least one invoice line is mandatory to create a new asset!" -msgstr "Indicare almeno una riga di fattura per creare un nuovo cespite!" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:230 -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:274 -#, python-format -msgid "At least one invoice line is mandatory to dismiss an asset!" -msgstr "Indicare almeno una riga di fattura per dismettere un cespite!" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:311 -#, python-format -msgid "At least one invoice line is mandatory to update an asset!" -msgstr "Indicare almeno una riga di fattura per aggiornare un cespite!" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:194 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "At least one move line is mandatory to create a new asset!" -msgstr "Indicare almeno una riga di fattura per creare un nuovo cespite!" +msgstr "È necessaria almeno una riga contabile per creare un nuovo cespite!" #. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:226 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:270 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "At least one move line is mandatory to dismiss an asset!" -msgstr "Indicare almeno una riga di fattura per dismettere un cespite!" +msgstr "È necessaria almeno una riga contabile per dismettere un cespite!" #. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:307 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "At least one move line is mandatory to update an asset!" -msgstr "Indicare almeno una riga di fattura per aggiornare un cespite!" +msgstr "È necessaria almento una riga contabile per aggiornare un cespite!" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__message_attachment_count @@ -752,17 +715,8 @@ msgid "" "Attention! You cannot create an asset from accounting moves related to sale " "documents." msgstr "" -"Attenzione! Non è possibile creare un bene ammortizzabile da una " -"registrazione contabile collegata ad un documento di vendita." - -#. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -msgid "" -"Attention! You cannot create an asset from customer invoices or vendor bills " -"refunds." -msgstr "" -"Attenzione! Non è possibile creare un bene ammortizzabile da una fattura " -"cliente o da una nota credito fornitore." +"Attenzione! Non è possibile creare un Cespite da una registrazione contabile" +" collegata a documenti di vendita." #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view @@ -770,16 +724,8 @@ msgid "" "Attention! You cannot dismiss an asset from accounting moves related to " "purchase documents." msgstr "" -"Attenzione! Non è possibile dismettere un bene da registrazioni contabili " -"collegate a documenti di acquisto." - -#. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -msgid "" -"Attention! You cannot dismiss an asset from vendor bills or customer refunds." -msgstr "" -"Attenzione! Non è possibile dismettere un bene dalle fatture fornitori o da " -"note credito clienti." +"Attenzione! Non è possibile dismettere un cespite da registrazioni contabili" +" collegate a documenti di acquisto." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__balance @@ -792,197 +738,188 @@ msgid "Base" msgstr "Imponibile" #. module: assets_management -#: code:addons/assets_management/models/asset_category.py:33 +#: code:addons/assets_management/models/asset_category.py:0 #, python-format msgid "" "Before creating new categories, please complete the assets' configuration " "for both depreciation types and modes." msgstr "" -"Prima di creare nuove categorie, completare la configurazione per i metodi e " -"la natura di ammortamento." +"Prima di creare nuove categorie, si prega di completare la configurazione dei cespiti " +"sia per i tipi che per i modi di ammortamento." #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_generate_depreciation_form_view #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_journal_report_form_view #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_previsional_report_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Cancel" msgstr "Annulla" #. module: assets_management -#: code:addons/assets_management/models/asset.py:192 -#, fuzzy, python-format +#: code:addons/assets_management/models/asset.py:0 +#, python-format msgid "Cannot change category for an asset that's already been depreciated." -msgstr "" -"Non puoi cancelare la categoria: è già presente in qualche ammortamento." +msgstr "Non è possibile cambiare categoria per un cespite che è già stato ammortizzato." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:531 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "Cannot compute pro rata temporis for unknown date." -msgstr "" -"Non è possibile calcolare il pro rata temporis se non viene indicata la data." +msgstr "Non è possibile calcolare il prorata temporis per una data sconosciuta." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:618 -#, fuzzy, python-format +#: code:addons/assets_management/models/asset_depreciation.py:0 +#, python-format msgid "Cannot create a depreciation line without a date" -msgstr "Non puoi creare ammortamenti senza data" +msgstr "Non è possibile creare una riga di ammortamento senza data" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:463 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "Cannot create account move lines for lines of type `Historical`" -msgstr "" +msgstr "Non è possibile creare righe contabili per righe di tipo `Storico`" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:469 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "Cannot create account move lines for lines of type `In`" -msgstr "Non è possibile creare registrazioni per le linee di tipo IN" +msgstr "Non è possibile creare righe contabili per righe di tipo `In`" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:492 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "Cannot create account move lines for lines of type `Out`" -msgstr "Non è possibile creare registrazioni per le linee di tipo OUT" +msgstr "Non è possibile creare righe contabili per righe di tipo `Out`" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:397 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "Cannot create account move lines: no method is specified." -msgstr "Non è possibile creare registrazioni: nessun metodo specificato." +msgstr "Non è possibile creare righe contabili: nessun metodo specificato." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:286 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "Cannot create any depreciation according to current settings." -msgstr "" +msgstr "Non è possibile creare ammortamenti in base alle impostazioni scelte." #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:206 -#, python-format -msgid "Cannot create asset if lines come from different invoices!" -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:200 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "Cannot create asset if move lines come from different account moves!" -msgstr "" +msgstr "Non è possibile creare cespiti se le righe contabile provengono da diversi movimenti!" #. module: assets_management -#: code:addons/assets_management/models/account_account.py:26 +#: code:addons/assets_management/models/account_account.py:0 #, python-format msgid "Cannot delete accounts while they're still used by asset categories." -msgstr "" +msgstr "Non è possibile eliminare conti ancora utilizzati da categorie cespiti." #. module: assets_management -#: code:addons/assets_management/models/asset_category.py:133 +#: code:addons/assets_management/models/asset_category.py:0 #, python-format msgid "Cannot delete categories while they're still linked to an asset." -msgstr "" +msgstr "Non è possibile eliminare categorie ancora collegate a un cespite." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_mode.py:62 +#: code:addons/assets_management/models/asset_depreciation_mode.py:0 #, python-format msgid "" "Cannot delete depreciation modes while they're still linked to categories." msgstr "" +"Non è possibile eliminare metodi di ammortamento ancora collegati a categorie." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_mode.py:69 +#: code:addons/assets_management/models/asset_depreciation_mode.py:0 #, python-format msgid "" -"Cannot delete depreciation modes while they're still linked to depreciations." +"Cannot delete depreciation modes while they're still linked to " +"depreciations." msgstr "" +"Non è possibile eliminare modi di ammortamento ancora collegati a " +"ammortamenti." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_type.py:46 +#: code:addons/assets_management/models/asset_depreciation_type.py:0 #, python-format msgid "" "Cannot delete depreciation types while they're still used by categories." msgstr "" +"Non è possibile eliminare tipi di ammortamento ancora collegati a categorie." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:193 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "" "Cannot delete depreciations if there is any depreciation line linked to it." msgstr "" -"Non è possibile elimare ammortamenti se ci sono righe di amm.to collegate." +"Non è possibile eliminare ammortamenti se ci sono ancora righe di ammortamento collegate." #. module: assets_management -#: code:addons/assets_management/models/account_journal.py:18 +#: code:addons/assets_management/models/account_journal.py:0 #, python-format msgid "Cannot delete journals while they're still used by asset categories." -msgstr "" +msgstr "Non è possibile eliminare registri ancora usati da categorie cespite." #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:381 -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:462 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:380 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:465 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "" "Cannot dismiss an asset earlier than the last depreciation date.\n" "(Dismiss date: {}, last depreciation date: {})." msgstr "" +"Non è possibile dismette un cespite rpima dell'ultima data di ammortamento.\n" +"(Data di Dismissione: {}, ultima data di ammortamento: {})." #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:236 -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:280 -#, python-format -msgid "Cannot dismiss asset if lines come from different invoices!" -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:232 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:276 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "Cannot dismiss asset if move lines come from different account moves!" -msgstr "" +msgstr "Non è possibile dismettere un cespite se le righe dei movimenti provengono da differenti registrazioni contabili!" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:573 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "Cannot get pro rata temporis multiplier for mode `{}`" -msgstr "" +msgstr "Non è possibile calcolare il moltiplicatore del prorata temporis per il modo `{}`" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:577 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "Cannot get pro rata temporis multiplier for unspecified mode" -msgstr "" +msgstr "Non è possibile calcolare il moltiplicatore del prorata temporis per un modo sconosciuto" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line_type.py:48 +#: code:addons/assets_management/models/asset_depreciation_line_type.py:0 #, python-format msgid "Cannot remove type {}: there is some depreciation line linked to it." -msgstr "" +msgstr "Non è possibile rimuovere il tipo {}: ci sono alcune righe di ammortamento collegate." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:305 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "" -"Cannot update the following assets which contain newer depreciations for the " -"chosen types:\n" +"Cannot update the following assets which contain newer depreciations for the chosen types:\n" "{}" msgstr "" +"Non è possibile aggiornare i seguenti cespiti che contengono ammortamenti più recenti per i tipi scelti:\n" +"{}" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:321 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "" -"Cannot update the following assets which contain posted depreciation for the " -"chosen date and types:\n" +"Cannot update the following assets which contain posted depreciation for the chosen date and types:\n" "{}" msgstr "" +"Non è possibile aggiornare i seguenti cespiti che contengono ammortamenti contabilizzati per le date e i tipi scelti:\n" +"{}" #. module: assets_management -#: selection:asset.depreciation.line,move_type:0 #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__amount_gain +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_line__move_type__gain msgid "Capital Gain" msgstr "Plusvalenza" @@ -992,8 +929,8 @@ msgid "Capital Gain Account" msgstr "Conto Plusvalenza" #. module: assets_management -#: selection:asset.depreciation.line,move_type:0 #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__amount_loss +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_line__move_type__loss msgid "Capital Loss" msgstr "Minusvalenza" @@ -1011,8 +948,8 @@ msgid "Categories" msgstr "Categorie" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:140 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:138 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_asset__category_id #: model:ir.model.fields,field_description:assets_management.field_asset_category_depreciation_type__category_id #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal__category_ids @@ -1020,7 +957,6 @@ msgstr "Categorie" #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional__category_ids #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_category__category_id #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__category_id -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__category_id #: model_terms:ir.ui.view,arch_db:assets_management.asset_search_view #, python-format msgid "Category" @@ -1034,17 +970,15 @@ msgstr "Nome categoria" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Choose Your Asset" -msgstr "Scegli il bene ammortizzabile" +msgstr "Scegli il Cespite" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:156 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:154 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_asset__code #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line_type__code #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__code -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__code #, python-format msgid "Code" msgstr "Codice" @@ -1052,16 +986,16 @@ msgstr "Codice" #. module: assets_management #: model:ir.model.fields,help:assets_management.field_asset_depreciation__base_coeff msgid "Coeff to compute amount depreciable from purchase amount" -msgstr "" +msgstr "Coefficiente per calcolo importo ammortizzabile da valore di acquisto" #. module: assets_management #: model:ir.model.fields,help:assets_management.field_asset_category_depreciation_type__base_coeff msgid "Coeff to compute depreciable amount from purchase amount" -msgstr "" +msgstr "Coefficiente per calcolo importo ammortizzabile da valore di acquisto" #. module: assets_management -#: selection:asset.depreciation.mode.line,application:0 #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_mode_line__coefficient +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_mode_line__application__coefficient msgid "Coefficient" msgstr "Coefficiente" @@ -1088,90 +1022,67 @@ msgstr "Commento" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__company_id #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__company_id #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__company_id -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__company_id #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view #: model_terms:ir.ui.view,arch_db:assets_management.asset_search_view msgid "Company" msgstr "Azienda" #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:174 -#, python-format -msgid "Could not determine how to link invoice lines to asset in mode `{}`." -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:168 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "Could not determine how to link move lines to asset in mode `{}`." -msgstr "" +msgstr "Non è possibile determinare come collegare le righe dei movimenti al cespite nel modo `{}`." #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:564 -#, python-format -msgid "" -"Could not retrieve depreciation line type from invoice `{}` (type `{}`)." -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:574 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "Could not retrieve depreciation line type from move `{}` (type `{}`)." -msgstr "" +msgstr "Non è possibile recuperare il tipo delle righe di ammortamento dal movimento `{}` (tipo `{}`)." #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:585 -#, python-format -msgid "" -"Could not update `{}`: not enough residual amount to write off invoice `{}" -"`.\n" -"(Amount to write off: {}; residual amount: {}.)\n" -"Maybe you should try to dismiss this asset instead?" -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:597 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "" "Could not update `{}`: not enough residual amount to write off move `{}`.\n" "(Amount to write off: {}; residual amount: {}.)\n" "Maybe you should try to dismiss this asset instead?" msgstr "" +"Non è possibile aggiornare `{}`: non c'è sufficiente importo residuo da stornare dal movimento `{}`.\n" +"(Importo da stornare: {}; importo residuo: {}.)\n" +"Forse si dovrebbe invece dismettere il cespite?" #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:609 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:621 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "" "Could not update `{}`: not enough residual amount to write off.\n" "(Amount to write off: {}; residual amount: {}.)\n" "Maybe you should try to dismiss this asset instead?" msgstr "" +"Non è possibile aggiornare `{}`: non c'è sufficiente importo residuo da stornare.\n" +"(Importo da stornare: {}; importo residuo: {}.)\n" +"Forse si dovrebbe invece dismettere il cespite?" #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:262 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:258 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "Couldn't determine which action should be done." -msgstr "" +msgstr "Non è possibile determinare quale azione dovrebbe essere fatta." #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Create Asset" -msgstr "" +msgstr "Crea" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Create Asset and Show" -msgstr "" +msgstr "Crea nuovo e mostra" #. module: assets_management -#: selection:wizard.account.move.manage.asset,management_type:0 -#: selection:wizard.invoice.manage.asset,management_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__management_type__create msgid "Create New" -msgstr "Crea nuovo" +msgstr "" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__create_uid @@ -1203,7 +1114,6 @@ msgstr "Crea nuovo" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__create_uid #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__create_uid #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__create_uid -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__create_uid msgid "Created by" msgstr "Creato da" @@ -1237,36 +1147,37 @@ msgstr "Creato da" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__create_date #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__create_date #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__create_date -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__create_date msgid "Created on" msgstr "Creato il" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:273 -#: code:addons/assets_management/report/asset_journal_xlsx.py:375 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:271 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:344 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Curr. Year Dep. Fund" -msgstr "" +msgstr "F.do Amm.to Anno Corr." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__currency_id #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__currency_id #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__currency_id #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__currency_id -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__currency_id msgid "Currency" msgstr "Valuta" #. module: assets_management -#: code:addons/assets_management/models/asset.py:221 +#: code:addons/assets_management/models/asset.py:0 #, python-format msgid "" "Current asset has already been depreciated. Changes upon its purchase value " -"will not be automatically reflected upon depreciation lines, which will have " -"to be updated manually." +"will not be automatically reflected upon depreciation lines, which will have" +" to be updated manually." msgstr "" +"Il cespite attuale è già stato ammortizzato. Modifiche sui suoi valori di acquisto " +"non saranno automaticamente riversate sulle righe di ammortamento, che dovranno essere" +" aggiornate manualmente." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__customer_id @@ -1274,14 +1185,14 @@ msgid "Customer" msgstr "Cliente" #. module: assets_management -#: selection:wizard.invoice.manage.asset,invoice_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__move_type__out_refund msgid "Customer Credit Note" -msgstr "Note credito cliente" +msgstr "Nota di Credito Cliente" #. module: assets_management -#: selection:wizard.invoice.manage.asset,invoice_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__move_type__out_invoice msgid "Customer Invoice" -msgstr "Fatture cliente" +msgstr "Fattura Cliente" #. module: assets_management #: model:ir.model.fields,help:assets_management.field_asset_asset__access_url @@ -1305,7 +1216,7 @@ msgstr "Data inizio" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_mode__default msgid "Default Mode" -msgstr "" +msgstr "Metodo di default" #. module: assets_management #: model:ir.model.fields,help:assets_management.field_asset_category__print_by_default @@ -1314,62 +1225,64 @@ msgid "" "Defines whether a category should be added by default when printing assets' " "reports." msgstr "" +"Definisci se una categoria dovrebbe essere aggiunta per default quanto si " +"stampa il registro dei cespiti." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation__dep_amount_depreciable #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation__dep_amount_depreciable msgid "Dep Amount Depreciable" -msgstr "" +msgstr "Importo Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_category_depreciation_type__base_coeff msgid "Dep Base Coeff" -msgstr "" +msgstr "Coeff. base Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation__dep_date_start #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation__dep_date_start msgid "Dep Date Start" -msgstr "" +msgstr "Data inizio Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__dep_line_ids #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__dep_line_ids msgid "Dep Line" -msgstr "" +msgstr "Riga Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_category_depreciation_type__mode_id msgid "Dep Mode" -msgstr "" +msgstr "Modalità Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation__dep_percentage #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation__dep_percentage msgid "Dep Percentage" -msgstr "" +msgstr "Percentuale Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation__dep_pro_rata_temporis #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation__dep_pro_rata_temporis msgid "Dep Pro Rata Temporis" -msgstr "" +msgstr "Pro Rata Temporis Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__depreciation_nr msgid "Dep. Num" -msgstr "N° amm.to" +msgstr "Amm.to Nr" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:227 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:225 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Dep. Percentage (%)" -msgstr "Percentuale amm.to (%)" +msgstr "Percentuale Amm.to (%)" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:218 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:216 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__amount_depreciable #, python-format msgid "Depreciable Amount" @@ -1381,7 +1294,8 @@ msgid "Depreciable Base Coeff" msgstr "Coeff. base Amm.to" #. module: assets_management -#: selection:asset.asset,state:0 selection:asset.depreciation,state:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_asset__state__totally_depreciated +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation__state__totally_depreciated msgid "Depreciated" msgstr "Ammortizzato" @@ -1392,99 +1306,96 @@ msgstr "Valore ammortizzato" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__depreciated_fund_amount -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__depreciated_fund_amount -#, fuzzy msgid "Depreciated Fund Amount" msgstr "Valore F.do Amm.to" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:268 -#: code:addons/assets_management/report/asset_journal_xlsx.py:370 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:266 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:339 -#: selection:asset.depreciation.line,move_type:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation__depreciation_id #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation__depreciation_id +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_line__move_type__depreciated #, python-format msgid "Depreciation" -msgstr "Ammortamento" +msgstr "Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_category_depreciation_type__percentage msgid "Depreciation %" -msgstr "Ammortamento %" +msgstr "Amm. %" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__percentage msgid "Depreciation (%)" -msgstr "Ammortamento (%)" +msgstr "Amm. (%)" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_category__depreciation_account_id msgid "Depreciation Account" -msgstr "Conto ammortamento" +msgstr "Conto Amm." #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_generate_depreciation_form_view msgid "Depreciation Data" -msgstr "Dati ammortamento" +msgstr "Dati Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__date_dep msgid "Depreciation Date" -msgstr "Data ammortamento" +msgstr "Data Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__dep_line_id msgid "Depreciation Line" -msgstr "Riga ammortamento" +msgstr "Riga Amm." #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_asset_depreciation_line_type #: model:ir.ui.menu,name:assets_management.menu_asset_depreciation_line_type msgid "Depreciation Line Amount Types" -msgstr "Tipi importo riga ammortamento" +msgstr "Tipi operazione" #. module: assets_management #: model:ir.model,name:assets_management.model_asset_depreciation_line_type msgid "Depreciation Line Type" -msgstr "Tipo riga ammortamento" +msgstr "Tipo riga amm.to" #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_asset_dep_line -#: model:ir.model.fields,field_description:assets_management.field_account_invoice__dep_line_ids -#: model:ir.model.fields,field_description:assets_management.field_account_invoice_line__dep_line_ids +#: model:ir.model.fields,field_description:assets_management.field_account_bank_statement_line__dep_line_ids #: model:ir.model.fields,field_description:assets_management.field_account_move__dep_line_ids #: model:ir.model.fields,field_description:assets_management.field_account_move_line__dep_line_ids +#: model:ir.model.fields,field_description:assets_management.field_account_payment__dep_line_ids #: model:ir.ui.menu,name:assets_management.menu_asset_dep_line #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view #: model_terms:ir.ui.view,arch_db:assets_management.view_asset_depreciation_form -#: model_terms:ir.ui.view,arch_db:assets_management.view_invoice_line_form_inherit #: model_terms:ir.ui.view,arch_db:assets_management.view_move_line_form_inherit msgid "Depreciation Lines" -msgstr "Righe ammortamento" +msgstr "Righe Amm." #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:214 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:212 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Depreciation Mode" -msgstr "Metodi ammortamento" +msgstr "Modo Ammortamento" #. module: assets_management #: model:ir.ui.menu,name:assets_management.menu_asset_depreciation_mode msgid "Depreciation Modes" -msgstr "Metodi ammortamento" +msgstr "Metodi Amm." #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:210 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:208 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__type_id #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__depreciation_line_type_id #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view -#, fuzzy, python-format +#, python-format msgid "Depreciation Type" -msgstr "Natura ammortamento" +msgstr "Natura Amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_category__type_ids @@ -1492,16 +1403,15 @@ msgstr "Natura ammortamento" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__type_ids #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__type_ids #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__type_ids -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__depreciation_type_ids #: model:ir.ui.menu,name:assets_management.menu_asset_depreciation_type msgid "Depreciation Types" -msgstr "Tipi ammortamento" +msgstr "Natura Amm." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:200 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "Depreciation number can't be a negative number." -msgstr "Nr di ammortamento non può essere negativo." +msgstr "Il numero di ammortamenti non può essere negativo." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__depreciation_ids @@ -1511,38 +1421,38 @@ msgid "Depreciations" msgstr "Ammortamenti" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:432 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "Depreciations cannot start before {}." -msgstr "Gli Amm.ti non possono iniziare prima {}." +msgstr "Gli ammortamenti non possono iniziare prima di {}." #. module: assets_management +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__management_type__dismiss #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -#: selection:wizard.account.move.manage.asset,management_type:0 -#: selection:wizard.invoice.manage.asset,management_type:0 msgid "Dismiss Asset" -msgstr "Dismetti bene ammortizzabile" +msgstr "Dismetti Cespite" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Dismiss Asset and Show" -msgstr "Dismetti bene ammortizzabile e Mostra" +msgstr "Dismetti Cespite e Mostra" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__dismiss_date -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__dismiss_date msgid "Dismiss Date" msgstr "Data dismissione" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__dismiss_move_id -#, fuzzy msgid "Dismiss Move" msgstr "Registrazione contabile dismissione" #. module: assets_management +#: model:ir.model.fields,field_description:assets_management.field_account_account__display_name +#: model:ir.model.fields,field_description:assets_management.field_account_fiscal_year__display_name +#: model:ir.model.fields,field_description:assets_management.field_account_journal__display_name +#: model:ir.model.fields,field_description:assets_management.field_account_move__display_name +#: model:ir.model.fields,field_description:assets_management.field_account_move_line__display_name #: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__display_name #: model:ir.model.fields,field_description:assets_management.field_asset_asset__display_name #: model:ir.model.fields,field_description:assets_management.field_asset_category__display_name @@ -1574,67 +1484,60 @@ msgstr "Registrazione contabile dismissione" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__display_name #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__display_name #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__display_name -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__display_name msgid "Display Name" msgstr "Nome visualizzato" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:194 -#: code:addons/assets_management/report/asset_journal_xlsx.py:326 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:192 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_accounting_doc__document_date #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_accounting_doc__document_date #, python-format msgid "Document Date" -msgstr "Data documento" +msgstr "Data Documento" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:190 -#: code:addons/assets_management/report/asset_journal_xlsx.py:322 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:188 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_accounting_doc__document_nr #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_accounting_doc__document_nr #, python-format msgid "Document Nr" -msgstr "N° documento" +msgstr "N. Documento" #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:257 -#, python-format -msgid "Every invoice line must share the same account!" -msgstr "Ogni riga di fattura deve lo stesso conto!" - -#. module: assets_management -#: code:addons/assets_management/models/account_invoice.py:102 -#: code:addons/assets_management/models/account_move.py:102 +#: code:addons/assets_management/models/account_move.py:0 #, python-format msgid "Every line is already linked to an asset." -msgstr "Ogni riga è già collegata ad un cespite." +msgstr "Ogni linea è già collegata a un cespite." #. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:253 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "Every move line must share the same account!" -msgstr "Ogni riga di registrazione deve avere lo stesso conto!" +msgstr "Ogni riga di movimento deve avere lo stesso conto!" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_journal_report_form_view -#, fuzzy msgid "Export Journal Report" -msgstr "Export Excel" +msgstr "Esporta Stampa Registro" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_previsional_report_form_view -#, fuzzy msgid "Export Previsional Report" -msgstr "Export Excel" +msgstr "Esporta Stampa Previsionale" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:246 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "" -"Fields `Force All Dep. Num` and `Force First Dep. Num` cannot be both active." +"Fields `Force All Dep. Num` and `Force First Dep. Num` cannot be both " +"active." msgstr "" +"Campi `Forza Tutti Num. Amm.ti. ` e `Forza Primo Num. Amm.to` non possono essere entrambi " +"attivi." #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_generate_depreciation_form_view @@ -1646,14 +1549,14 @@ msgstr "Filtri" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__first_dep_nr msgid "First Dep. Num" -msgstr "N° primo amm.to" +msgstr "Primo Amm.to Nr" #. module: assets_management #: model:ir.model,name:assets_management.model_account_fiscal_year #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__fiscal_year_id #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__fiscal_year_id msgid "Fiscal Year" -msgstr "Anno fiscale" +msgstr "Anni fiscali" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__message_follower_ids @@ -1671,64 +1574,60 @@ msgid "Followers (Partners)" msgstr "Followers (Partner)" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:171 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "" "Following lines are linked to posted account moves, and cannot be deleted:\n" msgstr "" +"Le righe seguenti sono collegate a registrazioni contabili contabilizzate, e non possono essere eliminati:\n" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:203 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "" "Following lines are linked to posted account moves, and cannot be deleted:\n" "{}" msgstr "" +"Le righe seguenti sono collegate a registrazioni contabili contabilizzate, e non possono essere eliminati:\n" +"{}" + +#. module: assets_management +#: model:ir.model.fields,help:assets_management.field_asset_asset__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__force_all_dep_nr -#, fuzzy msgid "Force All Dep. Num" msgstr "Forza TUTTI Nr amm.to" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__force_dep_nr -#, fuzzy msgid "Force Dep. Num" msgstr "Primo Nr amm.to" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__force_first_dep_nr -#, fuzzy msgid "Force First Dep. Num" msgstr "Forza PRIMO Nr amm.to" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_mode_line__from_nr msgid "From Nr" -msgstr "Dal n°" +msgstr "Dal N." #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:417 -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:434 -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:603 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format -msgid "From invoice(s) " -msgstr "Dalla fattura/e " - -#. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:420 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:437 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:615 -#, fuzzy, python-format msgid "From move(s) " -msgstr "Dalla registrazione/i " +msgstr "Da movimento/i " #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_category__fund_account_id -#, fuzzy msgid "Fund Account" -msgstr "Conto fondo bene ammortizzabile" +msgstr "Conto fondo Cespite" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view @@ -1736,10 +1635,10 @@ msgid "Gain" msgstr "Plusvalenza" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:278 -#: code:addons/assets_management/report/asset_journal_xlsx.py:380 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:276 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:349 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Gain / Loss" msgstr "Plusvalenza / Minusvalenza" @@ -1766,11 +1665,11 @@ msgid "General Info" msgstr "Info generali" #. module: assets_management -#: code:addons/assets_management/report/asset_journal.py:265 -#: code:addons/assets_management/report/asset_previsional.py:294 +#: code:addons/assets_management/report/asset_journal.py:0 +#: code:addons/assets_management/report/asset_previsional.py:0 #, python-format msgid "General Total" -msgstr "Totale generale" +msgstr "Totale Complessivo" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_generate_depreciation_form_view @@ -1779,7 +1678,6 @@ msgstr "Genera" #. module: assets_management #: model:ir.model,name:assets_management.model_wizard_asset_generate_depreciation -#, fuzzy msgid "Generate Asset Depreciations" msgstr "Generare ammortamenti" @@ -1787,13 +1685,13 @@ msgstr "Generare ammortamenti" #: model:ir.actions.act_window,name:assets_management.action_wizard_asset_generate_depreciation #: model:ir.ui.menu,name:assets_management.menu_wizard_asset_generate_depreciation msgid "Generate Depreciations" -msgstr "Generare ammortamenti" +msgstr "Genera ammortamenti" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_form_view #: model_terms:ir.ui.view,arch_db:assets_management.view_asset_depreciation_form msgid "Generate Move" -msgstr "Generare registrazione" +msgstr "Genera registrazione" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.asset_form_view @@ -1819,14 +1717,14 @@ msgid "Hidden" msgstr "Nascosto" #. module: assets_management -#: model:ir.model.fields,field_description:assets_management.field_account_invoice__hide_link_asset_button +#: model:ir.model.fields,field_description:assets_management.field_account_bank_statement_line__hide_link_asset_button #: model:ir.model.fields,field_description:assets_management.field_account_move__hide_link_asset_button -#, fuzzy +#: model:ir.model.fields,field_description:assets_management.field_account_payment__hide_link_asset_button msgid "Hide Asset Button" -msgstr "Nascondo pulsante Bene Amm.le" +msgstr "Nascondo pulsante Cespite Amm.le" #. module: assets_management -#: selection:asset.depreciation.line,move_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_line__move_type__historical #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view msgid "Historical" msgstr "Storico" @@ -1837,6 +1735,11 @@ msgid "Historical Amount" msgstr "Valore storico" #. module: assets_management +#: model:ir.model.fields,field_description:assets_management.field_account_account__id +#: model:ir.model.fields,field_description:assets_management.field_account_fiscal_year__id +#: model:ir.model.fields,field_description:assets_management.field_account_journal__id +#: model:ir.model.fields,field_description:assets_management.field_account_move__id +#: model:ir.model.fields,field_description:assets_management.field_account_move_line__id #: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__id #: model:ir.model.fields,field_description:assets_management.field_asset_asset__id #: model:ir.model.fields,field_description:assets_management.field_asset_category__id @@ -1868,126 +1771,85 @@ msgstr "Valore storico" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__id #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__id #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__id -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__id msgid "ID" -msgstr "ID" +msgstr "" #. module: assets_management -#: model:ir.model.fields,help:assets_management.field_asset_asset__message_unread -msgid "If checked new messages require your attention." -msgstr "Se selezionato, nuovi messaggi richiedono attenzione." +#: model:ir.model.fields,field_description:assets_management.field_asset_asset__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: assets_management +#: model:ir.model.fields,help:assets_management.field_asset_asset__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "Icona per indicare un'attività anomala." #. module: assets_management #: model:ir.model.fields,help:assets_management.field_asset_asset__message_needaction +#: model:ir.model.fields,help:assets_management.field_asset_asset__message_unread msgid "If checked, new messages require your attention." msgstr "Se selezionato, nuovi messaggi richiedono attenzione." #. module: assets_management #: model:ir.model.fields,help:assets_management.field_asset_asset__message_has_error msgid "If checked, some messages have a delivery error." -msgstr "Se selezionato, alcuni messaggi presentano un errore di consegna." +msgstr "Se selezionato, alcuni messaggi presentano un errore di consegna. " #. module: assets_management -#: selection:asset.depreciation.line,move_type:0 -#: selection:asset.depreciation.line.type,type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_line__move_type__in +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_line_type__type__in #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view msgid "In" msgstr "Rettifica positiva" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:253 -#: code:addons/assets_management/report/asset_journal_xlsx.py:355 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:251 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:324 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__amount_in #, python-format msgid "In Amount" msgstr "Rettifica positiva" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:297 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:295 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "In Amount - Detail" -msgstr "Rettifica positiva - Dettaglio" +msgstr "Importo Positivo - Dettaglio" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_form_view #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_tree_view #: model_terms:ir.ui.view,arch_db:assets_management.view_asset_depreciation_form -#: model_terms:ir.ui.view,arch_db:assets_management.view_invoice_line_form_inherit #: model_terms:ir.ui.view,arch_db:assets_management.view_move_line_form_inherit msgid "In/Out Amount Type" msgstr "+/- Tipo operazione" #. module: assets_management -#: code:addons/assets_management/models/asset_accounting_info.py:163 +#: code:addons/assets_management/models/asset_accounting_info.py:0 #, python-format msgid "Incoherent asset data." -msgstr "Dati cespite incoerenti." +msgstr "Data cespite anomala." #. module: assets_management -#: code:addons/assets_management/models/asset_accounting_info.py:152 +#: code:addons/assets_management/models/asset_accounting_info.py:0 #, python-format msgid "Incoherent company data." -msgstr "Dati azienda incoerenti." - -#. module: assets_management -#: code:addons/assets_management/models/asset_accounting_info.py:171 -#, python-format -msgid "Incoherent invoice data." -msgstr "Dati fattura incoerenti." +msgstr "Dati azienda anomali." #. module: assets_management -#: code:addons/assets_management/models/asset_accounting_info.py:179 +#: code:addons/assets_management/models/asset_accounting_info.py:0 #, python-format msgid "Incoherent move data." -msgstr "Dati registrazione incoerenti." +msgstr "Data movimento anomala." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:221 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "Invalid search operator!" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_account_invoice -#: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__invoice_id -#: model_terms:ir.ui.view,arch_db:assets_management.asset_accounting_info_search_view -msgid "Invoice" -msgstr "Fattura" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_account_invoice_line -#: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__invoice_line_id -msgid "Invoice Line" -msgstr "Riga fattura" - -#. module: assets_management -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__invoice_line_ids -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -msgid "Invoice Lines" -msgstr "Righe fattura" - -#. module: assets_management -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__is_invoice_state_ok -msgid "Invoice State" -msgstr "Stato fattura" - -#. module: assets_management -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__invoice_type -msgid "Invoice Type" -msgstr "Tipo fattura" - -#. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -msgid "Invoice lines" -msgstr "Righe fattura" - -#. module: assets_management -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__invoice_ids -msgid "Invoices" -msgstr "Fatture" +msgstr "Operatore di ricerca non valido!" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__message_is_follower @@ -2002,8 +1864,8 @@ msgstr "Registro" #. module: assets_management #: model:ir.model,name:assets_management.model_account_move -msgid "Journal Entries" -msgstr "Registrazioni contabili" +msgid "Journal Entry" +msgstr "Registrazione contabile" #. module: assets_management #: model:ir.model,name:assets_management.model_account_move_line @@ -2016,6 +1878,11 @@ msgid "Last Dep." msgstr "Ultimo amm.to" #. module: assets_management +#: model:ir.model.fields,field_description:assets_management.field_account_account____last_update +#: model:ir.model.fields,field_description:assets_management.field_account_fiscal_year____last_update +#: model:ir.model.fields,field_description:assets_management.field_account_journal____last_update +#: model:ir.model.fields,field_description:assets_management.field_account_move____last_update +#: model:ir.model.fields,field_description:assets_management.field_account_move_line____last_update #: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info____last_update #: model:ir.model.fields,field_description:assets_management.field_asset_asset____last_update #: model:ir.model.fields,field_description:assets_management.field_asset_category____last_update @@ -2047,7 +1914,6 @@ msgstr "Ultimo amm.to" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation____last_update #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report____last_update #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report____last_update -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset____last_update msgid "Last Modified on" msgstr "Ultima modifica il" @@ -2081,7 +1947,6 @@ msgstr "Ultima modifica il" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__write_uid #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__write_uid #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__write_uid -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__write_uid msgid "Last Updated by" msgstr "Ultimo aggiornamento di" @@ -2115,7 +1980,6 @@ msgstr "Ultimo aggiornamento di" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_generate_depreciation__write_date #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__write_date #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__write_date -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__write_date msgid "Last Updated on" msgstr "Ultimo aggiornamento il" @@ -2126,17 +1990,14 @@ msgid "Lines" msgstr "Righe" #. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.invoice_form_inherit -#: model_terms:ir.ui.view,arch_db:assets_management.invoice_supplier_form_inherit #: model_terms:ir.ui.view,arch_db:assets_management.view_move_form_inherit msgid "Link to Asset" -msgstr "Collegare a cespite" +msgstr "Beni ammortizzabili" #. module: assets_management #: model:ir.actions.act_window,name:assets_management.action_wizard_account_move_manage_asset -#: model:ir.actions.act_window,name:assets_management.action_wizard_invoice_manage_asset msgid "Link to Assets" -msgstr "Collegare a cespiti" +msgstr "Beni ammortizzabili" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view @@ -2150,18 +2011,11 @@ msgstr "Allegato principale" #. module: assets_management #: model:ir.model,name:assets_management.model_wizard_account_move_manage_asset -#, fuzzy msgid "Manage Assets from Account Moves" msgstr "Richiede registrazione contabile" -#. module: assets_management -#: model:ir.model,name:assets_management.model_wizard_invoice_manage_asset -msgid "Manage Assets from Invoices" -msgstr "" - #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__management_type -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__management_type msgid "Management Type" msgstr "" @@ -2176,7 +2030,7 @@ msgid "Messages" msgstr "Messaggi" #. module: assets_management -#: selection:wizard.account.move.manage.asset,move_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__move_type__general msgid "Miscellaneous" msgstr "Varie" @@ -2190,14 +2044,14 @@ msgstr "Metodo" #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation__mode_name #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation__mode_name msgid "Mode Name" -msgstr "Nome metodo" +msgstr "Metodo" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__move_id #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__move_id #: model_terms:ir.ui.view,arch_db:assets_management.asset_accounting_info_search_view msgid "Move" -msgstr "Movimento" +msgstr "Registrazione" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__move_line_id @@ -2208,12 +2062,12 @@ msgstr "Riga movimento" #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__move_line_ids #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view msgid "Move Lines" -msgstr "Righe movimento" +msgstr "Righe di Movimento" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__is_move_state_ok msgid "Move State" -msgstr "Stato movimento" +msgstr "Stato registrazione" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__move_type @@ -2223,7 +2077,18 @@ msgstr "Tipo movimento" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__move_ids msgid "Moves" -msgstr "Movimenti" +msgstr "Registrazioni contabili" + +#. module: assets_management +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#, python-format +msgid "Multiple partners found in move lines!" +msgstr "Partner multipli trovati nelle righe movimento!" + +#. module: assets_management +#: model:ir.model.fields,field_description:assets_management.field_asset_asset__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__name @@ -2236,18 +2101,17 @@ msgstr "Movimenti" #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_totals__name #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_totals__name #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__name -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__name msgid "Name" msgstr "Nome" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__needs_previsional msgid "Needs Previsional" -msgstr "" +msgstr "Necessità Previsionali" #. module: assets_management -#: code:addons/assets_management/report/asset_journal.py:456 -#: code:addons/assets_management/report/asset_previsional.py:487 +#: code:addons/assets_management/report/asset_journal.py:0 +#: code:addons/assets_management/report/asset_previsional.py:0 #, python-format msgid "New" msgstr "Nuovo" @@ -2265,47 +2129,48 @@ msgstr "Riepilogo prossima attività" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__activity_type_id msgid "Next Activity Type" -msgstr "Tipo prossima attività" +msgstr "Tipo Prossima Attività" #. module: assets_management -#: code:addons/assets_management/models/account_fiscal_year.py:28 +#: code:addons/assets_management/models/account_fiscal_year.py:0 #, python-format msgid "No fiscal year defined for date " -msgstr "Nessun anno fiscale definito per questa data " +msgstr "Nessun anno fiscale definito per data " #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:541 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "No fiscal year defined for date {}" -msgstr "Nessun anno fiscale definito per la data {}" +msgstr "Nessun anno fiscale definito per data {}" #. module: assets_management -#: code:addons/assets_management/report/asset_journal.py:116 -#: code:addons/assets_management/report/asset_previsional.py:121 +#: code:addons/assets_management/report/asset_journal.py:0 +#: code:addons/assets_management/report/asset_previsional.py:0 #, python-format msgid "No report has been defined for type `{}`." -msgstr "Nessun report è stato definito per il tipo `{}`." +msgstr "Nessuna stampa definita per tipo `{}`." #. module: assets_management -#: code:addons/assets_management/report/asset_journal.py:121 -#: code:addons/assets_management/report/asset_previsional.py:126 +#: code:addons/assets_management/report/asset_journal.py:0 +#: code:addons/assets_management/report/asset_previsional.py:0 #, python-format msgid "No report type has been declared for current print." -msgstr "" +msgstr "Nessun tipo di report è stato dichiarato per la stampa corrente." #. module: assets_management -#: selection:asset.asset,state:0 selection:asset.depreciation,state:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_asset__state__non_depreciated +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation__state__non_depreciated msgid "Non Depreciated" -msgstr "Non ammortizzato" +msgstr "" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__message_needaction_counter msgid "Number of Actions" -msgstr "Numero di azioni" +msgstr "Numero di Azioni" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__message_has_error_counter -msgid "Number of error" +msgid "Number of errors" msgstr "Numero di errori" #. module: assets_management @@ -2323,25 +2188,13 @@ msgstr "Numero di messaggi con errore di consegna" msgid "Number of unread messages" msgstr "Numero di messaggi non letti" -#. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -msgid "" -"Only confirmed invoices can be used to create, update or dismiss assets!
\n" -" Please select only open or paid invoices." -msgstr "" -"Solo con le fatture validate è possibile creare, aggiornare o dismettere un " -"bene ammortizzabile!
\n" -" Scegli solo le fatture aperte o pagate." - #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view msgid "" "Only posted moves can be used to create, update or dismiss assets!
\n" " Please select posted moves only." msgstr "" -"Solo con le registrazioni contabili emesse è possibile creare, aggiornare o " -"dismettere un bene ammortizzabile!
\n" +"Solo con le registrazioni contabili emesse è possibile creare, aggiornare o dismettere un cespite!
\n" " Scegli solo le registrazioni emesse." #. module: assets_management @@ -2351,49 +2204,41 @@ msgid "Options" msgstr "Opzioni" #. module: assets_management -#: selection:asset.depreciation.line,move_type:0 -#: selection:asset.depreciation.line.type,type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_line__move_type__out +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_line_type__type__out #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_search_view msgid "Out" msgstr "Rettifica negativa" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:258 -#: code:addons/assets_management/report/asset_journal_xlsx.py:360 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:256 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:329 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__amount_out #, python-format msgid "Out Amount" msgstr "Rettifica negativa" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:301 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:299 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Out Amount - Detail" -msgstr "Rettifica negativa - Dettaglio" +msgstr "Importi Negativi - Dettaglio" #. module: assets_management -#: selection:asset.asset,activity_state:0 -msgid "Overdue" -msgstr "" - -#. module: assets_management -#: selection:wizard.account.move.manage.asset,management_type:0 -#: selection:wizard.invoice.manage.asset,management_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__management_type__partial_dismiss msgid "Partial Dismiss" msgstr "Dismissione Parziale" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Partial Dismiss Asset" msgstr "Dismissione Parziale" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Partial Dismiss Asset and Show" msgstr "Dismetti Cespite e Mostra" @@ -2403,29 +2248,24 @@ msgid "Partial Dismissal" msgstr "Dismissione Parziale" #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:485 -#, python-format -msgid "Partial dismissal from invoice(s) {}" -msgstr "Dismissione Parziale dalla fattura/e {}" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:488 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "Partial dismissal from move(s) {}" -msgstr "Dismissione Parziale dalla registrazione/i {}" +msgstr "Dismissione parziale da movimento/i {}" #. module: assets_management -#: selection:asset.asset,state:0 selection:asset.depreciation,state:0 +#: model:ir.model.fields.selection,name:assets_management.selection__asset_asset__state__partially_depreciated +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation__state__partially_depreciated msgid "Partially Depreciated" -msgstr "Parzialmente ammortizzato" +msgstr "Parzialmente Ammortizzato" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:182 -#: code:addons/assets_management/report/asset_journal_xlsx.py:314 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:180 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Partner" -msgstr "Partner" +msgstr "" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_accounting_doc__partner_name @@ -2437,7 +2277,7 @@ msgstr "Nome partner" #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_accounting_doc__partner_ref #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_accounting_doc__partner_ref msgid "Partner Ref" -msgstr "Rif. partner" +msgstr "Riferimento partner" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_accounting_doc__partner_vat @@ -2446,45 +2286,26 @@ msgid "Partner Vat" msgstr "P.IVA partner" #. module: assets_management -#: selection:asset.depreciation.mode.line,application:0 #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_mode_line__percentage #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__percentage #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__percentage +#: model:ir.model.fields.selection,name:assets_management.selection__asset_depreciation_mode_line__application__percentage msgid "Percentage" msgstr "Percentuale" #. module: assets_management -#: selection:asset.asset,activity_state:0 -msgid "Planned" -msgstr "Pianificato" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:225 -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:269 -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:301 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:221 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:265 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:297 -#, fuzzy, python-format +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#, python-format msgid "Please choose an asset before continuing!" -msgstr "Scegli un Cespite prima di continuare!" +msgstr "Si prega di scegliere un cespite prima di continuare!" #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:306 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:302 -#, fuzzy, python-format +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#, python-format msgid "Please choose at least one depreciation type!" -msgstr "Scegli almeno una riga di tipo ammortamento!" - -#. module: assets_management -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view -#, fuzzy -msgid "" -"Please select only invoices of the same type!
\n" -" Choose one of the following invoices type:" -msgstr "" -"Scegli solo le fatture dello stesso tipo!
\n" -" Scegli i seguenti tipi di fatture:" +msgstr "Si prega di scegliere almeno un tipo di ammortamento!" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__access_url @@ -2492,13 +2313,13 @@ msgid "Portal Access URL" msgstr "URL di accesso al portale" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:263 -#: code:addons/assets_management/report/asset_journal_xlsx.py:365 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:261 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:334 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Prev. Year Dep. Fund" -msgstr "Fondo amm.to anno prec." +msgstr "Fondo Amm.to Anno Prec." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional__previsional_line_ids @@ -2513,19 +2334,17 @@ msgstr "Stampa su registro beni ammortizzabili" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_journal_report_form_view -#, fuzzy msgid "Print Journal Report" msgstr "Stampa PDF" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_previsional_report_form_view -#, fuzzy msgid "Print Previsional Report" msgstr "Stampa PDF" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:231 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:229 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Pro Rata Temporis" msgstr "" @@ -2537,15 +2356,14 @@ msgid "Pro-rata Temporis" msgstr "" #. module: assets_management -#: selection:wizard.account.move.manage.asset,move_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__move_type__purchase msgid "Purchase" msgstr "Acquisto" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:160 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:158 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__asset_purchase_amount -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__asset_purchase_amount #, python-format msgid "Purchase Amount" msgstr "Valore acquisto" @@ -2553,7 +2371,6 @@ msgstr "Valore acquisto" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__purchase_date #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__purchase_date -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__purchase_date #: model_terms:ir.ui.view,arch_db:assets_management.asset_search_view msgid "Purchase Date" msgstr "Data acquisto" @@ -2563,11 +2380,6 @@ msgstr "Data acquisto" msgid "Purchase Info" msgstr "Informazioni acquisto" -#. module: assets_management -#: model:ir.model.fields,field_description:assets_management.field_asset_asset__purchase_invoice_id -msgid "Purchase Invoice" -msgstr "Fattura acquisto" - #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__purchase_move_id msgid "Purchase Move" @@ -2579,17 +2391,17 @@ msgid "Purchase Value" msgstr "Valore acquisto" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:165 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:163 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Purchased as New / Used" -msgstr "Acquistato come nuovo / usato" +msgstr "Acquisto Nuovo / Usato" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.asset_dep_line_form_view #: model_terms:ir.ui.view,arch_db:assets_management.view_asset_depreciation_form msgid "Regenerate Move" -msgstr "Rigenerare registrazione" +msgstr "Rigenera registrazione" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_accounting_info__relation_type @@ -2622,12 +2434,12 @@ msgstr "Rimuovi registrazione" #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__report_id #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_totals__report_id msgid "Report" -msgstr "" +msgstr "Stampa" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__report_accounting_doc_ids msgid "Report Accounting Doc" -msgstr "Report documenti contabili" +msgstr "Stampa documenti contabili" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal__report_asset_ids @@ -2637,7 +2449,87 @@ msgstr "Report documenti contabili" #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_category__report_asset_ids #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation__report_asset_id msgid "Report Asset" -msgstr "" +msgstr "Stampa Cespiti" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_journal +msgid "Report Asset Journal" +msgstr "Stampa Registro Cespiti" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_journal_accounting_doc +msgid "Report Asset Journal Accounting Doc" +msgstr "Stampa Registro Cespiti Doc Contabili" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_journal_asset +msgid "Report Asset Journal Asset" +msgstr "Stampa Registro Cespiti" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_journal_category +msgid "Report Asset Journal Category" +msgstr "Stampa Registro Categorie Cespiti" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_journal_depreciation +msgid "Report Asset Journal Depreciation" +msgstr "Stampa Registro Amm.ti Cespiti" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_journal_depreciation_line_year +msgid "Report Asset Journal Depreciation Line Year" +msgstr "Stampa Registro Amm.ti Righe Anno Cespiti" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_journal_totals +msgid "Report Asset Journal Totals" +msgstr "Stampa Registro Cespiti Totali" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_assets_management_report_asset_journal_xlsx +msgid "Report Asset Journal Xlsx" +msgstr "Stampa Registro Cespiti Xlsx" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_previsional +msgid "Report Asset Previsional" +msgstr "Stampa Registro Cespiti Previsionale" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_previsional_accounting_doc +msgid "Report Asset Previsional Accounting Doc" +msgstr "Stampa Registro Cespiti Doc Contabili Previsionale" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_previsional_asset +msgid "Report Asset Previsional Asset" +msgstr "Stampa Registro Cespiti Previsionale" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_previsional_category +msgid "Report Asset Previsional Category" +msgstr "Stampa Registro Categorie Cespiti Previsionale" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_previsional_depreciation +msgid "Report Asset Previsional Depreciation" +msgstr "Stampa Registro Amm.ti Cespiti Previsionale" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_previsional_depreciation_line_year +msgid "Report Asset Previsional Depreciation Line Year" +msgstr "Stampa Registro Amm.ti Cespiti Anno Previsionale" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_asset_previsional_totals +msgid "Report Asset Previsional Totals" +msgstr "Stampa Registro Cespiti Previsionale Totali" + +#. module: assets_management +#: model:ir.model,name:assets_management.model_report_assets_management_report_asset_previsional_xlsx +msgid "Report Asset Previsional Xlsx" +msgstr "Stampa Registro Cespiti Previsionale Xlsx" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal__report_category_ids @@ -2647,7 +2539,7 @@ msgstr "" #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__report_category_id #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_totals__report_category_id msgid "Report Category" -msgstr "" +msgstr "Stampa Categoria" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal__report_depreciation_ids @@ -2657,13 +2549,13 @@ msgstr "" #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__report_depreciation_ids #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__report_depreciation_id msgid "Report Depreciation" -msgstr "" +msgstr "Report amm." #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal__report_depreciation_line_year_ids #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional__report_depreciation_line_year_ids msgid "Report Depreciation Line Year" -msgstr "" +msgstr "Stampa Annuale Riga Amm.to" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation__report_depreciation_year_line_ids @@ -2677,25 +2569,25 @@ msgstr "" #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__report_footer_year #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__report_footer_year msgid "Report Footer Year" -msgstr "" +msgstr "Anno piede di pagina" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal__report_name #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional__report_name msgid "Report Name" -msgstr "Nome del report" +msgstr "Nome della stampa" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_asset__report_purchase_doc_id #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__report_purchase_doc_id msgid "Report Purchase Doc" -msgstr "" +msgstr "Stampa Doc. acquisto" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_asset__report_sale_doc_id #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_asset__report_sale_doc_id msgid "Report Sale Doc" -msgstr "" +msgstr "Stampa Doc. vendita" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal__report_total_ids @@ -2703,7 +2595,7 @@ msgstr "" #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional__report_total_ids #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_category__report_total_ids msgid "Report Total" -msgstr "" +msgstr "Report totale" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__requires_account_move @@ -2734,10 +2626,10 @@ msgid "Res Model" msgstr "Modello res" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:283 -#: code:addons/assets_management/report/asset_journal_xlsx.py:385 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:281 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:354 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Residual" msgstr "Residuo" @@ -2753,7 +2645,7 @@ msgid "Responsible User" msgstr "Utente Responsabile" #. module: assets_management -#: selection:wizard.account.move.manage.asset,move_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__move_type__sale msgid "Sale" msgstr "Vendita" @@ -2767,11 +2659,6 @@ msgstr "Data vendita" msgid "Sale Info" msgstr "Informazioni vendita" -#. module: assets_management -#: model:ir.model.fields,field_description:assets_management.field_asset_asset__sale_invoice_id -msgid "Sale Invoice" -msgstr "Fattura vendita" - #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__sale_move_id msgid "Sale Move" @@ -2817,11 +2704,11 @@ msgid "Sold" msgstr "Venduto" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:223 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:221 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Starting From" -msgstr "Data inzio amm.to" +msgstr "Inizio Da" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__state @@ -2830,8 +2717,8 @@ msgid "State" msgstr "Stato" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:169 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:167 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Status" msgstr "Stato" @@ -2855,12 +2742,12 @@ msgid "Supplier" msgstr "Fornitore" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:198 -#: code:addons/assets_management/report/asset_journal_xlsx.py:330 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:196 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Supplier Ref" -msgstr "Rif. documento fornitore" +msgstr "Rif. Fornitore" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__supplier_ref @@ -2883,69 +2770,66 @@ msgid "Technical Data" msgstr "Dati tecnici" #. module: assets_management -#: code:addons/assets_management/models/asset.py:158 +#: code:addons/assets_management/models/asset.py:0 #, python-format msgid "" -"The assets you are trying to delete are currently linked to accounting info. " -"Please remove them if necessary before removing these assets:\n" +"The assets you are trying to delete are currently linked to accounting info." +" Please remove them if necessary before removing these assets:\n" msgstr "" -"Stai cercando di cancellare registrazioni collegate al cespite. Occore " -"rimuoverle per completare l'operazione:\n" +"I cespiti che si sta tentando di eliminare sono collegati a registrazioni contabili." +" Si prega di rimuoverle se necessario prima di rimuovere questi cespiti:\n" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:161 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "" "The lines you you are trying to delete are currently linked to accounting " "info. Please remove them if necessary before removing these lines:\n" msgstr "" -"Stai cercando di cancellare registrazioni collegate al cespite. Occore " -"rimuoverle per completare l'operazione:\n" +"Le righe che si sta tentando di eliminare sono collegati a registrazioni " +"contabili. Si prega di rimuoverle se necessario prima di rimuovere queste righe:\n" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_mode.py:83 +#: code:addons/assets_management/models/asset_depreciation_mode.py:0 #, python-format -msgid "There can be no more than 1 default depreciation mode for each company." +msgid "" +"There can be no more than 1 default depreciation mode for each company." msgstr "" +"Non ci può essere più di 1 modo di amm.to di default per ogni azienda." #. module: assets_management #: model_terms:ir.actions.act_window,help:assets_management.action_asset_accounting_info msgid "There is no archive about assets, invoices and account moves... yet!" -msgstr "" +msgstr "Non c'è un archivio riguardo cespiti, fatture e registrazioni contabili... ancora!" #. module: assets_management -#: code:addons/assets_management/report/asset_journal.py:196 -#: code:addons/assets_management/report/asset_previsional.py:199 +#: code:addons/assets_management/report/asset_journal.py:0 +#: code:addons/assets_management/report/asset_previsional.py:0 #, python-format msgid "There is nothing to print according to current settings!" -msgstr "Non c’è nulla da stampare in base ai parametri scelti!" +msgstr "Non c'è alcunché da stampare in base alle scelte impostate!" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_journal_report__date #: model:ir.model.fields,field_description:assets_management.field_wizard_asset_previsional_report__date msgid "To Date" -msgstr "Alla data" +msgstr "Alla Data" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_mode_line__to_nr msgid "To Nr" -msgstr "Al n°" +msgstr "Al Nr" #. module: assets_management -#: selection:asset.asset,activity_state:0 -msgid "Today" -msgstr "Oggi" - -#. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:342 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:311 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "Total" msgstr "Totale" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:346 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:315 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_category_depreciation_type__depreciation_type_id #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line__move_type #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_line_type__type @@ -2968,17 +2852,22 @@ msgid "Type Name" msgstr "Nome tipo" #. module: assets_management -#: code:addons/assets_management/report/asset_journal.py:455 -#: code:addons/assets_management/report/asset_previsional.py:486 +#: model:ir.model.fields,help:assets_management.field_asset_asset__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: assets_management +#: code:addons/assets_management/report/asset_journal.py:0 +#: code:addons/assets_management/report/asset_previsional.py:0 #, python-format msgid "Unknown" -msgstr "Non definito" +msgstr "Sconosciuto" #. module: assets_management -#: code:addons/assets_management/models/asset_accounting_info.py:246 +#: code:addons/assets_management/models/asset_accounting_info.py:0 #, python-format msgid "Unknown Asset" -msgstr "Cespite non definito" +msgstr "Cespite Sconosciuto" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_asset__message_unread @@ -2992,36 +2881,32 @@ msgstr "Contatore di messaggi non letti" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Update Asset" msgstr "Aggiorna Cespite" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view -#: model_terms:ir.ui.view,arch_db:assets_management.wizard_invoice_mange_asset_form_view msgid "Update Asset and Show" msgstr "Aggiorna Cespite e Mostra" #. module: assets_management -#: selection:wizard.account.move.manage.asset,management_type:0 -#: selection:wizard.invoice.manage.asset,management_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__management_type__update msgid "Update Existing" -msgstr "Aggiorna Esistente" +msgstr "" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__amount_depreciable_updated msgid "Updated Amount" -msgstr "Importo aggiornato" +msgstr "Aggiorma Valore" #. module: assets_management -#: code:addons/assets_management/report/asset_journal.py:456 -#: code:addons/assets_management/report/asset_previsional.py:487 +#: code:addons/assets_management/report/asset_journal.py:0 +#: code:addons/assets_management/report/asset_previsional.py:0 #: model:ir.model.fields,field_description:assets_management.field_asset_asset__used #: model:ir.model.fields,field_description:assets_management.field_wizard_account_move_manage_asset__used -#: model:ir.model.fields,field_description:assets_management.field_wizard_invoice_manage_asset__used #, python-format msgid "Used" -msgstr "Bene usato" +msgstr "Usato" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation_mode__used_asset_coeff @@ -3029,9 +2914,9 @@ msgid "Used Asset Coeff." msgstr "" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:186 -#: code:addons/assets_management/report/asset_journal_xlsx.py:318 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:184 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #, python-format msgid "VAT" msgstr "P.IVA" @@ -3044,14 +2929,14 @@ msgid "Vacuum Empty Asset Accounting Info" msgstr "" #. module: assets_management -#: selection:wizard.invoice.manage.asset,invoice_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__move_type__in_invoice msgid "Vendor Bill" -msgstr "Fattura fornitore" +msgstr "Fattura Fornitore" #. module: assets_management -#: selection:wizard.invoice.manage.asset,invoice_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__move_type__in_refund msgid "Vendor Credit Note" -msgstr "Nota credito fornitore" +msgstr "Nota di Credito Fornitore" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_journal_report_form_view @@ -3064,8 +2949,8 @@ msgid "View Previsional Report" msgstr "Vedi" #. module: assets_management -#: code:addons/assets_management/models/asset.py:220 -#: code:addons/assets_management/models/asset_depreciation.py:245 +#: code:addons/assets_management/models/asset.py:0 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "Warning!" msgstr "Attenzione!" @@ -3082,25 +2967,22 @@ msgstr "Storico comunicazione sito" #. module: assets_management #: model:ir.model,name:assets_management.model_wizard_asset_journal_report -#, fuzzy msgid "Wizard Asset Journal Report" msgstr "Registro beni ammortizzabili" #. module: assets_management #: model:ir.model,name:assets_management.model_wizard_asset_previsional_report -#, fuzzy msgid "Wizard Asset Previsional Report" msgstr "Registro Previsionale" #. module: assets_management -#: selection:wizard.account.move.manage.asset,move_type:0 -#: selection:wizard.invoice.manage.asset,invoice_type:0 +#: model:ir.model.fields.selection,name:assets_management.selection__wizard_account_move_manage_asset__move_type__wrong msgid "Wrong" -msgstr "Errore" +msgstr "" #. module: assets_management -#: code:addons/assets_management/report/asset_journal_xlsx.py:244 -#: code:addons/assets_management/report/asset_previsional_xlsx.py:242 +#: code:addons/assets_management/report/asset_journal_xlsx.py:0 +#: code:addons/assets_management/report/asset_previsional_xlsx.py:0 #: model:ir.model.fields,field_description:assets_management.field_report_asset_journal_depreciation_line_year__year #: model:ir.model.fields,field_description:assets_management.field_report_asset_previsional_depreciation_line_year__year #, python-format @@ -3116,54 +2998,35 @@ msgid "" msgstr "" #. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:216 -#, python-format -msgid "" -"You need to choose invoice lines with account `{}` if you need them to " -"create an asset for category `{}`!" -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:248 -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:292 -#, python-format -msgid "" -"You need to choose invoice lines with account `{}` if you need them to " -"dismiss asset `{}`!" -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_invoice_manage_asset.py:323 -#, python-format -msgid "" -"You need to choose invoice lines with account `{}` if you need them to " -"update asset `{}`!" -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:211 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "" "You need to choose move lines with account `{}` if you need them to create " "an asset for category `{}`!" msgstr "" +"Devi scegliere delle righe con conto `{}` se vuoi creare " +"un cespite per la categoria `{}`!" #. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:244 -#: code:addons/assets_management/wizard/account_move_manage_asset.py:288 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "" "You need to choose move lines with account `{}` if you need them to dismiss " "asset `{}`!" msgstr "" +"Devi scegliere delle righe con conto `{}` se vuoi dismettere " +"il cespite `{}`!" #. module: assets_management -#: code:addons/assets_management/wizard/account_move_manage_asset.py:319 +#: code:addons/assets_management/wizard/account_move_manage_asset.py:0 #, python-format msgid "" "You need to choose move lines with account `{}` if you need them to update " "asset `{}`!" msgstr "" +"Devi scegliere delle righe con conto `{}` se vuoi aggiornare " +"il cespite `{}`!" #. module: assets_management #: model:ir.model.fields,field_description:assets_management.field_asset_depreciation__zero_depreciation_until @@ -3171,55 +3034,47 @@ msgid "Zero Depreciation Up To" msgstr "Nessun Amm.to fino al" #. module: assets_management -#: code:addons/assets_management/models/asset.py:175 +#: code:addons/assets_management/models/asset.py:0 #, python-format msgid "" "`{}`: cannot change asset's company once it's already related to accounting " "info." msgstr "" +"`{}`: non è possibile cambiare l'azienda di un cespite già collegato ad informazioni " +"contabili." #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation_line.py:187 +#: code:addons/assets_management/models/asset_depreciation_line.py:0 #, python-format msgid "" -"`{}`: cannot change depreciation line's company once it's already related to " -"an asset." +"`{}`: cannot change depreciation line's company once it's already related to" +" an asset." msgstr "" +"`{}`: non è possibile cambiare l'azienda di una riga di amm.to già collegata" +" a un cespite." #. module: assets_management -#: code:addons/assets_management/models/account_invoice_line.py:38 -#, python-format -msgid "" -"`{}`: cannot change invoice line's company once it's already related to an " -"asset." -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/models/account_invoice.py:44 -#, python-format -msgid "" -"`{}`: cannot change invoice's company once it's already related to an asset." -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/models/account_move_line.py:38 +#: code:addons/assets_management/models/account_move_line.py:0 #, python-format msgid "" "`{}`: cannot change move line's company once it's already related to an " "asset." msgstr "" +"`{}`: non è possibile modificare l'azienda della riga già collegata a un " +"cespite." #. module: assets_management -#: code:addons/assets_management/models/account_move.py:44 +#: code:addons/assets_management/models/account_move.py:0 #, python-format msgid "" "`{}`: cannot change move's company once it's already related to an asset." msgstr "" +"`{}`: non è possibile cambiare l'azienda di un movimento già collegato a un cespite." #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_account_move_mange_asset_form_view msgid "move lines" -msgstr "" +msgstr "righe movimento" #. module: assets_management #: model_terms:ir.ui.view,arch_db:assets_management.wizard_asset_generate_depreciation_form_view @@ -3229,97 +3084,14 @@ msgid "or" msgstr "o" #. module: assets_management -#: model:ir.model,name:assets_management.model_report_assets_management_report_asset_journal_xlsx -msgid "report.assets_management.report_asset_journal_xlsx" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_assets_management_report_asset_previsional_xlsx -msgid "report.assets_management.report_asset_previsional_xlsx" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_journal -msgid "report_asset_journal" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_journal_accounting_doc -msgid "report_asset_journal_accounting_doc" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_journal_asset -msgid "report_asset_journal_asset" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_journal_category -msgid "report_asset_journal_category" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_journal_depreciation -msgid "report_asset_journal_depreciation" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_journal_depreciation_line_year -msgid "report_asset_journal_depreciation_line_year" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_journal_totals -msgid "report_asset_journal_totals" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_previsional -msgid "report_asset_previsional" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_previsional_accounting_doc -msgid "report_asset_previsional_accounting_doc" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_previsional_asset -msgid "report_asset_previsional_asset" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_previsional_category -msgid "report_asset_previsional_category" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_previsional_depreciation -msgid "report_asset_previsional_depreciation" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_previsional_depreciation_line_year -msgid "report_asset_previsional_depreciation_line_year" -msgstr "" - -#. module: assets_management -#: model:ir.model,name:assets_management.model_report_asset_previsional_totals -msgid "report_asset_previsional_totals" -msgstr "" - -#. module: assets_management -#: code:addons/assets_management/report/asset_journal.py:290 -#: code:addons/assets_management/report/asset_previsional.py:317 +#: code:addons/assets_management/report/asset_journal.py:0 +#: code:addons/assets_management/report/asset_previsional.py:0 #, python-format msgid "to date {}" msgstr "alla data {}" #. module: assets_management -#: code:addons/assets_management/models/asset_depreciation.py:627 +#: code:addons/assets_management/models/asset_depreciation.py:0 #, python-format msgid "{} - Depreciation" msgstr "{} - Ammortamento" - -#~ msgid "Date Range" -#~ msgstr "Intervallo data" diff --git a/assets_management/models/__init__.py b/assets_management/models/__init__.py index 2ab82465ee23..9e043ec0841c 100644 --- a/assets_management/models/__init__.py +++ b/assets_management/models/__init__.py @@ -4,8 +4,6 @@ from . import account_account from . import account_fiscal_year -from . import account_invoice -from . import account_invoice_line from . import account_journal from . import account_move from . import account_move_line diff --git a/assets_management/models/account_account.py b/assets_management/models/account_account.py index a48d2f3183d1..9e1a8b828219 100644 --- a/assets_management/models/account_account.py +++ b/assets_management/models/account_account.py @@ -2,14 +2,13 @@ # Copyright 2019 Openforce Srls Unipersonale (www.openforce.it) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import _, api, models +from odoo import _, models from odoo.exceptions import UserError class AccountAccount(models.Model): _inherit = "account.account" - @api.multi def unlink(self): if ( self.env["asset.category"] diff --git a/assets_management/models/account_invoice.py b/assets_management/models/account_invoice.py deleted file mode 100644 index 4962c163d702..000000000000 --- a/assets_management/models/account_invoice.py +++ /dev/null @@ -1,128 +0,0 @@ -# Author(s): Silvio Gregorini (silviogregorini@openforce.it) -# Copyright 2019 Openforce Srls Unipersonale (www.openforce.it) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import _, api, fields, models -from odoo.exceptions import ValidationError - - -class AccountInvoice(models.Model): - _inherit = "account.invoice" - - asset_accounting_info_ids = fields.One2many( - "asset.accounting.info", "invoice_id", string="Assets Accounting Info" - ) - - asset_ids = fields.Many2many( - "asset.asset", compute="_compute_asset_data", store=True, string="Assets" - ) - - dep_line_ids = fields.Many2many( - "asset.depreciation.line", - compute="_compute_asset_data", - store=True, - string="Depreciation Lines", - ) - - hide_link_asset_button = fields.Boolean( - compute="_compute_hide_link_asset_button", - default=True, - string="Hide Asset Button", - ) - - @api.constrains("company_id") - def check_company(self): - for inv in self: - comp = inv.get_linked_aa_info_records().mapped("company_id") - if len(comp) > 1 or (comp and comp != inv.company_id): - raise ValidationError( - _( - "`{}`: cannot change invoice's company once it's already" - " related to an asset." - ).format(inv.name_get()[0][-1]) - ) - - @api.multi - def action_invoice_cancel(self): - res = super().action_invoice_cancel() - if self: - # Remove every a.a.info related to current invoices, and delete - # related depreciation lines - aa_infos = self.mapped(lambda i: i.get_linked_aa_info_records()) - dep_lines = aa_infos.mapped("dep_line_id") - aa_infos.unlink() - # Filtering needed: cannot delete dep lines with a.a.info - dep_lines.filtered(lambda l: not l.asset_accounting_info_ids).unlink() - return res - - @api.multi - @api.depends( - "asset_accounting_info_ids", - "asset_accounting_info_ids.asset_id", - "asset_accounting_info_ids.dep_line_id", - ) - def _compute_asset_data(self): - for inv in self: - aa_info = inv.get_linked_aa_info_records() - assets = aa_info.mapped("asset_id") - dep_lines = aa_info.mapped("dep_line_id") - if dep_lines: - assets += dep_lines.mapped("asset_id") - inv.update( - { - "asset_ids": [(6, 0, assets.ids)], - "dep_line_ids": [(6, 0, dep_lines.ids)], - } - ) - - @api.multi - def _compute_hide_link_asset_button(self): - valid_account_ids = self.get_valid_accounts() - if not valid_account_ids: - self.update({"hide_link_asset_button": True}) - else: - for inv in self: - inv.hide_link_asset_button = not any( - [ - l.account_id.id in valid_account_ids.ids - for l in inv.invoice_line_ids - ] - ) or inv.state in ("draft", "cancel") - - @api.multi - def open_wizard_manage_asset(self): - self.ensure_one() - lines = self.invoice_line_ids.filtered( - lambda l: not l.asset_accounting_info_ids - ) - if not lines: - raise ValidationError(_("Every line is already linked to an asset.")) - - xmlid = "assets_management.action_wizard_invoice_manage_asset" - act = self.env.ref(xmlid).read()[0] - ctx = dict(self._context) - ctx.update( - { - "default_company_id": self.company_id.id, - "default_dismiss_date": self.date_invoice or self.date_due, - "default_invoice_ids": [(6, 0, self.ids)], - "default_invoice_line_ids": [(6, 0, lines.ids)], - "default_purchase_date": self.date_invoice or self.date_due, - "invoice_ids": self.ids, - } - ) - act.update({"context": ctx}) - return act - - def get_linked_aa_info_records(self): - self.ensure_one() - return self.env["asset.accounting.info"].search( - [ - "|", - ("invoice_id", "=", self.id), - ("invoice_line_id.invoice_id", "=", self.id), - ] - ) - - def get_valid_accounts(self): - return self.env["asset.category"].search([]).mapped("asset_account_id") diff --git a/assets_management/models/account_invoice_line.py b/assets_management/models/account_invoice_line.py deleted file mode 100644 index ad454ba9c1c9..000000000000 --- a/assets_management/models/account_invoice_line.py +++ /dev/null @@ -1,92 +0,0 @@ -# Author(s): Silvio Gregorini (silviogregorini@openforce.it) -# Copyright 2019 Openforce Srls Unipersonale (www.openforce.it) -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). - -from odoo import _, api, fields, models -from odoo.exceptions import ValidationError - - -class AccountInvoiceLine(models.Model): - _inherit = "account.invoice.line" - - asset_accounting_info_ids = fields.One2many( - "asset.accounting.info", "invoice_line_id", string="Assets Accounting Info" - ) - - asset_ids = fields.Many2many( - "asset.asset", compute="_compute_asset_data", store=True, string="Assets" - ) - - dep_line_ids = fields.Many2many( - "asset.depreciation.line", - compute="_compute_asset_data", - store=True, - string="Depreciation Lines", - ) - - @api.constrains("company_id") - def check_company(self): - for inv_line in self: - comp = inv_line.get_linked_aa_info_records().mapped("company_id") - if len(comp) > 1 or (comp and comp != inv_line.company_id): - raise ValidationError( - _( - "`{}`: cannot change invoice line's company once it's" - " already related to an asset." - ).format(inv_line.name_get()[0][-1]) - ) - - @api.multi - @api.depends( - "asset_accounting_info_ids", - "asset_accounting_info_ids.asset_id", - "asset_accounting_info_ids.dep_line_id", - ) - def _compute_asset_data(self): - for line in self: - aa_info = line.get_linked_aa_info_records() - assets = aa_info.mapped("asset_id") - dep_lines = aa_info.mapped("dep_line_id") - if dep_lines: - assets += dep_lines.mapped("asset_id") - line.update( - { - "asset_ids": [(6, 0, assets.ids)], - "dep_line_ids": [(6, 0, dep_lines.ids)], - } - ) - - def get_asset_purchase_amount(self, currency=None): - purchase_amount = 0 - - for line in self: - # Standard line amount - purchase_amount += line.currency_id.compute(line.price_subtotal, currency) - if line.invoice_line_tax_ids: - # Get taxes - discount = line.price_unit * (line.discount or 0.0) / 100 - price_unit = line.price_unit - discount - line_currency = line.currency_id - qty = line.quantity - product = line.product_id - partner = line.invoice_id.partner_id - taxes = ( - line.invoice_line_tax_ids.compute_all( - price_unit, line_currency, qty, product, partner - ).get("taxes") - or [] - ) - # Add non-deductible taxes - for tax_dict in taxes: - if not ( - tax_dict.get("account_id") or tax_dict.get("refund_account_id") - ) and tax_dict.get("amount"): - purchase_amount += line.currency_id.compute( - tax_dict.get("amount"), currency - ) - - return purchase_amount - - def get_linked_aa_info_records(self): - self.ensure_one() - return self.asset_accounting_info_ids diff --git a/assets_management/models/account_journal.py b/assets_management/models/account_journal.py index a6668629bc33..9c4d5744974e 100644 --- a/assets_management/models/account_journal.py +++ b/assets_management/models/account_journal.py @@ -2,14 +2,13 @@ # Copyright 2019 Openforce Srls Unipersonale (www.openforce.it) # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from odoo import _, api, models +from odoo import _, models from odoo.exceptions import UserError class AccountJournal(models.Model): _inherit = "account.journal" - @api.multi def unlink(self): if ( self.env["asset.category"] diff --git a/assets_management/models/account_move.py b/assets_management/models/account_move.py index 175951cc24d5..ea915458e4ba 100644 --- a/assets_management/models/account_move.py +++ b/assets_management/models/account_move.py @@ -42,7 +42,6 @@ def check_company(self): ).format(move.name_get()[0][-1]) ) - @api.multi def button_cancel(self): res = super().button_cancel() if self: @@ -55,7 +54,6 @@ def button_cancel(self): dep_lines.filtered(lambda l: not l.asset_accounting_info_ids).unlink() return res - @api.multi @api.depends( "asset_accounting_info_ids", "asset_accounting_info_ids.asset_id", @@ -75,7 +73,6 @@ def _compute_asset_data(self): } ) - @api.multi def _compute_hide_link_asset_button(self): valid_account_ids = self.get_valid_accounts() if not valid_account_ids: @@ -85,17 +82,18 @@ def _compute_hide_link_asset_button(self): move.hide_link_asset_button = ( not any( [ - l.account_id.id in valid_account_ids.ids - for l in move.line_ids + line.account_id.id in valid_account_ids.ids + for line in move.invoice_line_ids ] ) or move.state != "posted" ) - @api.multi def open_wizard_manage_asset(self): self.ensure_one() - lines = self.line_ids.filtered(lambda l: not l.asset_accounting_info_ids) + # do not use invoice_line_ids as it will ignore possible extra lines for not + # deductible VAT + lines = self.line_ids.filtered(lambda line: not line.asset_accounting_info_ids) if not lines: raise ValidationError(_("Every line is already linked to an asset.")) @@ -105,10 +103,10 @@ def open_wizard_manage_asset(self): ctx.update( { "default_company_id": self.company_id.id, - "default_dismiss_date": self.date or fields.Date.today(), + "default_dismiss_date": self.invoice_date or self.invoice_date_due, "default_move_ids": [(6, 0, self.ids)], "default_move_line_ids": [(6, 0, lines.ids)], - "default_purchase_date": self.date or fields.Date.today(), + "default_purchase_date": self.invoice_date or self.invoice_date_due, "move_ids": self.ids, } ) diff --git a/assets_management/models/account_move_line.py b/assets_management/models/account_move_line.py index 5f0bfdf113ce..affa16f4416c 100644 --- a/assets_management/models/account_move_line.py +++ b/assets_management/models/account_move_line.py @@ -36,7 +36,6 @@ def check_company(self): ).format(move_line.name_get()[0][-1]) ) - @api.multi @api.depends( "asset_accounting_info_ids", "asset_accounting_info_ids.asset_id", @@ -59,10 +58,12 @@ def _compute_asset_data(self): def get_asset_purchase_amount(self, currency=None): purchase_amount = 0 for line in self: - purchase_amount += line.currency_id.compute( - line.debit - line.credit, currency + purchase_amount += line.currency_id._convert( + line.debit - line.credit, + currency, + line.company_id, + line.date, ) - return purchase_amount def get_linked_aa_info_records(self): diff --git a/assets_management/models/asset.py b/assets_management/models/asset.py index 6f0140a414fe..d994589b2e5b 100644 --- a/assets_management/models/asset.py +++ b/assets_management/models/asset.py @@ -36,7 +36,7 @@ def get_default_company_id(self): default=get_default_company_id, required=True, string="Company", - track_visibility="onchange", + tracking=True, ) currency_id = fields.Many2one( @@ -56,22 +56,20 @@ def get_default_company_id(self): name = fields.Char( required=True, string="Name", - track_visibility="onchange", + tracking=True, ) purchase_amount = fields.Monetary( string="Purchase Value", - track_visibility="onchange", + tracking=True, ) purchase_date = fields.Date( default=fields.Date.today(), string="Purchase Date", - track_visibility="onchange", + tracking=True, ) - purchase_invoice_id = fields.Many2one("account.invoice", string="Purchase Invoice") - purchase_move_id = fields.Many2one("account.move", string="Purchase Move") sale_amount = fields.Monetary( @@ -80,8 +78,6 @@ def get_default_company_id(self): sale_date = fields.Date(string="Sale Date") - sale_invoice_id = fields.Many2one("account.invoice", string="Sale Invoice") - sale_move_id = fields.Many2one("account.move", string="Sale Move") sold = fields.Boolean(string="Sold") @@ -119,13 +115,11 @@ def create(self, vals): asset.onchange_category_id() return asset - @api.multi def write(self, vals): if vals.get("code"): vals["code"] = " ".join(vals.get("code").split()) return super().write(vals) - @api.multi def unlink(self): if self.mapped("asset_accounting_info_ids"): assets = self.filtered("asset_accounting_info_ids") @@ -141,7 +135,6 @@ def unlink(self): self.mapped("depreciation_ids").unlink() return super().unlink() - @api.multi def name_get(self): return [(asset.id, asset.make_name()) for asset in self] @@ -157,7 +150,6 @@ def check_company(self): ).format(asset.make_name()) ) - @api.multi @api.depends("depreciation_ids", "depreciation_ids.state") def _compute_state(self): for asset in self: @@ -214,7 +206,6 @@ def onchange_purchase_date(self): for dep in self.depreciation_ids: dep.date_start = self.purchase_date - @api.multi def launch_wizard_generate_depreciations(self): self.ensure_one() xmlid = "assets_management.action_wizard_asset_generate_depreciation" diff --git a/assets_management/models/asset_accounting_info.py b/assets_management/models/asset_accounting_info.py index de1f8744c05b..097f03ad1cf5 100644 --- a/assets_management/models/asset_accounting_info.py +++ b/assets_management/models/asset_accounting_info.py @@ -10,8 +10,8 @@ class AssetAccountingInfo(models.Model): """ This model is necessary to manage info about the relationships between assets and accounting records. We could have used `Many2many` fields to - create tables between assets, depreciation lines, invoices, invoice - lines, account moves and account move lines; but we need a custom + create tables between assets, depreciation lines, account moves and account + move lines; but we need a custom management, a bit more complex than the one provided by the standard `Many2many` field. @@ -40,15 +40,7 @@ class AssetAccountingInfo(models.Model): dep_line_id = fields.Many2one( "asset.depreciation.line", ondelete="set null", string="Depreciation Line" ) - - invoice_id = fields.Many2one( - "account.invoice", ondelete="set null", string="Invoice" - ) - - invoice_line_id = fields.Many2one( - "account.invoice.line", ondelete="set null", string="Invoice Line" - ) - + move_type = fields.Selection(related="dep_line_id.move_type") move_id = fields.Many2one("account.move", ondelete="set null", string="Move") move_line_id = fields.Many2one( @@ -72,7 +64,6 @@ def create(self, vals): info.check_and_normalize() return info - @api.multi def write(self, vals): fnames = self.get_main_fields() @@ -96,7 +87,6 @@ def write(self, vals): return res - @api.multi def name_get(self): return [(aa_info.id, aa_info.make_name()) for aa_info in self] @@ -111,13 +101,10 @@ def get_main_fields(self): return [ "asset_id", "dep_line_id", - "invoice_id", - "invoice_line_id", "move_id", "move_line_id", ] - @api.multi def button_unlink(self): """Button action: deletes a.a.info""" self.unlink() @@ -151,15 +138,6 @@ def check_data_coherence(self): ): raise ValidationError(_("Incoherent asset data.")) - # If invoice_line_id and invoice_id are set, check whether the invoice - # line belongs to the given invoice - if ( - self.invoice_id - and self.invoice_line_id - and self.invoice_id != self.invoice_line_id.invoice_id - ): - raise ValidationError(_("Incoherent invoice data.")) - # If move_line_id and move_id are set, check whether the move line # belongs to the given move if ( @@ -190,10 +168,6 @@ def get_normalized_info_vals(self): if not self.asset_id and self.dep_line_id: vals["asset_id"] = self.dep_line_id.asset_id.id - # Set invoice_id as invoice line's invoice if invoice line is set - if not self.invoice_id and self.invoice_line_id: - vals["invoice_id"] = self.invoice_line_id.invoice_id.id - # Set move_id as move line's move if move line is set if not self.move_id and self.move_line_id: vals["move_id"] = self.move_line_id.move_id.id @@ -212,7 +186,7 @@ def get_records_to_delete_by_cron(self): Returns every a.a.info that fits the condition: (no asset AND no depreciation line) OR - (no invoice AND no invoice line AND no move AND no move line) + (no move AND no move line) """ return self.search( [ @@ -221,10 +195,6 @@ def get_records_to_delete_by_cron(self): ("asset_id", "=", False), ("dep_line_id", "=", False), "&", - "&", - "&", - ("invoice_id", "=", False), - ("invoice_line_id", "=", False), ("move_id", "=", False), ("move_line_id", "=", False), ] diff --git a/assets_management/models/asset_category.py b/assets_management/models/asset_category.py index caef16bfe5d6..a63996e28772 100644 --- a/assets_management/models/asset_category.py +++ b/assets_management/models/asset_category.py @@ -106,7 +106,6 @@ def get_default_type_ids(self): string="Depreciation Types", ) - @api.multi def copy(self, default=None): default = dict(default or []) default.update( @@ -120,7 +119,6 @@ def copy(self, default=None): ) return super().copy(default) - @api.multi def unlink(self): if self.env["asset.asset"].sudo().search([("category_id", "in", self.ids)]): raise UserError( diff --git a/assets_management/models/asset_depreciation.py b/assets_management/models/asset_depreciation.py index cd612793f40c..5c3a2d2cc704 100644 --- a/assets_management/models/asset_depreciation.py +++ b/assets_management/models/asset_depreciation.py @@ -148,7 +148,6 @@ def create(self, vals): num_lines.normalize_depreciation_nr() return dep - @api.multi def write(self, vals): res = super().write(vals) need_norm = self.filtered(lambda d: d.need_normalize_first_dep_nr()) @@ -160,7 +159,6 @@ def write(self, vals): num_lines.normalize_depreciation_nr(force=True) return res - @api.multi def unlink(self): if self.mapped("line_ids"): raise ValidationError( @@ -171,9 +169,10 @@ def unlink(self): ) if any([m.state != "draft" for m in self.mapped("dismiss_move_id")]): deps = self.filtered( - lambda l: l.dismiss_move_id and l.dismiss_move_id.state != "draft" + lambda line: line.dismiss_move_id + and line.dismiss_move_id.state != "draft" ) - name_list = "\n".join([l[-1] for l in deps.name_get()]) + name_list = "\n".join([line[-1] for line in deps.name_get()]) raise ValidationError( _( "Following lines are linked to posted account moves, and" @@ -182,11 +181,9 @@ def unlink(self): ) return super().unlink() - @api.multi def name_get(self): return [(dep.id, dep.make_name()) for dep in self] - @api.multi @api.depends("amount_depreciable", "amount_depreciable_updated", "amount_residual") def _compute_state(self): for dep in self: @@ -226,7 +223,6 @@ def onchange_force_dep_nrs(self): if not self.force_all_dep_nr and self.force_first_dep_nr: self.first_dep_nr = 1 - @api.multi @api.depends( "amount_depreciable", "line_ids.amount", @@ -239,7 +235,6 @@ def _compute_amounts(self): vals = dep.get_computed_amounts() dep.update(vals) - @api.multi @api.depends("line_ids", "line_ids.date", "line_ids.move_type") def _compute_last_depreciation_date(self): """ @@ -248,7 +243,8 @@ def _compute_last_depreciation_date(self): """ for dep in self: dep_lines = dep.line_ids.filtered( - lambda l: l.move_type == "depreciated" and not l.partial_dismissal + lambda line: line.move_type == "depreciated" + and not line.partial_dismissal ) if dep_lines: dep.last_depreciation_date = max(dep_lines.mapped("date")) @@ -267,9 +263,9 @@ def check_before_generate_depreciation_lines(self, dep_date): # Check if any depreciation already has newer depreciation lines # than the given date newer_lines = lines.filtered( - lambda l: l.move_type == "depreciated" - and not l.partial_dismissal - and l.date > dep_date + lambda line: line.move_type == "depreciated" + and not line.partial_dismissal + and line.date > dep_date ) if newer_lines: asset_names = ", ".join( @@ -288,7 +284,9 @@ def check_before_generate_depreciation_lines(self, dep_date): ) posted_lines = lines.filtered( - lambda l: l.date == dep_date and l.move_id and l.move_id.state != "draft" + lambda line: line.date == dep_date + and line.move_id + and line.move_id.state != "draft" ) if posted_lines: posted_names = ", ".join( @@ -360,17 +358,17 @@ def get_computed_amounts(self): "amount_depreciable_updated": amt_dep + sum( [ - l.balance - for l in self.line_ids - if l.move_type in update_move_types + line.balance + for line in self.line_ids + if line.move_type in update_move_types ] ), "amount_residual": amt_dep + sum( [ - l.balance - for l in self.line_ids - if l.move_type not in non_residual_types + line.balance + for line in self.line_ids + if line.move_type not in non_residual_types ] ), } @@ -382,9 +380,9 @@ def get_depreciable_amount(self, dep_date=None): types = self.line_ids.get_update_move_types() return self.amount_depreciable + sum( [ - l.balance - for l in self.line_ids - if l.move_type in types and (not dep_date or l.date <= dep_date) + line.balance + for line in self.line_ids + if line.move_type in types and (not dep_date or line.date <= dep_date) ] ) @@ -492,6 +490,7 @@ def get_dismiss_account_move_vals(self): "journal_id": self.asset_id.category_id.journal_id.id, "line_ids": [], "ref": _("Asset dismissal: ") + self.asset_id.make_name(), + "move_type": "entry", } def get_max_depreciation_nr(self): diff --git a/assets_management/models/asset_depreciation_line.py b/assets_management/models/asset_depreciation_line.py index 9e703f8a29d1..c8d8fb7c2ba5 100644 --- a/assets_management/models/asset_depreciation_line.py +++ b/assets_management/models/asset_depreciation_line.py @@ -136,19 +136,18 @@ def create(self, vals): line.normalize_depreciation_nr(force=True) return line - @api.multi def write(self, vals): res = super().write(vals) + self.check_company() for line in self: if line.need_normalize_depreciation_nr(): line.normalize_depreciation_nr(force=True) return res - @api.multi def unlink(self): if self.mapped("asset_accounting_info_ids"): lines = self.filtered("asset_accounting_info_ids") - name_list = "\n".join([l[-1] for l in lines.name_get()]) + name_list = "\n".join([line[-1] for line in lines.name_get()]) raise ValidationError( _( "The lines you you are trying to delete are currently" @@ -158,8 +157,10 @@ def unlink(self): + name_list ) if any([m.state != "draft" for m in self.mapped("move_id")]): - lines = self.filtered(lambda l: l.move_id and l.move_id.state != "draft") - name_list = "\n".join([l[-1] for l in lines.name_get()]) + lines = self.filtered( + lambda line: line.move_id and line.move_id.state != "draft" + ) + name_list = "\n".join([line[-1] for line in lines.name_get()]) raise ValidationError( _( "Following lines are linked to posted account moves, and" @@ -170,11 +171,9 @@ def unlink(self): self.mapped("move_id").unlink() return super().unlink() - @api.multi def name_get(self): return [(line.id, line.make_name()) for line in self] - @api.constrains("company_id") def check_company(self): for dep_line in self: comp = dep_line.get_linked_aa_info_records().mapped("company_id") @@ -197,7 +196,6 @@ def check_depreciation_nr_coherence(self): _("Depreciation number can't be a negative number.") ) - @api.multi @api.depends("amount", "move_type") def _compute_balance(self): for line in self: @@ -206,12 +204,10 @@ def _compute_balance(self): else: line.balance = line.amount - @api.multi def _compute_requires_depreciation_nr(self): for line in self: line.requires_depreciation_nr = line.is_depreciation_nr_required() - @api.multi def _search_requires_depreciation_nr_lines(self, operator, value): if operator not in ("=", "!="): raise ValidationError(_("Invalid search operator!")) @@ -342,16 +338,13 @@ def normalize_depreciation_nr(self, force=False): # # ########################################################################## - @api.multi def button_generate_account_move(self): self.generate_account_move() - @api.multi def button_regenerate_account_move(self): self.button_remove_account_move() self.generate_account_move() - @api.multi def button_remove_account_move(self): self.mapped("move_id").unlink() @@ -381,6 +374,7 @@ def get_account_move_vals(self): "journal_id": self.asset_id.category_id.journal_id.id, "line_ids": [], "ref": _("Asset: ") + self.asset_id.make_name(), + "move_type": "entry", } def get_account_move_line_vals(self): diff --git a/assets_management/models/asset_depreciation_line_type.py b/assets_management/models/asset_depreciation_line_type.py index 950aa792eb84..6cf756aa867f 100644 --- a/assets_management/models/asset_depreciation_line_type.py +++ b/assets_management/models/asset_depreciation_line_type.py @@ -29,7 +29,6 @@ def get_default_company_id(self): string="Type", ) - @api.multi def unlink(self): for line_type in self: if self.env["asset.depreciation.line"].search( @@ -44,7 +43,6 @@ def unlink(self): return super().unlink() - @api.multi def name_get(self): return [(line_type.id, line_type.make_name()) for line_type in self] diff --git a/assets_management/models/asset_depreciation_mode.py b/assets_management/models/asset_depreciation_mode.py index 996ddcacb455..0776bd6cc111 100644 --- a/assets_management/models/asset_depreciation_mode.py +++ b/assets_management/models/asset_depreciation_mode.py @@ -35,20 +35,19 @@ def get_default_company_id(self): string="Used Asset Coeff.", ) - @api.multi def copy(self, default=None): default = dict(default or []) default.update( { "default": False, "line_ids": [ - (0, 0, l.copy_data({"mode_id": False})[0]) for l in self.line_ids + (0, 0, line.copy_data({"mode_id": False})[0]) + for line in self.line_ids ], } ) return super().copy(default) - @api.multi def unlink(self): if ( self.env["asset.category.depreciation.type"] diff --git a/assets_management/models/asset_depreciation_type.py b/assets_management/models/asset_depreciation_type.py index ff5fb86f275a..8d069f989a8a 100644 --- a/assets_management/models/asset_depreciation_type.py +++ b/assets_management/models/asset_depreciation_type.py @@ -30,7 +30,6 @@ def get_default_company_id(self): requires_account_move = fields.Boolean(string="Requires Account Move") - @api.multi def unlink(self): if ( self.env["asset.category.depreciation.type"] diff --git a/assets_management/readme/USAGE.rst b/assets_management/readme/USAGE.rst index a0eadc999020..a699f81bee36 100644 --- a/assets_management/readme/USAGE.rst +++ b/assets_management/readme/USAGE.rst @@ -2,24 +2,16 @@ You can create and manage assets from accounting section of Odoo. -Configuration must be done from Assets -> Assets Configuration, -where depreciation types, modes and assets categories can be found. +Configuration must be done from Assets -> Assets Configuration, where depreciation types, modes and assets categories can be found. Assets can both be created manually or via invoices and journal entries. -Depreciations can be generated by using the related wizard found in Assets -> -Assets Management -> Generate Depreciations, or by triggering the same wizard from a single asset -form view. +Depreciations can be generated by using the related wizard found in Assets -> Assets Management -> Generate Depreciations, or by triggering the same wizard from a single asset form view. **Italiano** È possibile creare e gestire cespiti dalla sezione contabilità di Odoo. -La configurazione dei cespiti dev'essere fatta andando in -Cespiti -> Configurazione Cespiti, dove si trovano le categorie dei beni, i -tipi e le modalità di ammortamento. +La configurazione dei cespiti dev'essere fatta andando in Cespiti -> Configurazione Cespiti, dove si trovano le categorie dei beni, i tipi e le modalità di ammortamento. -I cespiti possono essere creati manualmente o da fatture e registrazioni -contabili. Gli ammortamenti possono essere generati utilizzando l'apposito -wizard in Cespiti -> Gestione Cestpiti -> Genera Ammortamenti, o aprendo quello stesso wizard dalla -scheda del cespite +I cespiti possono essere creati manualmente o da fatture e registrazioni contabili. Gli ammortamenti possono essere generati utilizzando l'apposito wizard in Cespiti -> Gestione Cestpiti -> Genera Ammortamenti, o aprendo quello stesso wizard dalla scheda del cespite. diff --git a/assets_management/report/asset_journal.py b/assets_management/report/asset_journal.py index 1fd1750c48db..b4ebc76a366a 100644 --- a/assets_management/report/asset_journal.py +++ b/assets_management/report/asset_journal.py @@ -6,11 +6,9 @@ from odoo import _, api, fields, models from odoo.exceptions import ValidationError -from odoo.tools.pycompat import string_types +from odoo.tools.misc import format_amount from odoo.tools.safe_eval import safe_eval -from odoo.addons.mail.models.mail_template import format_amount - def format_date(rec, field_name, fmt): """Formats record's field value according to given format `fmt`""" @@ -35,7 +33,8 @@ class Report(models.TransientModel): """ _name = "report_asset_journal" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Journal" + _inherit = "report.account_financial_report.abstract_report" # Data fields asset_ids = fields.Many2many( @@ -87,7 +86,6 @@ class Report(models.TransientModel): # # ############################ - @api.multi def print_report(self, report_type=None): """ This method is called from the JS widget buttons 'Print' @@ -120,14 +118,13 @@ def do_print(self, report_type): report = self.env.ref(xml_id) return report.report_action(self) - @api.multi def view_report(self): """Launches view for HTML report""" self.ensure_one() xmlid = "assets_management.act_client_asset_journal_report" [act] = self.env.ref(xmlid).read() ctx = act.get("context", {}) - if isinstance(ctx, string_types): + if isinstance(ctx, str): ctx = safe_eval(ctx) # Call update twice to force 'active_id(s)' values to be overridden ctx.update(dict(self._context)) @@ -310,7 +307,8 @@ def sort_assets(self, assets): class ReportCategory(models.TransientModel): _name = "report_asset_journal_category" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Journal Category" + _inherit = "report.account_financial_report.abstract_report" # Data fields category_id = fields.Many2one("asset.category", ondelete="cascade", required=True) @@ -402,7 +400,8 @@ def generate_totals(self): class ReportAsset(models.TransientModel): _name = "report_asset_journal_asset" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Journal Asset" + _inherit = "report.account_financial_report.abstract_report" # Data fields asset_id = fields.Many2one("asset.asset", ondelete="cascade", required=True) @@ -492,22 +491,14 @@ def get_purchase_vals(self): if asset.supplier_ref: purchase_vals["partner_ref"] = asset.supplier_ref - elif asset.purchase_invoice_id.reference: - purchase_vals["partner_ref"] = asset.purchase_invoice_id.reference + elif asset.purchase_move_id.payment_reference: + purchase_vals["partner_ref"] = asset.purchase_move_id.payment_reference elif asset.purchase_move_id.ref: purchase_vals["partner_ref"] = asset.purchase_move_id.ref else: purchase_vals["partner_ref"] = "/" - if asset.purchase_invoice_id: - purchase_vals.update( - { - "document_nr": asset.purchase_invoice_id.number or "/", - "res_id": asset.purchase_invoice_id.id, - "res_model": "account.invoice", - } - ) - elif asset.purchase_move_id: + if asset.purchase_move_id: purchase_vals.update( { "document_nr": asset.purchase_move_id.name or "/", @@ -537,15 +528,7 @@ def get_sale_vals(self): "partner_vat": asset.customer_id.vat or "/", } - if asset.sale_invoice_id: - sale_vals.update( - { - "document_nr": asset.sale_invoice_id.number or "/", - "res_id": asset.sale_invoice_id.id, - "res_model": "account.invoice", - } - ) - elif asset.sale_move_id: + if asset.sale_move_id: sale_vals.update( { "document_nr": asset.sale_move_id.name or "/", @@ -566,7 +549,8 @@ def get_sale_vals(self): class ReportDepreciation(models.TransientModel): _name = "report_asset_journal_depreciation" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Journal Depreciation" + _inherit = "report.account_financial_report.abstract_report" _order = "type_name asc" # Data fields @@ -626,7 +610,8 @@ def get_report_dep_data(self): class ReportDepreciationLineByYear(models.TransientModel): _name = "report_asset_journal_depreciation_line_year" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Journal Depreciation Line Year" + _inherit = "report.account_financial_report.abstract_report" _order = "sequence asc" # Data fields @@ -808,33 +793,17 @@ def get_report_dep_line_year_data(self): lambda l: l.move_type in ("in", "out") ): for num, aa_info in enumerate(dep_line.asset_accounting_info_ids): - vals = {} - if aa_info.invoice_line_id: - inv = aa_info.invoice_line_id.invoice_id - vals = { - "document_date": format_date(dep_line, "date", "%d-%m-%Y"), - "document_nr": inv.number or "/", - "partner_name": inv.partner_id.name or "/", - "partner_ref": inv.reference or "/", - "partner_vat": inv.partner_id.vat or "/", - "res_id": inv.id, - "res_model": "account.invoice", - "sequence": num + 1, - } - elif aa_info.move_id: - move = aa_info.move_id - vals = { - "document_date": format_date(dep_line, "date", "%d-%m-%Y"), - "document_nr": move.name or "/", - "partner_name": move.partner_id.name or "/", - "partner_ref": move.ref or "/", - "partner_vat": move.partner_id.vat or "/", - "res_id": move.id, - "res_model": "account.move", - "sequence": num + 1, - } - if vals: - accounting_doc_vals.append((0, 0, vals)) + vals = { + "document_date": format_date(dep_line, "date", "%d-%m-%Y"), + "document_nr": aa_info.move_id.name or "/", + "partner_name": aa_info.move_id.partner_id.name or "/", + "partner_ref": aa_info.move_id.ref or "/", + "partner_vat": aa_info.move_id.partner_id.vat or "/", + "res_id": aa_info.move_id.id, + "res_model": "account.move", + "sequence": num + 1, + } + accounting_doc_vals.append((0, 0, vals)) start = fields.Date.from_string(self.fiscal_year_id.date_from).year end = fields.Date.from_string(self.fiscal_year_id.date_to).year @@ -872,7 +841,8 @@ def get_report_dep_line_year_data(self): class ReportAccountingDoc(models.TransientModel): _name = "report_asset_journal_accounting_doc" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Journal Accounting Doc" + _inherit = "report.account_financial_report.abstract_report" _order = "sequence asc" # Report structure fields @@ -893,7 +863,8 @@ class ReportAccountingDoc(models.TransientModel): class ReportTotals(models.TransientModel): _name = "report_asset_journal_totals" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Journal Totals" + _inherit = "report.account_financial_report.abstract_report" _total_fnames = [ "amount_depreciable_updated", "amount_depreciated", diff --git a/assets_management/report/asset_journal_xlsx.py b/assets_management/report/asset_journal_xlsx.py index 3b3127d5a97e..1664cf8037be 100644 --- a/assets_management/report/asset_journal_xlsx.py +++ b/assets_management/report/asset_journal_xlsx.py @@ -9,62 +9,45 @@ class AssetJournalXslx(models.AbstractModel): _name = "report.assets_management.report_asset_journal_xlsx" + _description = "Report Asset Journal Xlsx" _inherit = "report.account_financial_report.abstract_report_xlsx" - def __init__(self, pool, cr): - """Adds new attributes""" - super().__init__(pool, cr) - - # Add report objects - self.workbook = None - self.data = None - self.report = None - - # These `_data`s here are made as dict of dicts, the key being the - # column number to be printed into, the second one the field datas for - # the print itself - self.category_data = None - self.asset_data = None - self.asset_accounting_doc_data = None - self.depreciation_data = None - self.depreciation_line_year_data = None - self.depreciation_line_amount_detail_data = None - self.depreciation_line_accounting_doc_data = None - self.totals_data = None - - # 1- Category formats - self.format_category_name = None - - # 2- Asset formats (purchase and sale docs will use the same format) - self.format_asset_header = None - self.format_asset_value = None - - # 3- Depreciations formats - self.format_depreciation_header = None - self.format_depreciation_value = None - - # 4- Depreciation yearly and amount details formats - self.format_depreciation_year_line_header = None - self.format_depreciation_year_line_value_center = None - self.format_depreciation_year_line_value_right = None - - # 5- Report title - self.format_title = None - def generate_xlsx_report(self, workbook, data, objects): """Set wb, data and report attributes""" - self.workbook = workbook - self.data = data - self.report = objects - self.set_formats() - self.set_report_data() - super().generate_xlsx_report(workbook, data, objects) - - def set_formats(self): + # Initialize report variables + report_data = { + "workbook": None, + "sheet": None, # main sheet which will contains report + "columns": None, # columns of the report + "row_pos": None, # row_pos must be incremented at each writing lines + "formats": None, + } + report_name = self._get_report_name(objects, data=data) + report_data["workbook"] = workbook + report_data["sheet"] = workbook.add_worksheet(report_name[:31]) + report_data["row_pos"] = 0 + self._define_formats(workbook, report_data) + self.set_formats(workbook, report_data) + self.set_report_data(report_data) + + # Get report data + + report_footer = self._get_report_footer() + filters = self._get_report_filters(objects) + report_data["columns"] = self._get_report_columns(objects) + self._set_column_width(report_data) + # Fill report + self._write_report_title(report_name, report_data) + self._write_filters(filters, report_data) + self._generate_report_content(workbook, objects, data, report_data) + self._write_report_footer(report_footer, report_data) + + def set_formats(self, workbook, report_data): """Defines custom formats""" # 1- Category formats - self.format_category_name = self.workbook.add_format( + + report_data["formats"]["format_category_name"] = workbook.add_format( { "align": "center", "bg_color": "#337AB7", @@ -75,7 +58,8 @@ def set_formats(self): ) # 2- Asset formats - self.format_asset_header = self.workbook.add_format( + + report_data["formats"]["format_asset_header"] = workbook.add_format( { "align": "center", "bold": True, @@ -83,7 +67,8 @@ def set_formats(self): "font_size": 14, } ) - self.format_asset_value = self.workbook.add_format( + + report_data["formats"]["format_asset_value"] = workbook.add_format( { "align": "center", "font_color": "#337AB7", @@ -92,14 +77,16 @@ def set_formats(self): ) # 3- Depreciations formats - self.format_depreciation_header = self.workbook.add_format( + + report_data["formats"]["format_depreciation_header"] = workbook.add_format( { "align": "center", "bold": True, "font_size": 12, } ) - self.format_depreciation_value = self.workbook.add_format( + + report_data["formats"]["format_depreciation_value"] = workbook.add_format( { "align": "center", "font_size": 12, @@ -107,20 +94,29 @@ def set_formats(self): ) # 4- Depreciation yearly and amount details formats - self.format_depreciation_year_line_header = self.workbook.add_format( + + report_data["formats"][ + "format_depreciation_year_line_header" + ] = workbook.add_format( { "align": "center", "bold": True, "font_size": 12, } ) - self.format_depreciation_year_line_value_center = self.workbook.add_format( + + report_data["formats"][ + "format_depreciation_year_line_value_center" + ] = workbook.add_format( { "align": "center", "font_size": 12, } ) - self.format_depreciation_year_line_value_right = self.workbook.add_format( + + report_data["formats"][ + "format_depreciation_year_line_value_right" + ] = workbook.add_format( { "align": "right", "font_size": 12, @@ -128,7 +124,7 @@ def set_formats(self): ) # 5- Report title - self.format_title = self.workbook.add_format( + report_data["formats"]["format_title"] = workbook.add_format( { "align": "center", "bg_color": "#337AB7", @@ -138,496 +134,571 @@ def set_formats(self): } ) - def set_report_data(self): - self.set_category_data() - self.set_asset_data() - self.set_asset_accounting_doc_data() - self.set_depreciation_data() - self.set_depreciation_line_year_data() - self.set_depreciation_line_amount_detail_data() - self.set_depreciation_line_accounting_doc_data() - self.set_totals_data() + def set_report_data(self, report_data): + self.set_category_data(report_data) + self.set_asset_data(report_data) + self.set_asset_accounting_doc_data(report_data) + self.set_depreciation_data(report_data) + self.set_depreciation_line_year_data(report_data) + self.set_depreciation_line_amount_detail_data(report_data) + self.set_depreciation_line_accounting_doc_data(report_data) + self.set_totals_data(report_data) - def set_category_data(self): - self.category_data = self.generate_category_data() + def set_category_data(self, report_data): + report_data["category_data"] = self.generate_category_data(report_data) - def generate_category_data(self): + def generate_category_data(self, report_data): data = ( { "title": _("Category"), "field": "category_name", - "tstyle": self.format_category_name, - "vstyle": self.format_category_name, + "tstyle": report_data["formats"]["format_category_name"], + "vstyle": report_data["formats"]["format_category_name"], }, ) return dict(enumerate(data)) - def set_asset_data(self): - self.asset_data = self.generate_asset_data() + def set_asset_data(self, report_data): + report_data["asset_data"] = self.generate_asset_data(report_data) - def generate_asset_data(self): + def generate_asset_data(self, report_data): data = ( { "title": _("Asset"), "field": "asset_name", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Code"), "field": "asset_code", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Purchase Amount"), "field": "asset_purchase_amount", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Purchased as New / Used"), "field": "asset_used", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Status"), "field": "asset_state", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, ) return dict(enumerate(data)) - def set_asset_accounting_doc_data(self): - self.asset_accounting_doc_data = self.generate_asset_accounting_doc_data() + def set_asset_accounting_doc_data(self, report_data): + report_data[ + "asset_accounting_doc_data" + ] = self.generate_asset_accounting_doc_data(report_data) - def generate_asset_accounting_doc_data(self): + def generate_asset_accounting_doc_data(self, report_data): data = ( { "title": _("Partner"), "field": "partner_name", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("VAT"), "field": "partner_vat", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Document Nr"), "field": "document_nr", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Document Date"), "field": "document_date", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Supplier Ref"), "field": "partner_ref", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, ) return {n + 1: d for n, d in enumerate(data)} - def set_depreciation_data(self): - self.depreciation_data = self.generate_depreciation_data() + def set_depreciation_data(self, report_data): + report_data["depreciation_data"] = self.generate_depreciation_data(report_data) - def generate_depreciation_data(self): + def generate_depreciation_data(self, report_data): data = ( { "title": _("Depreciation Type"), "field": "type_name", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Depreciation Mode"), "field": "mode_name", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Depreciable Amount"), "field": "dep_amount_depreciable", "type": "amount", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Starting From"), "field": "dep_date_start", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Dep. Percentage (%)"), "field": "dep_percentage", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Pro Rata Temporis"), "field": "dep_pro_rata_temporis", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, ) return {n + 1: d for n, d in enumerate(data)} - def set_depreciation_line_year_data(self): - self.depreciation_line_year_data = self.generate_depreciation_line_year_data() + def set_depreciation_line_year_data(self, report_data): + report_data[ + "depreciation_line_year_data" + ] = self.generate_depreciation_line_year_data(report_data) - def generate_depreciation_line_year_data(self): + def generate_depreciation_line_year_data(self, report_data): + formatd = report_data["formats"] data = ( { "title": _("Year"), "field": "year", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_center"], }, { "title": _("Amount"), "field": "amount_depreciable_updated", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_right"], }, { "title": _("In Amount"), "field": "amount_in", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_right"], }, { "title": _("Out Amount"), "field": "amount_out", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_right"], }, { "title": _("Prev. Year Dep. Fund"), "field": "amount_depreciation_fund_prev_year", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_right"], }, { "title": _("Depreciation"), "field": "amount_depreciated", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_right"], }, { "title": _("Curr. Year Dep. Fund"), "field": "amount_depreciation_fund_curr_year", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_right"], }, { "title": _("Gain / Loss"), "field": "gain_loss", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_right"], }, { "title": _("Residual"), "field": "amount_residual", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_right"], }, ) return {n + 1: d for n, d in enumerate(data)} - def set_depreciation_line_amount_detail_data(self): - self.depreciation_line_amount_detail_data = ( - self.generate_depreciation_line_amount_detail_data() - ) + def set_depreciation_line_amount_detail_data(self, report_data): + report_data[ + "depreciation_line_amount_detail_data" + ] = self.generate_depreciation_line_amount_detail_data(report_data) - def generate_depreciation_line_amount_detail_data(self): + def generate_depreciation_line_amount_detail_data(self, report_data): + formatd = report_data["formats"] data = ( { "title": _("In Amount - Detail"), "field": "amount_in_detail", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_center"], }, { "title": _("Out Amount - Detail"), "field": "amount_out_detail", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_center"], }, ) return {n + 3: d for n, d in enumerate(data)} - def set_depreciation_line_accounting_doc_data(self): - self.depreciation_line_accounting_doc_data = ( - self.generate_depreciation_line_accounting_doc_data() - ) + def set_depreciation_line_accounting_doc_data(self, report_data): + report_data[ + "depreciation_line_accounting_doc_data" + ] = self.generate_depreciation_line_accounting_doc_data(report_data) - def generate_depreciation_line_accounting_doc_data(self): + def generate_depreciation_line_accounting_doc_data(self, report_data): + formatd = report_data["formats"] data = ( { "title": _("Partner"), "field": "partner_name", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_center"], }, { "title": _("VAT"), "field": "partner_vat", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_center"], }, { "title": _("Document Nr"), "field": "document_nr", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_center"], }, { "title": _("Document Date"), "field": "document_date", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_center"], }, { "title": _("Supplier Ref"), "field": "partner_ref", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": formatd["format_depreciation_year_line_header"], + "vstyle": formatd["format_depreciation_year_line_value_center"], }, ) return {n + 3: d for n, d in enumerate(data)} - def set_totals_data(self): - self.totals_data = self.get_totals_data() + def set_totals_data(self, report_data): + report_data["totals_data"] = self.get_totals_data(report_data) - def get_totals_data(self): + def get_totals_data(self, report_data): data = ( { "title": _("Total"), "field": "name", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Type"), "field": "type_name", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Amount"), "field": "amount_depreciable_updated", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("In Amount"), "field": "amount_in_total", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Out Amount"), "field": "amount_out_total", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Prev. Year Dep. Fund"), "field": "amount_depreciation_fund_prev_year", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Depreciation"), "field": "amount_depreciated", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Curr. Year Dep. Fund"), "field": "amount_depreciation_fund_curr_year", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Gain / Loss"), "field": "gain_loss_total", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Residual"), "field": "amount_residual", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, ) return {n: d for n, d in enumerate(data)} - def _set_column_width(self): + def _set_column_width(self, report_data): """Override to force every column to width 25 at least""" - max_width = self.get_max_width_dict() + max_width = self.get_max_width_dict(report_data) for col, width in max_width.items(): - self.sheet.set_column(col, col, max(width, 25)) + report_data["sheet"].set_column(col, col, max(width, 25)) - def get_max_width_dict(self): + def get_max_width_dict(self, report_data): min_col = min( [ - min(self.category_data.keys()), - min(self.asset_data.keys()), - min(self.asset_accounting_doc_data.keys()), - min(self.depreciation_data.keys()), - min(self.depreciation_line_year_data.keys()), - min(self.depreciation_line_amount_detail_data.keys()), - min(self.depreciation_line_accounting_doc_data.keys()), - min(self.totals_data.keys()), + min(report_data["category_data"].keys()), + min(report_data["asset_data"].keys()), + min(report_data["asset_accounting_doc_data"].keys()), + min(report_data["depreciation_data"].keys()), + min(report_data["depreciation_line_year_data"].keys()), + min(report_data["depreciation_line_amount_detail_data"].keys()), + min(report_data["depreciation_line_accounting_doc_data"].keys()), + min(report_data["totals_data"].keys()), ] ) max_col = max( [ - max(self.category_data.keys()), - max(self.asset_data.keys()), - max(self.asset_accounting_doc_data.keys()), - max(self.depreciation_data.keys()), - max(self.depreciation_line_year_data.keys()), - max(self.depreciation_line_amount_detail_data.keys()), - max(self.depreciation_line_accounting_doc_data.keys()), - max(self.totals_data.keys()), + max(report_data["category_data"].keys()), + max(report_data["asset_data"].keys()), + max(report_data["asset_accounting_doc_data"].keys()), + max(report_data["depreciation_data"].keys()), + max(report_data["depreciation_line_year_data"].keys()), + max(report_data["depreciation_line_amount_detail_data"].keys()), + max(report_data["depreciation_line_accounting_doc_data"].keys()), + max(report_data["totals_data"].keys()), ] ) return { col: max( [ - self.category_data.get(col, {}).get("width") or 0, - self.asset_data.get(col, {}).get("width") or 0, - self.asset_accounting_doc_data.get(col, {}).get("width") or 0, - self.depreciation_data.get(col, {}).get("width") or 0, - self.depreciation_line_year_data.get(col, {}).get("width") or 0, - self.depreciation_line_amount_detail_data.get(col, {}).get("width") + report_data["category_data"].get(col, {}).get("width") or 0, + report_data["asset_data"].get(col, {}).get("width") or 0, + report_data["asset_accounting_doc_data"].get(col, {}).get("width") or 0, - self.depreciation_line_accounting_doc_data.get(col, {}).get("width") + report_data["depreciation_data"].get(col, {}).get("width") or 0, + report_data["depreciation_line_year_data"].get(col, {}).get("width") or 0, - self.totals_data.get(col, {}).get("width") or 0, + report_data["depreciation_line_amount_detail_data"] + .get(col, {}) + .get("width") + or 0, + report_data["depreciation_line_accounting_doc_data"] + .get(col, {}) + .get("width") + or 0, + report_data["totals_data"].get(col, {}).get("width") or 0, ] ) for col in range(min_col, max_col + 1) } - def _get_report_name(self, report): - """ - * Overrides standard method * - Returns name for both sheet and report title - """ - return self._get_report_complete_name(report, report.report_name) + def _get_report_name(self, report, data=False): + report_name = _("Asset Journal") + return self._get_report_complete_name(report, report_name) - def _write_report_title(self, title): + def _write_report_title(self, title, report_data): """ * Overrides standard method * Writes report title on current line using all defined columns width """ - self.sheet.merge_range( - self.row_pos, 0, self.row_pos, 9, title, self.format_title + report_data["sheet"].merge_range( + report_data["row_pos"], + 0, + report_data["row_pos"] + 1, + 9, + title, + report_data["formats"]["format_title"], ) - self.row_pos += 3 + report_data["row_pos"] += 5 - def _generate_report_content(self, workbook, report): + def _generate_report_content(self, workbook, objects, data, report_data): """Creates actual xls report""" + report = objects for categ_section in report.report_category_ids: - self.write_all(self.category_data, categ_section) + self.write_all(report_data, categ_section, "category_data") for asset_section in categ_section.report_asset_ids: - self.write_all(self.asset_data, asset_section) + self.write_all(report_data, asset_section, "asset_data") if asset_section.report_purchase_doc_id: self.write_all( - self.asset_accounting_doc_data, + report_data, asset_section.report_purchase_doc_id, + "asset_accounting_doc_data", ) for dep_section in asset_section.report_depreciation_ids: - self.write_all(self.depreciation_data, dep_section) + self.write_all(report_data, dep_section, "depreciation_data") - self.write_header(self.depreciation_line_year_data) + self.write_header(report_data, "depreciation_line_year_data") for year in dep_section.report_depreciation_year_line_ids: - self.write_value(self.depreciation_line_year_data, year) + self.write_value( + report_data, year, "depreciation_line_year_data" + ) if year.has_amount_detail: self.write_value( - self.depreciation_line_amount_detail_data, year + report_data, + year, + "depreciation_line_amount_detail_data", ) for doc in year.report_accounting_doc_ids: self.write_value( - self.depreciation_line_accounting_doc_data, doc + report_data, + doc, + "depreciation_line_accounting_doc_data", ) if asset_section.report_sale_doc_id: self.write_all( - self.asset_accounting_doc_data, asset_section.report_sale_doc_id + report_data, + asset_section.report_sale_doc_id, + "asset_accounting_doc_data", ) - self.row_pos += 1 + report_data["row_pos"] += 1 if report.show_category_totals: - self.write_header(self.totals_data) + self.write_header(report_data, "totals_data") for total_section in categ_section.report_total_ids: - self.write_value(self.totals_data, total_section) - self.row_pos += 1 + self.write_value(report_data, total_section, "totals_data") + report_data["row_pos"] += 1 - self.row_pos += 1 + report_data["row_pos"] += 1 if report.show_totals: - self.write_header(self.totals_data) + self.write_header(report_data, "totals_data") for total_section in report.report_total_ids: - self.write_value(self.totals_data, total_section) - self.row_pos += 1 - - def write_all(self, data, obj): - self.write_header(data) - self.write_value(data, obj) - - def write_header(self, data): - pos = self.row_pos - for col, data in data.items(): - self.sheet.write(pos, col, data["title"], data["tstyle"]) - self.row_pos += 1 - - def write_value(self, data, obj): - pos = self.row_pos - for col, data in data.items(): + self.write_value(report_data, total_section, "totals_data") + report_data["row_pos"] += 1 + + def _define_formats(self, workbook, report_data): + """Add cell formats to current workbook. + Those formats can be used on all cell. + Available formats are : + * format_bold + * format_right + * format_right_bold_italic + * format_header_left + * format_header_center + * format_header_right + * format_header_amount + * format_amount + * format_percent_bold_italic + """ + currency_id = self.env["res.company"]._default_currency_id() + report_data["formats"] = { + "format_bold": workbook.add_format({"bold": True}), + "format_right": workbook.add_format({"align": "right"}), + "format_left": workbook.add_format({"align": "left"}), + "format_right_bold_italic": workbook.add_format( + {"align": "right", "bold": True, "italic": True} + ), + "format_header_left": workbook.add_format( + {"bold": True, "border": True, "bg_color": "#FFFFCC"} + ), + "format_header_center": workbook.add_format( + {"bold": True, "align": "center", "border": True, "bg_color": "#FFFFCC"} + ), + "format_header_right": workbook.add_format( + {"bold": True, "align": "right", "border": True, "bg_color": "#FFFFCC"} + ), + "format_header_amount": workbook.add_format( + {"bold": True, "border": True, "bg_color": "#FFFFCC"} + ), + "format_amount": workbook.add_format(), + "format_amount_bold": workbook.add_format({"bold": True}).set_num_format( + "#,##0." + "0" * currency_id.decimal_places + ), + "format_percent_bold_italic": workbook.add_format( + {"bold": True, "italic": True} + ), + } + report_data["formats"]["format_amount"].set_num_format( + "#,##0." + "0" * currency_id.decimal_places + ) + report_data["formats"]["format_header_amount"].set_num_format( + "#,##0." + "0" * currency_id.decimal_places + ) + report_data["formats"]["format_percent_bold_italic"].set_num_format("#,##0.00%") + + def write_all(self, report_data, obj, index): + self.write_header(report_data, index) + self.write_value(report_data, obj, index) + + def write_header(self, report_data, index): + pos = report_data["row_pos"] + for col, data in report_data[index].items(): + report_data["sheet"].write(pos, col, data["title"], data["tstyle"]) + report_data["row_pos"] += 1 + + def write_value(self, report_data, obj, index): + pos = report_data["row_pos"] + for col, data in report_data[index].items(): value, style = getattr(obj, data["field"]), data["vstyle"] if data.get("type") == "amount": - value = getattr(obj, "format_amount")(value) + value = obj.format_amount(value) if value in (False, None): value = "/" - self.sheet.write(pos, col, value, style) - self.row_pos += 1 + report_data["sheet"].write(pos, col, value, style) + report_data["row_pos"] += 1 ######################################################## # # @@ -649,5 +720,5 @@ def _get_col_count_filter_name(self): def _get_col_count_filter_value(self): """Override original method even if not used to avoid errors""" - def _write_filters(self, filters): + def _write_filters(self, filters, data): """Override original method even if not used to avoid errors""" diff --git a/assets_management/report/asset_previsional.py b/assets_management/report/asset_previsional.py index 633c937d9e78..20e7efa5ce32 100644 --- a/assets_management/report/asset_previsional.py +++ b/assets_management/report/asset_previsional.py @@ -7,11 +7,9 @@ from odoo import _, api, fields, models from odoo.exceptions import ValidationError from odoo.tools.float_utils import float_is_zero -from odoo.tools.pycompat import string_types +from odoo.tools.misc import format_amount from odoo.tools.safe_eval import safe_eval -from odoo.addons.mail.models.mail_template import format_amount - def format_date(rec, field_name, fmt): """Formats record's field value according to given format `fmt`""" @@ -36,7 +34,8 @@ class Report(models.TransientModel): """ _name = "report_asset_previsional" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Previsional" + _inherit = "report.account_financial_report.abstract_report" # Data fields asset_ids = fields.Many2many( @@ -92,7 +91,6 @@ class Report(models.TransientModel): # # ############################ - @api.multi def print_report(self, report_type=None): """ This method is called from the JS widget buttons 'Print' @@ -125,14 +123,13 @@ def do_print(self, report_type): report = self.env.ref(xml_id) return report.report_action(self) - @api.multi def view_report(self): """Launches view for HTML report""" self.ensure_one() xmlid = "assets_management.act_client_asset_previsional_report" [act] = self.env.ref(xmlid).read() ctx = act.get("context", {}) - if isinstance(ctx, string_types): + if isinstance(ctx, str): ctx = safe_eval(ctx) # Call update twice to force 'active_id(s)' values to be overridden ctx.update(dict(self._context)) @@ -254,8 +251,9 @@ def generate_structure(self): for fyear, lines in lines_by_fyear.items(): if fyear.date_to >= dep.date_start: prev = not lines or not any( - l.move_type == "depreciated" and not l.partial_dismissal - for l in lines + line.move_type == "depreciated" + and not line.partial_dismissal + for line in lines ) sequence += 1 line_ids = lines.ids @@ -341,7 +339,8 @@ def sort_assets(self, assets): class ReportCategory(models.TransientModel): _name = "report_asset_previsional_category" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Previsional Category" + _inherit = "report.account_financial_report.abstract_report" # Data fields category_id = fields.Many2one("asset.category", ondelete="cascade", required=True) @@ -433,7 +432,8 @@ def generate_totals(self): class ReportAsset(models.TransientModel): _name = "report_asset_previsional_asset" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Previsional Asset" + _inherit = "report.account_financial_report.abstract_report" # Data fields asset_id = fields.Many2one("asset.asset", ondelete="cascade", required=True) @@ -523,22 +523,14 @@ def get_purchase_vals(self): if asset.supplier_ref: purchase_vals["partner_ref"] = asset.supplier_ref - elif asset.purchase_invoice_id.reference: - purchase_vals["partner_ref"] = asset.purchase_invoice_id.reference + elif asset.purchase_move_id.payment_reference: + purchase_vals["partner_ref"] = asset.purchase_move_id.payment_reference elif asset.purchase_move_id.ref: purchase_vals["partner_ref"] = asset.purchase_move_id.ref else: purchase_vals["partner_ref"] = "/" - if asset.purchase_invoice_id: - purchase_vals.update( - { - "document_nr": asset.purchase_invoice_id.number or "/", - "res_id": asset.purchase_invoice_id.id, - "res_model": "account.invoice", - } - ) - elif asset.purchase_move_id: + if asset.purchase_move_id: purchase_vals.update( { "document_nr": asset.purchase_move_id.name or "/", @@ -568,15 +560,7 @@ def get_sale_vals(self): "partner_vat": asset.customer_id.vat or "/", } - if asset.sale_invoice_id: - sale_vals.update( - { - "document_nr": asset.sale_invoice_id.number or "/", - "res_id": asset.sale_invoice_id.id, - "res_model": "account.invoice", - } - ) - elif asset.sale_move_id: + if asset.sale_move_id: sale_vals.update( { "document_nr": asset.sale_move_id.name or "/", @@ -597,7 +581,8 @@ def get_sale_vals(self): class ReportDepreciation(models.TransientModel): _name = "report_asset_previsional_depreciation" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Previsional Depreciation" + _inherit = "report.account_financial_report.abstract_report" _order = "type_name asc" # Data fields @@ -657,7 +642,8 @@ def get_report_dep_data(self): class ReportDepreciationLineByYear(models.TransientModel): _name = "report_asset_previsional_depreciation_line_year" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Previsional Depreciation Line Year" + _inherit = "report.account_financial_report.abstract_report" _order = "sequence asc" # Data fields @@ -912,7 +898,8 @@ def get_report_dep_line_year_data(self): class ReportAccountingDoc(models.TransientModel): _name = "report_asset_previsional_accounting_doc" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Previsional Accounting Doc" + _inherit = "report.account_financial_report.abstract_report" _order = "sequence asc" # Report structure fields @@ -933,7 +920,8 @@ class ReportAccountingDoc(models.TransientModel): class ReportTotals(models.TransientModel): _name = "report_asset_previsional_totals" - _inherit = "account_financial_report_abstract" + _description = "Report Asset Previsional Totals" + _inherit = "report.account_financial_report.abstract_report" _total_fnames = [ "amount_depreciable_updated", "amount_depreciated", diff --git a/assets_management/report/asset_previsional_xlsx.py b/assets_management/report/asset_previsional_xlsx.py index b8172509fd4e..f1717e5561cf 100644 --- a/assets_management/report/asset_previsional_xlsx.py +++ b/assets_management/report/asset_previsional_xlsx.py @@ -9,61 +9,44 @@ class AssetJournalXslx(models.AbstractModel): _name = "report.assets_management.report_asset_previsional_xlsx" + _description = "Report Asset Previsional Xlsx" _inherit = "report.account_financial_report.abstract_report_xlsx" - def __init__(self, pool, cr): - """Adds new attributes""" - super().__init__(pool, cr) - - # Add report objects - self.workbook = None - self.data = None - self.report = None - - # These `_data`s here are made as dict of dicts, the key being the - # column number to be printed into, the second one the field datas for - # the print itself - self.category_data = None - self.asset_data = None - self.asset_accounting_doc_data = None - self.depreciation_data = None - self.depreciation_line_year_data = None - self.depreciation_line_amount_detail_data = None - self.totals_data = None - - # 1- Category formats - self.format_category_name = None - - # 2- Asset formats (purchase and sale docs will use the same format) - self.format_asset_header = None - self.format_asset_value = None - - # 3- Depreciations formats - self.format_depreciation_header = None - self.format_depreciation_value = None - - # 4- Depreciation yearly and amount details formats - self.format_depreciation_year_line_header = None - self.format_depreciation_year_line_value_center = None - self.format_depreciation_year_line_value_right = None - - # 5- Report title - self.format_title = None - def generate_xlsx_report(self, workbook, data, objects): """Set wb, data and report attributes""" - self.workbook = workbook - self.data = data - self.report = objects - self.set_formats() - self.set_report_data() - super().generate_xlsx_report(workbook, data, objects) - - def set_formats(self): + # Initialize report variables + report_data = { + "workbook": None, + "sheet": None, # main sheet which will contains report + "columns": None, # columns of the report + "row_pos": None, # row_pos must be incremented at each writing lines + "formats": None, + } + report_name = self._get_report_name(objects, data=data) + report_data["workbook"] = workbook + report_data["sheet"] = workbook.add_worksheet(report_name[:31]) + report_data["row_pos"] = 0 + self._define_formats(workbook, report_data) + self.set_formats(workbook, report_data) + self.set_report_data(report_data) + + # Get report data + + report_footer = self._get_report_footer() + filters = self._get_report_filters(objects) + report_data["columns"] = self._get_report_columns(objects) + self._set_column_width(report_data) + # Fill report + self._write_report_title(report_name, report_data) + self._write_filters(filters, report_data) + self._generate_report_content(workbook, objects, data, report_data) + self._write_report_footer(report_footer, report_data) + + def set_formats(self, workbook, report_data): """Defines custom formats""" # 1- Category formats - self.format_category_name = self.workbook.add_format( + report_data["formats"]["format_category_name"] = workbook.add_format( { "align": "center", "bg_color": "#337AB7", @@ -74,7 +57,7 @@ def set_formats(self): ) # 2- Asset formats - self.format_asset_header = self.workbook.add_format( + report_data["formats"]["format_asset_header"] = workbook.add_format( { "align": "center", "bold": True, @@ -82,7 +65,7 @@ def set_formats(self): "font_size": 14, } ) - self.format_asset_value = self.workbook.add_format( + report_data["formats"]["format_asset_value"] = workbook.add_format( { "align": "center", "font_color": "#337AB7", @@ -91,14 +74,15 @@ def set_formats(self): ) # 3- Depreciations formats - self.format_depreciation_header = self.workbook.add_format( + report_data["formats"]["format_depreciation_header"] = workbook.add_format( { "align": "center", "bold": True, "font_size": 12, } ) - self.format_depreciation_value = self.workbook.add_format( + + report_data["formats"]["format_depreciation_value"] = workbook.add_format( { "align": "center", "font_size": 12, @@ -106,20 +90,28 @@ def set_formats(self): ) # 4- Depreciation yearly and amount details formats - self.format_depreciation_year_line_header = self.workbook.add_format( + report_data["formats"][ + "format_depreciation_year_line_header" + ] = workbook.add_format( { "align": "center", "bold": True, "font_size": 12, } ) - self.format_depreciation_year_line_value_center = self.workbook.add_format( + + report_data["formats"][ + "format_depreciation_year_line_value_center" + ] = workbook.add_format( { "align": "center", "font_size": 12, } ) - self.format_depreciation_year_line_value_right = self.workbook.add_format( + + report_data["formats"][ + "format_depreciation_year_line_value_right" + ] = workbook.add_format( { "align": "right", "font_size": 12, @@ -127,7 +119,7 @@ def set_formats(self): ) # 5- Report title - self.format_title = self.workbook.add_format( + report_data["formats"]["format_title"] = workbook.add_format( { "align": "center", "bg_color": "#337AB7", @@ -137,447 +129,562 @@ def set_formats(self): } ) - def set_report_data(self): - self.set_category_data() - self.set_asset_data() - self.set_asset_accounting_doc_data() - self.set_depreciation_data() - self.set_depreciation_line_year_data() - self.set_depreciation_line_amount_detail_data() - self.set_totals_data() + def set_report_data(self, report_data): + self.set_category_data(report_data) + self.set_asset_data(report_data) + self.set_asset_accounting_doc_data(report_data) + self.set_depreciation_data(report_data) + self.set_depreciation_line_year_data(report_data) + self.set_depreciation_line_amount_detail_data(report_data) + self.set_totals_data(report_data) - def set_category_data(self): - self.category_data = self.generate_category_data() + def set_category_data(self, report_data): + report_data["category_data"] = self.generate_category_data(report_data) - def generate_category_data(self): + def generate_category_data(self, report_data): data = ( { "title": _("Category"), "field": "category_name", - "tstyle": self.format_category_name, - "vstyle": self.format_category_name, + "tstyle": report_data["formats"]["format_category_name"], + "vstyle": report_data["formats"]["format_category_name"], }, ) return dict(enumerate(data)) - def set_asset_data(self): - self.asset_data = self.generate_asset_data() + def set_asset_data(self, report_data): + report_data["asset_data"] = self.generate_asset_data(report_data) - def generate_asset_data(self): + def generate_asset_data(self, report_data): data = ( { "title": _("Asset"), "field": "asset_name", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Code"), "field": "asset_code", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Purchase Amount"), "field": "asset_purchase_amount", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Purchased as New / Used"), "field": "asset_used", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Status"), "field": "asset_state", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, ) return dict(enumerate(data)) - def set_asset_accounting_doc_data(self): - self.asset_accounting_doc_data = self.generate_asset_accounting_doc_data() + def set_asset_accounting_doc_data(self, report_data): + report_data[ + "asset_accounting_doc_data" + ] = self.generate_asset_accounting_doc_data(report_data) - def generate_asset_accounting_doc_data(self): + def generate_asset_accounting_doc_data(self, report_data): data = ( { "title": _("Partner"), "field": "partner_name", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("VAT"), "field": "partner_vat", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Document Nr"), "field": "document_nr", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Document Date"), "field": "document_date", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Supplier Ref"), "field": "partner_ref", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, ) return {n + 1: d for n, d in enumerate(data)} - def set_depreciation_data(self): - self.depreciation_data = self.generate_depreciation_data() + def set_depreciation_data(self, report_data): + report_data["depreciation_data"] = self.generate_depreciation_data(report_data) - def generate_depreciation_data(self): + def generate_depreciation_data(self, report_data): data = ( { "title": _("Depreciation Type"), "field": "type_name", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Depreciation Mode"), "field": "mode_name", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Depreciable Amount"), "field": "dep_amount_depreciable", "type": "amount", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Starting From"), "field": "dep_date_start", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Dep. Percentage (%)"), "field": "dep_percentage", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, { "title": _("Pro Rata Temporis"), "field": "dep_pro_rata_temporis", - "tstyle": self.format_depreciation_header, - "vstyle": self.format_depreciation_value, + "tstyle": report_data["formats"]["format_depreciation_header"], + "vstyle": report_data["formats"]["format_depreciation_value"], }, ) return {n + 1: d for n, d in enumerate(data)} - def set_depreciation_line_year_data(self): - self.depreciation_line_year_data = self.generate_depreciation_line_year_data() + def set_depreciation_line_year_data(self, report_data): + report_data[ + "depreciation_line_year_data" + ] = self.generate_depreciation_line_year_data(report_data) - def generate_depreciation_line_year_data(self): + def generate_depreciation_line_year_data(self, report_data): data = ( { "title": _("Year"), "field": "year", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_center" + ], }, { "title": _("Amount"), "field": "amount_depreciable_updated", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_right" + ], }, { "title": _("In Amount"), "field": "amount_in", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_right" + ], }, { "title": _("Out Amount"), "field": "amount_out", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_right" + ], }, { "title": _("Prev. Year Dep. Fund"), "field": "amount_depreciation_fund_prev_year", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_right" + ], }, { "title": _("Depreciation"), "field": "amount_depreciated", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_right" + ], }, { "title": _("Curr. Year Dep. Fund"), "field": "amount_depreciation_fund_curr_year", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_right" + ], }, { "title": _("Gain / Loss"), "field": "gain_loss", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_right" + ], }, { "title": _("Residual"), "field": "amount_residual", "type": "amount", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_right, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_right" + ], }, ) return {n + 1: d for n, d in enumerate(data)} - def set_depreciation_line_amount_detail_data(self): - self.depreciation_line_amount_detail_data = ( - self.generate_depreciation_line_amount_detail_data() - ) + def set_depreciation_line_amount_detail_data(self, report_data): + report_data[ + "depreciation_line_amount_detail_data" + ] = self.generate_depreciation_line_amount_detail_data(report_data) - def generate_depreciation_line_amount_detail_data(self): + def generate_depreciation_line_amount_detail_data(self, report_data): data = ( { "title": _("In Amount - Detail"), "field": "amount_in_detail", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_center" + ], }, { "title": _("Out Amount - Detail"), "field": "amount_out_detail", - "tstyle": self.format_depreciation_year_line_header, - "vstyle": self.format_depreciation_year_line_value_center, + "tstyle": report_data["formats"][ + "format_depreciation_year_line_header" + ], + "vstyle": report_data["formats"][ + "format_depreciation_year_line_value_center" + ], }, ) return {n + 3: d for n, d in enumerate(data)} - def set_totals_data(self): - self.totals_data = self.get_totals_data() + def set_totals_data(self, report_data): + report_data["totals_data"] = self.get_totals_data(report_data) - def get_totals_data(self): + def get_totals_data(self, report_data): data = ( { "title": _("Total"), "field": "name", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Type"), "field": "type_name", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Amount"), "field": "amount_depreciable_updated", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("In Amount"), "field": "amount_in_total", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Out Amount"), "field": "amount_out_total", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Prev. Year Dep. Fund"), "field": "amount_depreciation_fund_prev_year", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Depreciation"), "field": "amount_depreciated", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Curr. Year Dep. Fund"), "field": "amount_depreciation_fund_curr_year", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Gain / Loss"), "field": "gain_loss_total", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, { "title": _("Residual"), "field": "amount_residual", "type": "amount", - "tstyle": self.format_asset_header, - "vstyle": self.format_asset_value, + "tstyle": report_data["formats"]["format_asset_header"], + "vstyle": report_data["formats"]["format_asset_value"], }, ) return {n: d for n, d in enumerate(data)} - def _set_column_width(self): + def _set_column_width(self, report_data): """Override to force every column to width 25 at least""" - max_width = self.get_max_width_dict() + max_width = self.get_max_width_dict(report_data) for col, width in max_width.items(): - self.sheet.set_column(col, col, max(width, 25)) + report_data["sheet"].set_column(col, col, max(width, 25)) - def get_max_width_dict(self): + def get_max_width_dict(self, report_data): min_col = min( [ - min(self.category_data.keys()), - min(self.asset_data.keys()), - min(self.asset_accounting_doc_data.keys()), - min(self.depreciation_data.keys()), - min(self.depreciation_line_year_data.keys()), - min(self.depreciation_line_amount_detail_data.keys()), - min(self.totals_data.keys()), + min(report_data["category_data"].keys()), + min(report_data["asset_data"].keys()), + min(report_data["asset_accounting_doc_data"].keys()), + min(report_data["depreciation_data"].keys()), + min(report_data["depreciation_line_year_data"].keys()), + min(report_data["depreciation_line_amount_detail_data"].keys()), + min(report_data["totals_data"].keys()), ] ) max_col = max( [ - max(self.category_data.keys()), - max(self.asset_data.keys()), - max(self.asset_accounting_doc_data.keys()), - max(self.depreciation_data.keys()), - max(self.depreciation_line_year_data.keys()), - max(self.depreciation_line_amount_detail_data.keys()), - max(self.totals_data.keys()), + max(report_data["category_data"].keys()), + max(report_data["asset_data"].keys()), + max(report_data["asset_accounting_doc_data"].keys()), + max(report_data["depreciation_data"].keys()), + max(report_data["depreciation_line_year_data"].keys()), + max(report_data["depreciation_line_amount_detail_data"].keys()), + max(report_data["totals_data"].keys()), ] ) return { col: max( [ - self.category_data.get(col, {}).get("width") or 0, - self.asset_data.get(col, {}).get("width") or 0, - self.asset_accounting_doc_data.get(col, {}).get("width") or 0, - self.depreciation_data.get(col, {}).get("width") or 0, - self.depreciation_line_year_data.get(col, {}).get("width") or 0, - self.depreciation_line_amount_detail_data.get(col, {}).get("width") + report_data["category_data"].get(col, {}).get("width") or 0, + report_data["asset_data"].get(col, {}).get("width") or 0, + report_data["asset_accounting_doc_data"].get(col, {}).get("width") or 0, - self.totals_data.get(col, {}).get("width") or 0, + report_data["depreciation_data"].get(col, {}).get("width") or 0, + report_data["depreciation_line_year_data"].get(col, {}).get("width") + or 0, + report_data["depreciation_line_amount_detail_data"] + .get(col, {}) + .get("width") + or 0, + report_data["totals_data"].get(col, {}).get("width") or 0, ] ) for col in range(min_col, max_col + 1) } - def _get_report_name(self, report): + def _get_report_name(self, report, data=False): """ * Overrides standard method * Returns name for both sheet and report title """ return self._get_report_complete_name(report, report.report_name) - def _write_report_title(self, title): + def _write_report_title(self, title, report_data): """ * Overrides standard method * Writes report title on current line using all defined columns width """ - self.sheet.merge_range( - self.row_pos, 0, self.row_pos, 9, title, self.format_title + report_data["sheet"].merge_range( + report_data["row_pos"], + 0, + report_data["row_pos"] + 1, + 9, + title, + report_data["formats"]["format_title"], ) - self.row_pos += 3 + report_data["row_pos"] += 5 - def _generate_report_content(self, workbook, report): + def _generate_report_content(self, workbook, objects, data, report_data): """Creates actual xls report""" + report = objects for categ_section in report.report_category_ids: - self.write_all(self.category_data, categ_section) + self.write_all(report_data, categ_section, "category_data") for asset_section in categ_section.report_asset_ids: - self.write_all(self.asset_data, asset_section) + self.write_all(report_data, asset_section, "asset_data") if asset_section.report_purchase_doc_id: self.write_all( - self.asset_accounting_doc_data, + report_data, asset_section.report_purchase_doc_id, + "asset_accounting_doc_data", ) for dep_section in asset_section.report_depreciation_ids: - self.write_all(self.depreciation_data, dep_section) + self.write_all(report_data, dep_section, "depreciation_data") - self.write_header(self.depreciation_line_year_data) + self.write_header(report_data, "depreciation_line_year_data") for year in dep_section.report_depreciation_year_line_ids: - self.write_value(self.depreciation_line_year_data, year) + self.write_value( + report_data, year, "depreciation_line_year_data" + ) if year.has_amount_detail: self.write_value( - self.depreciation_line_amount_detail_data, year + report_data, + year, + "depreciation_line_amount_detail_data", ) if asset_section.report_sale_doc_id: self.write_all( - self.asset_accounting_doc_data, asset_section.report_sale_doc_id + report_data, + asset_section.report_sale_doc_id, + "asset_accounting_doc_data", ) - self.row_pos += 1 + report_data["row_pos"] += 1 if report.show_category_totals: - self.write_header(self.totals_data) + self.write_header(report_data, "totals_data") for total_section in categ_section.report_total_ids: - self.write_value(self.totals_data, total_section) - self.row_pos += 1 + self.write_value(report_data, total_section, "totals_data") + report_data["row_pos"] += 1 - self.row_pos += 1 + report_data["row_pos"] += 1 if report.show_totals: - self.write_header(self.totals_data) + self.write_header(report_data, "totals_data") for total_section in report.report_total_ids: - self.write_value(self.totals_data, total_section) - self.row_pos += 1 - - def write_all(self, data, obj): - self.write_header(data) - self.write_value(data, obj) - - def write_header(self, data): - pos = self.row_pos - for col, data in data.items(): - self.sheet.write(pos, col, data["title"], data["tstyle"]) - self.row_pos += 1 - - def write_value(self, data, obj): - pos = self.row_pos - for col, data in data.items(): + self.write_value(report_data, total_section, "totals_data") + report_data["row_pos"] += 1 + + def _define_formats(self, workbook, report_data): + """Add cell formats to current workbook. + Those formats can be used on all cell. + Available formats are : + * format_bold + * format_right + * format_right_bold_italic + * format_header_left + * format_header_center + * format_header_right + * format_header_amount + * format_amount + * format_percent_bold_italic + """ + currency_id = self.env["res.company"]._default_currency_id() + report_data["formats"] = { + "format_bold": workbook.add_format({"bold": True}), + "format_right": workbook.add_format({"align": "right"}), + "format_left": workbook.add_format({"align": "left"}), + "format_right_bold_italic": workbook.add_format( + {"align": "right", "bold": True, "italic": True} + ), + "format_header_left": workbook.add_format( + {"bold": True, "border": True, "bg_color": "#FFFFCC"} + ), + "format_header_center": workbook.add_format( + {"bold": True, "align": "center", "border": True, "bg_color": "#FFFFCC"} + ), + "format_header_right": workbook.add_format( + {"bold": True, "align": "right", "border": True, "bg_color": "#FFFFCC"} + ), + "format_header_amount": workbook.add_format( + {"bold": True, "border": True, "bg_color": "#FFFFCC"} + ), + "format_amount": workbook.add_format(), + "format_amount_bold": workbook.add_format({"bold": True}).set_num_format( + "#,##0." + "0" * currency_id.decimal_places + ), + "format_percent_bold_italic": workbook.add_format( + {"bold": True, "italic": True} + ), + } + report_data["formats"]["format_amount"].set_num_format( + "#,##0." + "0" * currency_id.decimal_places + ) + report_data["formats"]["format_header_amount"].set_num_format( + "#,##0." + "0" * currency_id.decimal_places + ) + report_data["formats"]["format_percent_bold_italic"].set_num_format("#,##0.00%") + + def write_all(self, report_data, obj, index): + self.write_header(report_data, index) + self.write_value(report_data, obj, index) + + def write_header(self, report_data, index): + pos = report_data["row_pos"] + for col, data in report_data[index].items(): + report_data["sheet"].write(pos, col, data["title"], data["tstyle"]) + report_data["row_pos"] += 1 + + def write_value(self, report_data, obj, index): + pos = report_data["row_pos"] + for col, data in report_data[index].items(): value, style = getattr(obj, data["field"]), data["vstyle"] if data.get("type") == "amount": - value = getattr(obj, "format_amount")(value) + value = obj.format_amount(value) if value in (False, None): value = "/" - self.sheet.write(pos, col, value, style) - self.row_pos += 1 + report_data["sheet"].write(pos, col, value, style) + report_data["row_pos"] += 1 ######################################################## # # @@ -599,5 +706,5 @@ def _get_col_count_filter_name(self): def _get_col_count_filter_value(self): """Override original method even if not used to avoid errors""" - def _write_filters(self, filters): + def _write_filters(self, filters, data): """Override original method even if not used to avoid errors""" diff --git a/assets_management/report/reports.xml b/assets_management/report/reports.xml index b9f2a5ddabd8..5ffd44361db3 100644 --- a/assets_management/report/reports.xml +++ b/assets_management/report/reports.xml @@ -1,62 +1,79 @@ + + Asset Report HTML + report_asset_journal + qweb-html + + assets_management.template_asset_journal_qweb + assets_management.template_asset_journal_html + - + + Asset Report PDF + report_asset_journal + qweb-pdf + + assets_management.template_asset_journal_qweb + assets_management.template_asset_journal_qweb + - + + Asset Report XLSX + report_asset_journal + xlsx + assets_management.report_asset_journal_xlsx + assets_management.report_asset_journal_xlsx + - + + Asset Previsional Report HTML + report_asset_previsional + qweb-html + + assets_management.template_asset_previsional_qweb + assets_management.template_asset_previsional_html + - + + Asset Previsional Report PDF + report_asset_previsional + qweb-pdf + + assets_management.template_asset_previsional_qweb + assets_management.template_asset_previsional_qweb + - - - + + Asset Previsional Report XLSX + report_asset_previsional + xlsx + assets_management.report_asset_previsional_xlsx + assets_management.report_asset_previsional_xlsx + diff --git a/assets_management/security/ir.model.access.csv b/assets_management/security/ir.model.access.csv old mode 100755 new mode 100644 index 24186943fb63..5181e03adaaf --- a/assets_management/security/ir.model.access.csv +++ b/assets_management/security/ir.model.access.csv @@ -10,3 +10,21 @@ asset_depreciation_mode_user,asset_depreciation_mode_user,model_asset_depreciati asset_depreciation_mode_line_user,asset_depreciation_mode_line_user,model_asset_depreciation_mode_line,base.group_user,1,1,1,1 asset_depreciation_type_user,asset_depreciation_type_user,model_asset_depreciation_type,base.group_user,1,1,1,1 asset_tag_user,asset_tag_user,model_asset_tag,base.group_user,1,1,1,1 +asset_generate_depreciation_user,asset_generate_depreciation_user,model_wizard_asset_generate_depreciation,base.group_user,1,1,1,1 +asset_journal_report,asset_journal_report,model_wizard_asset_journal_report,base.group_user,1,1,1,1 +asset_previsional_report,asset_previsional_report,model_wizard_asset_previsional_report,base.group_user,1,1,1,1 +asset_report_asset_journal,asset_report_asset_journal,model_report_asset_journal,base.group_user,1,1,1,1 +asset_report_asset_journal_category,asset_report_asset_journal_category,model_report_asset_journal_category,base.group_user,1,1,1,1 +asset_report_asset_journal_asset,asset_report_asset_journal_asset,model_report_asset_journal_asset,base.group_user,1,1,1,1 +asset_report_asset_journal_depreciation,asset_report_asset_journal_depreciation,model_report_asset_journal_depreciation,base.group_user,1,1,1,1 +asset_report_asset_journal_depreciation_line_year,asset_report_asset_journal_depreciation_line_year,model_report_asset_journal_depreciation_line_year,base.group_user,1,1,1,1 +asset_report_asset_journal_accounting_doc,asset_report_asset_journal_accounting_doc,model_report_asset_journal_accounting_doc,base.group_user,1,1,1,1 +asset_report_asset_journal_totals,asset_report_asset_journal_totals,model_report_asset_journal_totals,base.group_user,1,1,1,1 +asset_report_asset_previsional,asset_report_asset_previsional,model_report_asset_previsional,base.group_user,1,1,1,1 +asset_report_asset_previsional_category,asset_report_asset_previsional_category,model_report_asset_previsional_category,base.group_user,1,1,1,1 +asset_report_asset_previsional_asset,asset_report_asset_previsional_asset,model_report_asset_previsional_asset,base.group_user,1,1,1,1 +asset_report_asset_previsional_depreciation,asset_report_asset_previsional_depreciation,model_report_asset_previsional_depreciation,base.group_user,1,1,1,1 +asset_report_asset_previsional_depreciation_line_year,asset_report_asset_previsional_depreciation_line_year,model_report_asset_previsional_depreciation_line_year,base.group_user,1,1,1,1 +asset_report_asset_previsional_accounting_doc,asset_report_asset_previsional_accounting_doc,model_report_asset_previsional_accounting_doc,base.group_user,1,1,1,1 +asset_report_asset_previsional_totals,asset_report_asset_previsional_totals,model_report_asset_previsional_totals,base.group_user,1,1,1,1 +asset_wizard_account_move_manage_asset,asset_wizard_account_move_manage_asset,model_wizard_account_move_manage_asset,base.group_user,1,1,1,1 diff --git a/assets_management/security/res_groups.xml b/assets_management/security/res_groups.xml index d56ac830d481..03f601f475e0 100644 --- a/assets_management/security/res_groups.xml +++ b/assets_management/security/res_groups.xml @@ -3,7 +3,7 @@ Asset Users - + diff --git a/assets_management/static/description/index.html b/assets_management/static/description/index.html index d9f8977e97fe..d84a02a652a4 100644 --- a/assets_management/static/description/index.html +++ b/assets_management/static/description/index.html @@ -337,13 +337,13 @@ /* "booktabs" style (no vertical lines) */ table.docutils.booktabs { - border: 0px; + border: 0; border-top: 2px solid; border-bottom: 2px solid; border-collapse: collapse; } table.docutils.booktabs * { - border: 0px; + border: 0; } table.docutils.booktabs th { border-bottom: thin solid; diff --git a/assets_management/static/src/css/report.css b/assets_management/static/src/css/report.css index 203f43c714ab..bb233d6da63d 100644 --- a/assets_management/static/src/css/report.css +++ b/assets_management/static/src/css/report.css @@ -17,8 +17,7 @@ display: table-row-group !important; } .list_table, -.data_table, -.totals_table { +.data_table { width: 100% !important; } .act_as_row.labels { @@ -26,22 +25,14 @@ } .list_table, .data_table, -.totals_table, .list_table .act_as_row { - border-left: 0px; - border-right: 0px; + border-left: 0; + border-right: 0; text-align: center; font-size: 10px; - padding-right: 3px; - padding-left: 3px; - padding-top: 2px; - padding-bottom: 2px; + padding: 2px 3px; border-collapse: collapse; } -.totals_table { - font-weight: bold; - text-align: center; -} .list_table .act_as_row.labels, .list_table .act_as_row.initial_balance, .list_table .act_as_row.lines { @@ -85,29 +76,17 @@ /* border-right:1px solid lightGrey; uncomment to active column lines */ } .list_table .act_as_cell.first_column { - padding-left: 0px; + padding-left: 0; /* border-left:1px solid lightGrey; uncomment to active column lines */ } -.overflow_ellipsis { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} .custom_footer { font-size: 7px !important; } -.page_break { - page-break-inside: avoid; -} - -.button_row { - padding-bottom: 10px; -} .o_account_financial_reports_page { padding-top: 10px; width: 90%; margin-right: auto; margin-left: auto; - font-family: Helvetica, Arial; + font-family: Helvetica, Arial, serif; } diff --git a/assets_management/tests/test_assets_management.py b/assets_management/tests/test_assets_management.py index 45b7a253e0a3..ce44302c68b8 100644 --- a/assets_management/tests/test_assets_management.py +++ b/assets_management/tests/test_assets_management.py @@ -1,54 +1,55 @@ # Copyright 2021 Sergio Corato # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -from dateutil.relativedelta import relativedelta - from odoo import fields -from odoo.tests.common import TransactionCase +from odoo.exceptions import ValidationError +from odoo.tests.common import SavepointCase +from odoo.tools.date_utils import relativedelta -class TestAssets(TransactionCase): - def setUp(self): - super().setUp() - self.data_account_type_current_assets = self.env.ref( +class TestAssets(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.data_account_type_current_assets = cls.env.ref( "account.data_account_type_current_assets" ) - self.data_account_type_current_liabilities = self.env.ref( + cls.data_account_type_current_liabilities = cls.env.ref( "account.data_account_type_current_liabilities" ) - self.asset_category_1 = self.env["asset.category"].create( + cls.asset_category_1 = cls.env["asset.category"].create( { "name": "Asset category 1", - "asset_account_id": self.env["account.account"] + "asset_account_id": cls.env["account.account"] .search( [ ( "user_type_id", "=", - self.env.ref("account.data_account_type_fixed_assets").id, + cls.env.ref("account.data_account_type_fixed_assets").id, ) ], limit=1, ) .id, - "depreciation_account_id": self.env["account.account"] + "depreciation_account_id": cls.env["account.account"] .search( [ ( "user_type_id", "=", - self.env.ref("account.data_account_type_expenses").id, + cls.env.ref("account.data_account_type_expenses").id, ) ], limit=1, ) .id, - "fund_account_id": self.env["account.account"] + "fund_account_id": cls.env["account.account"] .search( [ ( "user_type_id", "=", - self.env.ref( + cls.env.ref( "account.data_account_type_non_current_assets" ).id, ) @@ -56,43 +57,118 @@ def setUp(self): limit=1, ) .id, - "gain_account_id": self.env["account.account"] + "gain_account_id": cls.env["account.account"] .search( [ ( "user_type_id", "=", - self.env.ref("account.data_account_type_revenue").id, + cls.env.ref("account.data_account_type_revenue").id, ) ], limit=1, ) .id, - "journal_id": self.env["account.journal"] + "journal_id": cls.env["account.journal"] .search([("type", "=", "general")], limit=1) .id, - "loss_account_id": self.env["account.account"] + "loss_account_id": cls.env["account.account"] .search( [ ( "user_type_id", "=", - self.env.ref("account.data_account_type_expenses").id, + cls.env.ref("account.data_account_type_expenses").id, ) ], limit=1, ) .id, + "type_ids": [ + ( + 0, + 0, + { + "depreciation_type_id": cls.env.ref( + "assets_management.ad_type_civilistico" + ).id, + "mode_id": cls.env.ref( + "assets_management.ad_mode_materiale" + ).id, + }, + ) + ], } ) - self.env["asset.category.depreciation.type"].create( + cls.tax_account = cls.env["account.account"].create( { - "base_coeff": 25.0, - "category_id": self.asset_category_1.id, - "depreciation_type_id": self.env.ref( - "assets_management.ad_type_civilistico" + "name": "Deductable tax", + "code": "DEDTAX", + "user_type_id": cls.env.ref( + "account.data_account_type_current_assets" ).id, - "mode_id": self.env.ref("assets_management.ad_mode_materiale").id, + } + ) + cls.tax_22_partial_60 = cls.env["account.tax"].create( + { + "name": "22% deductable partial 60%", + "type_tax_use": "purchase", + "amount_type": "percent", + "amount": 22, + "invoice_repartition_line_ids": [ + ( + 0, + 0, + { + "factor_percent": 100, + "repartition_type": "base", + }, + ), + ( + 0, + 0, + { + "factor_percent": 60, + "repartition_type": "tax", + "account_id": cls.tax_account.id, + }, + ), + ( + 0, + 0, + { + "factor_percent": 40, + "repartition_type": "tax", + }, + ), + ], + "refund_repartition_line_ids": [ + ( + 0, + 0, + { + "factor_percent": 100, + "repartition_type": "base", + }, + ), + ( + 0, + 0, + { + "factor_percent": 60, + "repartition_type": "tax", + "account_id": cls.tax_account.id, + }, + ), + ( + 0, + 0, + { + "factor_percent": 40, + "repartition_type": "tax", + }, + ), + ], } ) @@ -104,13 +180,25 @@ def _create_asset(self): "company_id": self.env.ref("base.main_company").id, "currency_id": self.env.ref("base.main_company").currency_id.id, "purchase_amount": 1000.0, - "purchase_date": fields.Date.today() + relativedelta(days=-366), + "purchase_date": fields.Date.today() + relativedelta(years=-1), } ) return asset - def test_create_depreciation(self): + def test_00_create_asset_depreciate_and_sale(self): + today = fields.Date.today() + first_depreciation_date = today.replace(month=12, day=31) + relativedelta( + years=-1 + ) + second_depreciation_date = today.replace(month=12, day=31) asset = self._create_asset() + civ_type = self.env.ref("assets_management.ad_type_civilistico") + depreciation_id = asset.depreciation_ids.filtered( + lambda x: x.type_id == civ_type + ) + self.assertEqual(len(depreciation_id), 1) + depreciation_id.percentage = 25.0 + depreciation_id.mode_id.line_ids.coefficient = 0.5 self.assertEqual( asset.state, "non_depreciated", "Asset is not in non depreciated state!" ) @@ -121,6 +209,258 @@ def test_create_depreciation(self): wiz = ( self.env["wizard.asset.generate.depreciation"] .with_context(wiz_vals["context"]) - .create({}) + .create({"date_dep": first_depreciation_date}) + ) + wiz.do_generate() + wiz_vals = asset.with_context( + {"allow_reload_window": True} + ).launch_wizard_generate_depreciations() + wiz = ( + self.env["wizard.asset.generate.depreciation"] + .with_context(wiz_vals["context"]) + .create({"date_dep": second_depreciation_date}) ) wiz.do_generate() + dep_lines = asset.depreciation_ids.line_ids + self.assertTrue(dep_lines) + self.assertEqual(len(dep_lines), 2) + civ_dep_lines = dep_lines.filtered( + lambda x: x.depreciation_id.type_id == civ_type + ) + self.assertAlmostEqual(sum(civ_dep_lines.mapped("amount")), 375) + self.assertEqual(asset.state, "partially_depreciated") + + # create sale invoice and link to asset + sale_invoice = self.env["account.move"].create( + { + "move_type": "out_invoice", + "partner_id": self.env.ref("base.partner_demo").id, + "journal_id": self.env["account.journal"] + .search( + [ + ("type", "=", "sale"), + ], + limit=1, + ) + .id, + "invoice_line_ids": [ + ( + 0, + 0, + { + "account_id": asset.category_id.asset_account_id.id, + "quantity": 1, + "price_unit": 600, + }, + ) + ], + } + ) + sale_invoice.action_post() + wiz_vals = sale_invoice.open_wizard_manage_asset() + move_line_ids = wiz_vals["context"]["default_move_line_ids"][0][2] + move_lines = self.env["account.move.line"].browse(move_line_ids) + move_lines_to_do = move_lines.filtered( + lambda x: x.account_id == asset.category_id.asset_account_id + ) + wiz_vals["context"]["default_move_line_ids"] = [(6, 0, move_lines_to_do.ids)] + wiz = ( + self.env["wizard.account.move.manage.asset"] + .with_context(wiz_vals["context"]) + .create( + { + "management_type": "dismiss", + "asset_id": asset.id, + } + ) + ) + with self.assertRaises(ValidationError) as exc: + wiz.link_asset() + self.assertEqual( + exc.exception.args[0], + "Cannot dismiss an asset earlier than the last depreciation date.\n" + "(Dismiss date: %s, last depreciation date: %s)." + % (today, second_depreciation_date), + ) + sale_invoice.button_cancel() + sale_invoice.button_draft() + sale_invoice.invoice_date = second_depreciation_date + relativedelta(days=10) + sale_invoice.action_post() + self.assertEqual(sale_invoice.state, "posted") + move_lines_to_do = move_lines.filtered( + lambda x: x.account_id == asset.category_id.asset_account_id + ) + wiz_vals["context"]["default_move_line_ids"] = [(6, 0, move_lines_to_do.ids)] + wiz = ( + self.env["wizard.account.move.manage.asset"] + .with_context(wiz_vals["context"]) + .create( + { + "management_type": "dismiss", + "asset_id": asset.id, + "dismiss_date": sale_invoice.invoice_date, + } + ) + ) + asset = wiz.link_asset() + self.assertTrue(asset.sold) + + def test_01_asset_from_purchase_invoice(self): + # create purchase invoice and generate asset + today = fields.Date.today() + purchase_invoice = self.env["account.move"].create( + { + "move_type": "in_invoice", + "invoice_date": today, + "partner_id": self.env.ref("base.partner_demo").id, + "journal_id": self.env["account.journal"] + .search( + [ + ("type", "=", "purchase"), + ], + limit=1, + ) + .id, + "invoice_line_ids": [ + ( + 0, + 0, + { + "account_id": self.asset_category_1.asset_account_id.id, + "quantity": 1, + "price_unit": 7000, + }, + ) + ], + } + ) + purchase_invoice.action_post() + self.assertEqual(purchase_invoice.state, "posted") + wiz_vals = purchase_invoice.open_wizard_manage_asset() + move_line_ids = wiz_vals["context"]["default_move_line_ids"][0][2] + move_lines = self.env["account.move.line"].browse(move_line_ids) + move_lines_to_do = move_lines.filtered( + lambda x: x.account_id == self.asset_category_1.asset_account_id + ) + wiz_vals["context"]["default_move_line_ids"] = [(6, 0, move_lines_to_do.ids)] + wiz = ( + self.env["wizard.account.move.manage.asset"] + .with_context(wiz_vals["context"]) + .create( + { + "management_type": "create", + "category_id": self.asset_category_1.id, + "name": "Test asset", + } + ) + ) + asset = wiz.link_asset() + self.assertEqual(asset.purchase_amount, 7000) + # dismiss asset with sale + # create sale invoice and link to asset + sale_invoice = self.env["account.move"].create( + { + "move_type": "out_invoice", + "partner_id": self.env.ref("base.partner_demo").id, + "journal_id": self.env["account.journal"] + .search( + [ + ("type", "=", "sale"), + ], + limit=1, + ) + .id, + "invoice_line_ids": [ + ( + 0, + 0, + { + "account_id": asset.category_id.asset_account_id.id, + "quantity": 1, + "price_unit": 6000, + }, + ) + ], + } + ) + sale_invoice.action_post() + wiz_vals = sale_invoice.open_wizard_manage_asset() + move_line_ids = wiz_vals["context"]["default_move_line_ids"][0][2] + move_lines = self.env["account.move.line"].browse(move_line_ids) + move_lines_to_do = move_lines.filtered( + lambda x: x.account_id == asset.category_id.asset_account_id + ) + wiz_vals["context"]["default_move_line_ids"] = [(6, 0, move_lines_to_do.ids)] + wiz = ( + self.env["wizard.account.move.manage.asset"] + .with_context(wiz_vals["context"]) + .create( + { + "management_type": "dismiss", + "asset_id": asset.id, + } + ) + ) + wiz.link_asset() + self.assertTrue(asset.sold) + + def test_01_asset_partial_deductible_from_purchase_invoice(self): + # create purchase invoice partial deductible and generate asset + today = fields.Date.today() + purchase_invoice = self.env["account.move"].create( + { + "move_type": "in_invoice", + "invoice_date": today, + "partner_id": self.env.ref("base.partner_demo").id, + "journal_id": self.env["account.journal"] + .search( + [ + ("type", "=", "purchase"), + ], + limit=1, + ) + .id, + "invoice_line_ids": [ + ( + 0, + 0, + { + "account_id": self.asset_category_1.asset_account_id.id, + "quantity": 1, + "price_unit": 7000, + "tax_ids": [(6, 0, [self.tax_22_partial_60.id])], + }, + ) + ], + } + ) + purchase_invoice.action_post() + self.assertEqual(purchase_invoice.state, "posted") + self.assertAlmostEqual( + sum( + line.debit + for line in purchase_invoice.line_ids + if line.account_id == self.asset_category_1.asset_account_id + ), + 7000 + (7000 * 0.22 * 0.4), + ) + wiz_vals = purchase_invoice.open_wizard_manage_asset() + move_line_ids = wiz_vals["context"]["default_move_line_ids"][0][2] + move_lines = self.env["account.move.line"].browse(move_line_ids) + move_lines_to_do = move_lines.filtered( + lambda x: x.account_id == self.asset_category_1.asset_account_id + ) + wiz_vals["context"]["default_move_line_ids"] = [(6, 0, move_lines_to_do.ids)] + wiz = ( + self.env["wizard.account.move.manage.asset"] + .with_context(wiz_vals["context"]) + .create( + { + "management_type": "create", + "category_id": self.asset_category_1.id, + "name": "Test asset", + } + ) + ) + asset = wiz.link_asset() + self.assertAlmostEqual(asset.purchase_amount, 7000 + (7000 * 0.22 * 0.4), 2) diff --git a/assets_management/views/account_invoice.xml b/assets_management/views/account_invoice.xml deleted file mode 100644 index d2c1d6652291..000000000000 --- a/assets_management/views/account_invoice.xml +++ /dev/null @@ -1,150 +0,0 @@ - - - - - invoice.form.inherit - account.invoice - - - - -