From 308c447454334286164e4289f3e600a0d5580ce7 Mon Sep 17 00:00:00 2001 From: Thorsten Vocks Date: Mon, 25 Feb 2019 11:32:40 +0100 Subject: [PATCH 01/78] module with german vat tax declaration report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit we have cloned and adopted the l10n-netherlands tax report module from Onestein B.V. The report is constructed in the same way as official german „Umsatzsteuervoranmeldung“. The values from the report could be easily transmitted via official portal https://www.elster.de/ in order to declare and transfer your monthly (or quarterly) vat taxes. --- l10n_de_tax_statement/README.rst | 73 + l10n_de_tax_statement/__init__.py | 7 + l10n_de_tax_statement/__manifest__.py | 27 + l10n_de_tax_statement/data/paperformat.xml | 24 + l10n_de_tax_statement/i18n/de.po | 1228 +++++++++++++++++ .../i18n/l10n_de_tax_statement.pot | 1228 +++++++++++++++++ l10n_de_tax_statement/models/__init__.py | 10 + l10n_de_tax_statement/models/account_move.py | 26 + .../models/account_move_line.py | 22 + l10n_de_tax_statement/models/account_tax.py | 92 ++ .../models/l10n_de_tax_statement.py | 788 +++++++++++ .../models/l10n_de_tax_statement_config.py | 65 + .../models/l10n_de_tax_statement_line.py | 175 +++ .../report/report_tax_statement.xml | 89 ++ .../security/ir.model.access.csv | 4 + .../security/tax_statement_security_rule.xml | 11 + .../static/src/css/report.css | 49 + l10n_de_tax_statement/templates/assets.xml | 14 + l10n_de_tax_statement/tests/__init__.py | 6 + .../tests/test_l10n_de_tax_statement.py | 544 ++++++++ .../views/l10n_de_tax_statement_view.xml | 140 ++ .../views/report_tax_statement.xml | 21 + l10n_de_tax_statement/wizard/__init__.py | 6 + .../l10n_de_tax_statement_config_wizard.py | 227 +++ .../l10n_de_tax_statement_config_wizard.xml | 264 ++++ 25 files changed, 5140 insertions(+) create mode 100755 l10n_de_tax_statement/README.rst create mode 100755 l10n_de_tax_statement/__init__.py create mode 100755 l10n_de_tax_statement/__manifest__.py create mode 100755 l10n_de_tax_statement/data/paperformat.xml create mode 100644 l10n_de_tax_statement/i18n/de.po create mode 100644 l10n_de_tax_statement/i18n/l10n_de_tax_statement.pot create mode 100755 l10n_de_tax_statement/models/__init__.py create mode 100755 l10n_de_tax_statement/models/account_move.py create mode 100755 l10n_de_tax_statement/models/account_move_line.py create mode 100755 l10n_de_tax_statement/models/account_tax.py create mode 100755 l10n_de_tax_statement/models/l10n_de_tax_statement.py create mode 100755 l10n_de_tax_statement/models/l10n_de_tax_statement_config.py create mode 100755 l10n_de_tax_statement/models/l10n_de_tax_statement_line.py create mode 100755 l10n_de_tax_statement/report/report_tax_statement.xml create mode 100755 l10n_de_tax_statement/security/ir.model.access.csv create mode 100755 l10n_de_tax_statement/security/tax_statement_security_rule.xml create mode 100755 l10n_de_tax_statement/static/src/css/report.css create mode 100755 l10n_de_tax_statement/templates/assets.xml create mode 100755 l10n_de_tax_statement/tests/__init__.py create mode 100755 l10n_de_tax_statement/tests/test_l10n_de_tax_statement.py create mode 100755 l10n_de_tax_statement/views/l10n_de_tax_statement_view.xml create mode 100755 l10n_de_tax_statement/views/report_tax_statement.xml create mode 100755 l10n_de_tax_statement/wizard/__init__.py create mode 100755 l10n_de_tax_statement/wizard/l10n_de_tax_statement_config_wizard.py create mode 100755 l10n_de_tax_statement/wizard/l10n_de_tax_statement_config_wizard.xml diff --git a/l10n_de_tax_statement/README.rst b/l10n_de_tax_statement/README.rst new file mode 100755 index 000000000..4f0b8db3e --- /dev/null +++ b/l10n_de_tax_statement/README.rst @@ -0,0 +1,73 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +========================= +German Tax Statement +========================= + +This module provides the Tax Statement in German format. Based on that report you will get all the values you need to enter in the portal elsteronline.de to declare easily your german VAT's by reading the values from the VAT statement report which is a clone of the official VAT statement formular. The accountant or tax/accounting advisor being responsible to declare the taxes just need to search for the right line in the VAT statement report in order to transmit those value into the elsteronline.de formular. Some of the base values have to be entered as a integer value without exact decimal values. The official elsteronline.de website portal will inform you about the relevant value formattings to guide you through the process of entering, confirming and sending your periodical (i.e. monthly) german VAT tax declarations. + +Installation +============ + +* This module depends from module account_tax_balance available at https://github.com/OCA/account-financial-reporting. + +Configuration +============= + +This module depends on the tax tags (eg.: 81, 86, 89, 91, 61...) as prescribed by the german tax laws. + +If the default Odoo German chart of accounts is installed (module l10n_de) then these tags are automatically present in the database. If this is the case, go to menu: Invoicing -> Configuration -> Accounting -> German Tax Tags, and check that the tags are correctly set; click Apply to confirm. + +If a non-standard chart of accounts is installed, you have to manually create the tax tags and properly set them into the tax definition. After that, go to go to menu: Invoicing -> Configuration -> Accounting -> German Tax Tags, and manually set the tags in the configuration form; click Apply to confirm, in order to use that form to be populated by the relevant invoice taxes from the choosen tax period. + + +Usage +===== + +#. Verify that you have enough permits. You need to belong at least to the Accountant group. +#. Go to the menu: Invoicing -> Reports > Taxes Balance > DE Tax Statement +#. Create a statement, provide a name and specify start date and end date +#. Press the Update button to (re-) calculate the report: the report lines will be displayed in the tab Statement +#. Eventually you have to manually enter the Tax amounts of lines in Edit mode, click on the amount of the line to be able to change the values (f.e. to remove decimal values) . +#. Press the Post button to set the status of the statement to Posted; the statements set to this state cannot be modified anymore +#. If you need to recalculate or modify or delete a statement already set to Posted status you need first to set it back to Draft status: press the button Reset to Draft +#. If you need to print the report in PDF, open a statement form and click: Print -> DE Tax Statement +#. On the second tab of the statement you have the possibility to add undeclared invoices from the past to the VAT statement. By pressing the "Update" button you will add the in the statement's report. + + + +Known issues / Roadmap +====================== + +* Exporting formats not yet available +* If you have used the V10 version of that module, it might need some adoptions as the tax lines of the statement report was revised for the V11 module. +* If the usual german tax rates would become more expensive or even cheaper as 19% and 7% the module would need some refactoring, in order to reflect those tax adoptions in order to calculate proper values. Eventually we can improve the module by fetching the tax values from some taxes instead of calculting these values in order to prepare the tax fields of this report. However to do that we need to assign for each tax in the german account plan (modules l10n_de_skr03 and l10n_de_skr04) a tax tag for the base amount as well also the tax tag for the tax value, which is currently not the case. Currently we have assigned to many taxes in the mentioned localisation modules just one tax tag. Nevertheless the tax calculation in this module should not differ from the values, if we would fetch them by tax tags for the tax amount. +* Maybe we could add more german specific tax cases inside the "test" directory. + + + +Credits +======= + +Contributors +------------ +* Thorsten Vocks +* Andrea Stirpe +* Antonio Esposito + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is not yet maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org or the corresponding github repository. diff --git a/l10n_de_tax_statement/__init__.py b/l10n_de_tax_statement/__init__.py new file mode 100755 index 000000000..9aca6bdb5 --- /dev/null +++ b/l10n_de_tax_statement/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 Onestein () +# Copyright 2019 BIG-Consulting GmbH() +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models +from . import wizard diff --git a/l10n_de_tax_statement/__manifest__.py b/l10n_de_tax_statement/__manifest__.py new file mode 100755 index 000000000..ec3759d61 --- /dev/null +++ b/l10n_de_tax_statement/__manifest__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 Onestein () +# Copyright 2019 BIG-Consulting GmbH() +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + 'name': 'German VAT Statement', + 'version': '11.0.1.1.0', + 'category': 'Localization', + 'license': 'AGPL-3', + 'author': 'OpenBIG.org, Onestein, Odoo Community Association (OCA)', + 'website': 'https://github.com/openbig/l10n-germany', + 'depends': [ + 'account_tax_balance', + ], + 'data': [ + 'security/ir.model.access.csv', + 'security/tax_statement_security_rule.xml', + 'data/paperformat.xml', + 'templates/assets.xml', + 'views/l10n_de_tax_statement_view.xml', + 'views/report_tax_statement.xml', + 'report/report_tax_statement.xml', + 'wizard/l10n_de_tax_statement_config_wizard.xml', + ], + 'installable': True, +} diff --git a/l10n_de_tax_statement/data/paperformat.xml b/l10n_de_tax_statement/data/paperformat.xml new file mode 100755 index 000000000..9cc7fb448 --- /dev/null +++ b/l10n_de_tax_statement/data/paperformat.xml @@ -0,0 +1,24 @@ + + + + + + + German Tax Statement qweb paperformat + + A4 + 0 + 0 + Portrait + 12 + 8 + 5 + 5 + + 10 + 110 + + + diff --git a/l10n_de_tax_statement/i18n/de.po b/l10n_de_tax_statement/i18n/de.po new file mode 100644 index 000000000..15cc4b911 --- /dev/null +++ b/l10n_de_tax_statement/i18n/de.po @@ -0,0 +1,1228 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_de_tax_statement +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-11 18:56+0000\n" +"PO-Revision-Date: 2019-02-11 18:56+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "&nbsp; &nbsp;" +msgstr "&nbsp; &nbsp;" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "&nbsp; &nbsp; 68 - Verbleibende Umsatzsteuer-Vorauszahlung (83)" +msgstr "&nbsp; &nbsp; 68 - Verbleibende Umsatzsteuer-Vorauszahlung (83)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:214 +#, python-format +msgid "... an Abnehmer mit USt-ID (41)" +msgstr "... an Abnehmer mit USt-ID (41)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:217 +#, python-format +msgid "... neue Fahrzeuge an Abnehmer ohne UST-ID (44)" +msgstr "... neue Fahrzeuge an Abnehmer ohne UST-ID (44)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:220 +#, python-format +msgid "... neuer Fahrzeuge außerh. eines Unternehmens § 2a UStG (49)" +msgstr "... neuer Fahrzeuge außerh. eines Unternehmens § 2a UStG (49)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:270 +#, python-format +msgid "... neuer Fahrzeuge gem. § 1b Abs. 2 u. 3 UStG von Lieferern o. Ust-ID z. allg. Steuersatz (94 / 96)" +msgstr "... neuer Fahrzeuge gem. § 1b Abs. 2 u. 3 UStG von Lieferern o. Ust-ID z. allg. Steuersatz (94 / 96)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:242 +#, python-format +msgid "... zu anderen Steuersätzen (35 / 36)" +msgstr "... zu anderen Steuersätzen (35 / 36)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:267 +#, python-format +msgid "... zu anderen Steuersätzen (95 / 98)" +msgstr "... zu anderen Steuersätzen (95 / 98)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:264 +#, python-format +msgid "... zum Steuersatz v. 7% (93)" +msgstr "... zum Steuersatz v. 7% (93)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:236 +#, python-format +msgid "... zum Steuersatz von 19 % (81)" +msgstr "... zum Steuersatz von 19 % (81)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:239 +#, python-format +msgid "... zum Steuersatz von 7% (86)" +msgstr "... zum Steuersatz von 7% (86)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:331 +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +#, python-format +msgid "Abziehbare Vorsteuerbeträge" +msgstr "Abziehbare Vorsteuerbeträge" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:384 +#, python-format +msgid "Abzug der festges. Sondervorauszahl. f. Dauerfristverlängerung, nur auszuf. i. d. letzten Voranmeldung d. Besteuerungszeitr., i.d.R. Dez. (39)" +msgstr "Abzug der festges. Sondervorauszahl. f. Dauerfristverlängerung, nur auszuf. i. d. letzten Voranmeldung d. Besteuerungszeitr., i.d.R. Dez. (39)" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_account_move +msgid "Account Entry" +msgstr "Buchungssatz" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Add Invoice" +msgstr "Rechnung hinzufügen" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Add/Remove the Undeclared Invoices listed below. Afterwards press the Update button in order to recompute the statement lines!" +msgstr "In der folgenden Liste können Sie noch nicht in der UstVA erklärte Rechnungen hinzufügen bzw. entfernen. Aktualiseren Sie diese UstVA Auswertung durch Klick auf den Button "Aktualisieren"! " + +#. module: l10n_de_tax_statement +#: selection:l10n.de.tax.statement,target_move:0 +msgid "All Entries" +msgstr "Alle Buchungssätze" + +#. module: l10n_de_tax_statement +#: selection:l10n.de.tax.statement,target_move:0 +msgid "All Posted Entries" +msgstr "Nur gebuchte Buchungssätze" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:306 +#, python-format +msgid "Andere Leistung eines im Ausland ansässigen Untern. gem. § 13b Abs. 2 Nr. 1 u. 5 Buchst. a UStG (52 / 53)" +msgstr "Andere Leistung eines im Ausland ansässigen Untern. gem. § 13b Abs. 2 Nr. 1 u. 5 Buchst. a UStG (52 / 53)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:320 +#, python-format +msgid "Andere Leistungen gem. § 13b Abs. 2 Nr. 4, 5 Bst. b, Nr. 6 b. 9 u. 11 UStG (84 / 85)" +msgstr "Andere Leistungen gem. § 13b Abs. 2 Nr. 4, 5 Bst. b, Nr. 6 b. 9 u. 11 UStG (84 / 85)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:367 +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +#, python-format +msgid "Andere Steuerbeträge" +msgstr "Andere Steuerbeträge" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:204 +#, python-format +msgid "Anmeldung der Umsatzsteuer Vorauszahlung" +msgstr "Anmeldung der Umsatzsteuer Vorauszahlung" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Apply" +msgstr "Bestätigen" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_base +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "Base" +msgstr "Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Bemessungsgrundlage (ohne USt.)" +msgstr "Bemessungsgrundlage (ohne USt.)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:356 +#, python-format +msgid "Berichtigung des Vorsteuerabzugs g. § 15 a UStG (64)" +msgstr "Berichtigung des Vorsteuerabzugs g. § 15 a UStG (64)" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_code +msgid "Code" +msgstr "Zeile" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_company_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_company_id +msgid "Company" +msgstr "Unternehmen" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_create_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_create_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_create_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_create_uid +msgid "Created by" +msgstr "Erstellt von" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_create_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_create_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_create_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_create_date +msgid "Created on" +msgstr "Angelegt am" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_currency_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_currency_id +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Currency" +msgstr "Währung" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_is_invoice_basis +msgid "DE Tax Invoice Basis" +msgstr "Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_date_posted +msgid "Date Posted" +msgstr "Versendet am" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_date_update +msgid "Date Update" +msgstr "Aktualisiert am" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Date posted" +msgstr "Versendet am" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_date_range_id +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Date range" +msgstr "Datumsbereich" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Date update" +msgstr "Aktualisiert am" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_display_name +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_display_name +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_display_name +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_display_name +msgid "Display Name" +msgstr "Anzeigename" + +#. module: l10n_de_tax_statement +#: selection:l10n.de.tax.statement,state:0 +msgid "Draft" +msgstr "Entwurf" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_move_line_ids +msgid "Entry Lines" +msgstr "Buchungszeilen" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:344 +#, python-format +msgid "Entst. Einfuhrumsatzst. g. § 15 Abs. 1 S. 1 Nr. 2 UStG (62)" +msgstr "Entst. Einfuhrumsatzst. g. § 15 Abs. 1 S. 1 Nr. 2 UStG (62)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:274 +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +#, python-format +msgid "Ergänzende Angaben zu Umsätzen" +msgstr "Ergänzende Angaben zu Umsätzen" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:257 +#, python-format +msgid "Erwerbe nach §§ 4b u. 25c UStG (91)" +msgstr "Erwerbe nach §§ 4b u. 25c UStG (91)" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Finalize" +msgstr "Abschließen" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_format_base +msgid "Format Base" +msgstr "Steuermessbetrag" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_format_tax +msgid "Format Tax" +msgstr "Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_from_date +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "From Date" +msgstr "Datum ab" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "German VAT Declaration" +msgstr "Deutsche Umsatzsteuer-Voranmeldung" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_l10n_de_tax_statement_config_wizard +msgid "German Vat Statement Configuration Wizard" +msgstr "Deutsche Umsatzsteuer-Voranmeldung Konfigurationsassistent" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_l10n_de_tax_statement_line +msgid "German Vat Statement Line" +msgstr "Deutsche UstVA Einzelpositionsaufstellung" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_id +msgid "ID" +msgstr "ID" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "If you confirm, it will be not possible to modify this Statement or reset it back to draft anymore. Do you confirm?" +msgstr "Nach endgültiger Bestätigung ist es nicht mehr möglich diese UstVA Auswertung zurückzusetzen. Möchten Sie bestätigen und fortfahren ?" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:374 +#, python-format +msgid "In Rechnungen unrichtig oder unberechtigt ausgewiesene Steuerbeträge gem. § 14c UstG) sowie Steuerbetr. d. n. § 6a Abs. 4 S. 2, § 17 Abs. 1 S. 6, § 25 b Abs. 2 UStG o. v. e. Auslagerer o. Lagerh. n. § 13a Abs. 1 Nr. 6 UStG geschuldet werden (69)" +msgstr "In Rechnungen unrichtig oder unberechtigt ausgewiesene Steuerbeträge gem. § 14c UstG) sowie Steuerbetr. d. n. § 6a Abs. 4 S. 2, § 17 Abs. 1 S. 6, § 25 b Abs. 2 UStG o. v. e. Auslagerer o. Lagerh. n. § 13a Abs. 1 Nr. 6 UStG geschuldet werden (69)" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Include Undeclared Invoices" +msgstr "Ergänze bislang noch nicht erklärte, bei der Umsatzsteuervoranmeldung anzumeldende Rechnungen." + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_account_move_l10n_de_tax_statement_include +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_account_move_line_l10n_de_tax_statement_include +msgid "Include in VAT Statement" +msgstr "Zur UstVA hinzufügen" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:253 +#, python-format +msgid "Innergemeinschaftliche Erwerbe Steuerfreie innergemeinschaftliche Erwerbe" +msgstr "Innergemeinschaftliche Erwerbe Steuerfreie innergemeinschaftliche Erwerbe" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_is_group +msgid "Is Group" +msgstr "Ist Überschrift" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_is_readonly +msgid "Is Readonly" +msgstr "Ist Nur-Leseberechtigt" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_is_total +msgid "Is Total" +msgstr "Ist Summe" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_account_move_line +msgid "Journal Item" +msgstr "Buchungszeile" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement___last_update +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config___last_update +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard___last_update +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line___last_update +msgid "Last Modified on" +msgstr "Geändert am" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_write_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_write_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_write_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_write_uid +msgid "Last Updated by" +msgstr "Aktualisiert von" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_write_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_write_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_write_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_write_date +msgid "Last Updated on" +msgstr "Aktualisiert am" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:298 +#, python-format +msgid "Leistungsempfänger als Steuerschuldner (§ 13b UStG)" +msgstr "Leistungsempfänger als Steuerschuldner (§13b UStG)" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Leistungsempfänger als Steuerschuldner (§13b UStG)" +msgstr "Leistungsempfänger als Steuerschuldner (§13b UStG)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:207 +#, python-format +msgid "Lief. u. sonst. Leistg. einschl. unentg. Wertabg." +msgstr "Lief. u. sonst. Leistg. einschl. unentg. Wertabg." + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:277 +#, python-format +msgid "Lieferungen des ersten Abnehmers bei innergem. Dreiecksgeschäften gem. § 25b Abs. 2 UStG (42)" +msgstr "Lieferungen des ersten Abnehmers bei innergem. Dreiecksgeschäften gem. § 25b Abs. 2 UStG (42)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:245 +#, python-format +msgid "Lieferungen land- u. forstw. Betriebe nach § 24 UStG an Abnehmer mit Ust-ID (77)" +msgstr "Lieferungen land- u. forstw. Betriebe nach § 24 UStG an Abnehmer mit Ust-ID (77)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:310 +#, python-format +msgid "Lieferungen sicherungsübereign. Gegenst. u. Umsätze d. u. d. GrEStG fallen g. § 13b Abs. 2 Nr. 2 u. 3 (73 / 74)" +msgstr "Lieferungen sicherungsübereign. Gegenst. u. Umsätze d. u. d. GrEStG fallen g. § 13b Abs. 2 Nr. 2 u. 3 (73 / 74)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:315 +#, python-format +msgid "Lieferungen v. Mobilfunkger., Tablet-Comp., Spielekons. u. int. Schaltkr. g. §13b A. 2 Nr. 10 UStG (78 / 79)" +msgstr "Lieferungen v. Mobilfunkger., Tablet-Comp., Spielekons. u. int. Schaltkr. g. §13b A. 2 Nr. 10 UStG (78 / 79)" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_ids +msgid "Lines" +msgstr "Positionen" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_name +msgid "Name" +msgstr "Name" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:290 +#, python-format +msgid "Nicht steuerb. sonst. Leist. gem. § 18b S. 1 Nr. 2 (21)" +msgstr "Nicht steuerb. sonst. Leist. gem. § 18b S. 1 Nr. 2 (21)" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Past Undeclared Invoices" +msgstr "Unangemeldete Rechnungen aus der Vergangenheit" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Post" +msgstr "Versenden" + +#. module: l10n_de_tax_statement +#: selection:l10n.de.tax.statement,state:0 +msgid "Posted" +msgstr "Versendet" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Press the Update button in order to recompute the statement lines!" +msgstr "Klicken Sie auf Aktualisieren, um die UstVA Auswertung neu zu berechnen!" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_account_move_line_l10n_de_tax_statement_id +msgid "Related Move Statement" +msgstr "Betroffene Buchung" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Remove Invoice" +msgstr "Rechnung entfernen" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Reset to Draft" +msgstr "Zurücksetzen" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_account_move_l10n_de_tax_statement_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_statement_id +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Statement" +msgstr "Ust.-Voranmeldung" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_state +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_state +msgid "Status" +msgstr "Status" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuer" +msgstr "Steuer" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:370 +#, python-format +msgid "Steuer inf. Wechsels d. Besteuerungsf. sow. Nachst. a. verst. Anzahlungen u.a. wg. Steuersatzänd. (65)" +msgstr "Steuer inf. Wechsels d. Besteuerungsf. sow. Nachst. a. verst. Anzahlungen u.a. wg. Steuersatzänd. (65)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:210 +#, python-format +msgid "Steuerfr. Umsätze mit Vorsteuerabz. innerg. Lieferungen (§4 Nr. 1b) ..." +msgstr "Steuerfr. Umsätze mit Vorsteuerabz. innerg. Lieferungen (§4 Nr. 1b) ..." + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuerfreie Umsätze mit Vorsteuerabzug" +msgstr "Steuerfreie Umsätze mit Vorsteuerabzug" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:228 +#, python-format +msgid "Steuerfreie Umsätze ohne Vorsteuerabzug Umsätze n. § 4 Nr. 8 bis 28 UStG (48)" +msgstr "Steuerfreie Umsätze ohne Vorsteuerabzug Umsätze n. § 4 Nr. 8 bis 28 UStG (48)" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuerfreie innergemeinschaftliche Erwerbe" +msgstr "Steuerfreie innergemeinschaftliche Erwerbe" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:281 +#, python-format +msgid "Steuerpfl. Ums. f.d.d. Leistungsempf. die Steuer schuldet g. § 13b A. 5 S. 1 i.V.m. Abs. 2 Nr. 10 UStG (68)" +msgstr "Steuerpfl. Ums. f.d.d. Leistungsempf. die Steuer schuldet g. § 13b A. 5 S. 1 i.V.m. Abs. 2 Nr. 10 UStG (68)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:302 +#, python-format +msgid "Steuerpfl. sonst. Leist. e. i. übr. Gemeinschaftsgeb. ans. Untern. gem. § 13b Abs. 1 UStG (46 / 47)" +msgstr "Steuerpfl. sonst. Leist. e. i. übr. Gemeinschaftsgeb. ans. Untern. gem. § 13b Abs. 1 UStG (46 / 47)" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuerpflichtige Umsätze (Lief. u. Leistg. ein. unentg. Wertabg.)" +msgstr "Steuerpflichtige Umsätze (Lief. u. sonst. Leistg. einschl. unentg. Wertabg.)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:232 +#, python-format +msgid "Steuerpflichtige Umsätze (Lief. u. sonst. Leistg. einschl. unentg. Wertabg.)" +msgstr "Steuerpflichtige Umsätze (Lief. u. sonst. Leistg. einschl. unentg. Wertabg.)" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuerpflichtige innergemeinschaftliche Erwerbe" +msgstr "Steuerpflichtige innergemeinschaftliche Erwerbe" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:260 +#, python-format +msgid "Steuerpflichtige innergemeinschaftliche Erwerbe ... zum Steuersatz v. 19 % (89)" +msgstr "Steuerpflichtige innergemeinschaftliche Erwerbe ... zum Steuersatz v. 19 % (89)" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_21_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_21_base +msgid "Tag 21 Base" +msgstr "Kennzahl 21 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_35_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_35_base +msgid "Tag 35 Base" +msgstr "Kennzahl 35 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_36_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_36_tax +msgid "Tag 36 Tax" +msgstr "Kennzahl 36 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_41_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_41_base +msgid "Tag 41 Base" +msgstr "Kennzahl 41 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_42_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_42_base +msgid "Tag 42 Base" +msgstr "Kennzahl 42 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_43_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_43_base +msgid "Tag 43 Base" +msgstr "Kennzahl 43 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_44_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_44_base +msgid "Tag 44 Base" +msgstr "Kennzahl 44 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_45_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_45_base +msgid "Tag 45 Base" +msgstr "Kennzahl 45 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_46_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_46_base +msgid "Tag 46 Base" +msgstr "Kennzahl 46 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_47_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_47_tax +msgid "Tag 47 Tax" +msgstr "Kennzahl 47 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_48_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_48_base +msgid "Tag 48 Base" +msgstr "Kennzahl 48 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_49_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_49_base +msgid "Tag 49 Base" +msgstr "Kennzahl 49 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_52_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_52_base +msgid "Tag 52 Base" +msgstr "Kennzahl 52 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_53_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_53_tax +msgid "Tag 53 Tax" +msgstr "Kennzahl 53 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_59_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_59_tax +msgid "Tag 59 Tax" +msgstr "Kennzahl 59 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_60_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_60_base +msgid "Tag 60 Base" +msgstr "Kennzahl 60 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_61_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_61_tax +msgid "Tag 61 Tax" +msgstr "Kennzahl 61 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_62_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_62_tax +msgid "Tag 62 Tax" +msgstr "Kennzahl 62 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_63_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_63_tax +msgid "Tag 63 Tax" +msgstr "Kennzahl 63 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_64_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_64_tax +msgid "Tag 64 Tax" +msgstr "Kennzahl 64 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_65_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_65_tax +msgid "Tag 65 Tax" +msgstr "Kennzahl 65 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_66_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_66_tax +msgid "Tag 66 Tax" +msgstr "Kennzahl 66 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_67_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_67_tax +msgid "Tag 67 Tax" +msgstr "Kennzahl 67 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_68_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_68_base +msgid "Tag 68 Base" +msgstr "Kennzahl 68 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_69_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_69_tax +msgid "Tag 69 Tax" +msgstr "Kennzahl 69 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_73_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_73_base +msgid "Tag 73 Base" +msgstr "Kennzahl 73 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_74_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_74_tax +msgid "Tag 74 Tax" +msgstr "Kennzahl 74 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_76_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_76_base +msgid "Tag 76 Base" +msgstr "Kennzahl 76 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_77_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_77_base +msgid "Tag 77 Base" +msgstr "Kennzahl 77 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_78_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_78_base +msgid "Tag 78 Base" +msgstr "Kennzahl 78 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_79_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_79_tax +msgid "Tag 79 Tax" +msgstr "Kennzahl 79 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_80_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_80_tax +msgid "Tag 80 Tax" +msgstr "Kennzahl 80 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_81_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_81_base +msgid "Tag 81 Base" +msgstr "Kennzahl 81 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_81_tax +msgid "Tag 81 Tax" +msgstr "Kennzahl 81 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_83_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_83_tax +msgid "Tag 83 Tax" +msgstr "Kennzahl 83 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_84_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_84_base +msgid "Tag 84 Base" +msgstr "Kennzahl 84 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_85_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_85_tax +msgid "Tag 85 Tax" +msgstr "Kennzahl 85 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_86_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_86_base +msgid "Tag 86 Base" +msgstr "Kennzahl 86 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_86_tax +msgid "Tag 86 Tax" +msgstr "Kennzahl 86 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_89_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_89_base +msgid "Tag 89 Base" +msgstr "Kennzahl 89 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_89_tax +msgid "Tag 89 Tax" +msgstr "Kennzahl 89 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_91_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_91_base +msgid "Tag 91 Base" +msgstr "Kennzahl 91 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_93_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_93_base +msgid "Tag 93 Base" +msgstr "Kennzahl 93 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_93_tax +msgid "Tag 93 Tax" +msgstr "Kennzahl 93 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_94_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_94_base +msgid "Tag 94 Base" +msgstr "Kennzahl 94 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_95_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_95_base +msgid "Tag 95 Base" +msgstr "Kennzahl 95 Bemessungsgrundlage" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_96_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_96_tax +msgid "Tag 96 Tax" +msgstr "Kennzahl 96 Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_98_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_98_tax +msgid "Tag 98 Tax" +msgstr "Kennzahl 98 Steuer" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:489 +#, python-format +msgid "Tags mapping not configured for this Company! Check the DE Tags Configuration." +msgstr "Die Tag Zuordnung fehlt! Prüfen Sie die Steuertags (Stichwörter) Ihres deutschen Kontenplans." + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_target_move +msgid "Target Moves" +msgstr "Filter Buchungen" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Target moves" +msgstr "Filter Buchungen" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_account_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_tax +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "Tax" +msgstr "Steuer" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_name +msgid "Tax Statement" +msgstr "Umsatzsteuer-Voranmeldung" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Tax Statement lines" +msgstr "Steuerpositionen" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_to_date +msgid "To Date" +msgstr "Datum bis" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:328 +#, python-format +msgid "Umsatzsteuer" +msgstr "Umsatzsteuer" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Umsatzsteuer Voranmeldung - Steuerkennzahl Zuordnung" +msgstr "Umsatzsteuer Voranmeldung - Steuerkennzahl Zuordnung" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:381 +#, python-format +msgid "Umsatzsteuer-Vorauszahlung" +msgstr "Umsatzsteuer-Vorauszahlung" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:249 +#, python-format +msgid "Umsätze nach § 24 UStG, z.B. Sägewerke, Getränke u. alk. Flüssigk. (76 / 80)" +msgstr "Umsätze nach § 24 UStG, z.B. Sägewerke, Getränke u. alk. Flüssigk. (76 / 80)" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_unreported_move_ids +msgid "Unreported Journal Entries" +msgstr "Noch nicht angemeldete Buchungen" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_unreported_move_from_date +msgid "Unreported Move From Date" +msgstr "Unangemeldete Rechnungen ab" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Update" +msgstr "Aktualisieren" + +#. module: l10n_de_tax_statement +#: model:ir.actions.act_window,name:l10n_de_tax_statement.action_account_tax_statement_de +#: model:ir.actions.act_window,name:l10n_de_tax_statement.action_account_tax_statement_de_config +#: model:ir.ui.menu,name:l10n_de_tax_statement.menu_account_tax_statement_de +#: model:ir.ui.menu,name:l10n_de_tax_statement.menu_account_tax_statement_de_config +msgid "Ust-Voranmeldung" +msgstr "Ust-Voranmeldung" + +#. module: l10n_de_tax_statement +#: model:ir.actions.report,name:l10n_de_tax_statement.action_report_tax_statement +msgid "UstVA-Report" +msgstr "Ust-Voranmeldung" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,help:l10n_de_tax_statement.field_l10n_de_tax_statement_line_currency_id +msgid "Utility field to express amount currency" +msgstr "Hilfsfeld, welches die Betragswährung ausweist" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_format_tax_total +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_tax_total +msgid "Verbl. Ust.-Vorauszahlung (66-67)" +msgstr "Verbl. Ust.-Vorauszahlung (66-67)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:364 +#, python-format +msgid "Verbleibender Betrag" +msgstr "Verbleibender Betrag" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "View base lines" +msgstr "Bemessungsgrundlagen anzeigen" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "View tax lines" +msgstr "Steuerbeträge anzeigen" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:359 +#, python-format +msgid "Vorsteuerabzug f. innergem. Lief. neuer Fahrzeuge außerh. e. Untern. g. §2a UStG sow. v. Kleinunt. i.S. d. § 19 Abs. 1 i.V.m. § 15a Abs. 4a UStG (59)" +msgstr "Vorsteuerabzug f. innergem. Lief. neuer Fahrzeuge außerh. e. Untern. g. §2a UStG sow. v. Kleinunt. i.S. d. § 19 Abs. 1 i.V.m. § 15a Abs. 4a UStG (59)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:340 +#, python-format +msgid "Vorsteuerbeträge a. d. innerg. Erwerb v. Gegenständen gem. § 15 Abs. 1 Satz 1 Nr. 3 UStG (61)" +msgstr "Vorsteuerbeträge a. d. innerg. Erwerb v. Gegenständen gem. § 15 Abs. 1 Satz 1 Nr. 3 UStG (61)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:348 +#, python-format +msgid "Vorsteuerbeträge aus Leistungen i. S. des § 13b UStGi.V.m § 15 Abs. 1 Satz 1 Nr. 4 UStG (67)" +msgstr "Vorsteuerbeträge aus Leistungen i. S. des § 13b UStGi.V.m § 15 Abs. 1 Satz 1 Nr. 4 UStG (67)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:334 +#, python-format +msgid "Vorsteuerbeträge aus Rechn. v.a. Unternehmen g. § 15 Abs. S. 1 Nr. 1 UStG a. Leistungen i.S.d. § 13a Abs. 1 Nr. 6 UStG u. § 15 Abs. 1 S. 1 Nr. 5 UStG u. a. innerg. Dreiecksgesch. g. § 25b A. 5 UStG (66)" +msgstr "Vorsteuerbeträge aus Rechn. v.a. Unternehmen g. § 15 Abs. S. 1 Nr. 1 UStG a. Leistungen i.S.d. § 13a Abs. 1 Nr. 6 UStG u. § 15 Abs. 1 S. 1 Nr. 5 UStG u. a. innerg. Dreiecksgesch. g. § 25b A. 5 UStG (66)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:352 +#, python-format +msgid "Vorsteuerbeträge d. n. allg. Durchschnittssätzen berechnet sind gem. §§ 23 und 23a UStG (63)" +msgstr "Vorsteuerbeträge d. n. allg. Durchschnittssätzen berechnet sind gem. §§ 23 und 23a UStG (63)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:224 +#, python-format +msgid "Weitere steuerfr. Umsätze mit Vorsteuerabzug, z.B. Ausfuhrlief., Umsätze n. § 4 Nr. 2-7 UStG (43)" +msgstr "Weitere steuerfr. Umsätze mit Vorsteuerabzug, z.B. Ausfuhrlief., Umsätze n. § 4 Nr. 2-7 UStG (43)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:706 +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:765 +#, python-format +msgid "You cannot delete a posted statement! Reset the statement to draft first." +msgstr "Eine versendete Umsatzsteuer-Voranmeldung kann nicht gelöscht werden ! Zunächst sollten Sie auf Entwurf zurücksetzen." + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:710 +#, python-format +msgid "You cannot delete a statement set as final!" +msgstr "Eine endgültig bestätige Ust.-Voranmeldung Auswertung kann nicht mehr gelöscht werden!" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement_line.py:104 +#, python-format +msgid "You cannot delete lines of a posted statement! Reset the statement to draft first." +msgstr "Die Positionen einer gesendeten Steueranmeldung können nicht gelöscht werden! Die Voranmeldung sollte zuerst auf Entwurf zurückgesetzt werden." + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:545 +#, python-format +msgid "You cannot modify a posted statement!" +msgstr "Eine gesendete Umsatzsteuervoranmeldung kann nicht mehr modifiziert werden!" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:697 +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:756 +#, python-format +msgid "You cannot modify a posted statement! Reset the statement to draft first." +msgstr "Eine gesendete Umsatzsteuervoranmeldung kann nicht mehr modifiziert werden! Zuerst sollten Sie die Ust.-Voranmeldung zurücksetzen." + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:691 +#, python-format +msgid "You cannot modify a statement set as final!" +msgstr "Eine gesendete Umsatzsteuervoranmeldung kann nicht mehr abgeändert werden!" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:629 +#, python-format +msgid "You cannot post a statement if all the previous statements are not yet posted! Please Post all the other statements first." +msgstr "Eine Umsatzsteuervoranmeldung kann nicht gesendet werden, wenn vorherige Erklärungen noch nicht gesendet wurden. Bitte versetzen Sie alle vorherigen UstVA Auswertungen in den Status "gesendet"!" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 20" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 21" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 22" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 23" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 24" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 26" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 27" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 28" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 29" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 30" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 32" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 33" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 34" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 35" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 36" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 38" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 39" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 40" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 41" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 42" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 48" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 49" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 50" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 51" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 52" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 55" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 56" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 57" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 58" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 59" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 60" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 61" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 64" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 65" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_l10n_de_tax_statement +msgid "l10n.de.tax.statement" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_l10n_de_tax_statement_config +msgid "l10n.de.tax.statement.config" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:294 +#, python-format +msgid "Übrige n. steuerb. Umsätze, Leistungsort ist nicht im Inland (45)" +msgstr "Übrige n. steuerb. Umsätze, Leistungsort ist nicht im Inland (45)" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:286 +#, python-format +msgid "Übrige steuerpfl. Umsätze f.d.d. Lstg.empf. d. Steuer n. § 13b Abs. 5 UStG schuldet (60)" +msgstr "Übrige steuerpfl. Umsätze f.d.d. Lstg.empf. d. Steuer n. § 13b Abs. 5 UStG schuldet (60)" + diff --git a/l10n_de_tax_statement/i18n/l10n_de_tax_statement.pot b/l10n_de_tax_statement/i18n/l10n_de_tax_statement.pot new file mode 100644 index 000000000..04cbe137f --- /dev/null +++ b/l10n_de_tax_statement/i18n/l10n_de_tax_statement.pot @@ -0,0 +1,1228 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * l10n_de_tax_statement +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-11 18:56+0000\n" +"PO-Revision-Date: 2019-02-11 18:56+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "&nbsp; &nbsp;" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "&nbsp; &nbsp; 68 - Verbleibende Umsatzsteuer-Vorauszahlung (83)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:214 +#, python-format +msgid "... an Abnehmer mit USt-ID (41)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:217 +#, python-format +msgid "... neue Fahrzeuge an Abnehmer ohne UST-ID (44)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:220 +#, python-format +msgid "... neuer Fahrzeuge außerh. eines Unternehmens § 2a UStG (49)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:270 +#, python-format +msgid "... neuer Fahrzeuge gem. § 1b Abs. 2 u. 3 UStG von Lieferern o. Ust-ID z. allg. Steuersatz (94 / 96)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:242 +#, python-format +msgid "... zu anderen Steuersätzen (35 / 36)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:267 +#, python-format +msgid "... zu anderen Steuersätzen (95 / 98)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:264 +#, python-format +msgid "... zum Steuersatz v. 7% (93)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:236 +#, python-format +msgid "... zum Steuersatz von 19 % (81)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:239 +#, python-format +msgid "... zum Steuersatz von 7% (86)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:331 +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +#, python-format +msgid "Abziehbare Vorsteuerbeträge" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:384 +#, python-format +msgid "Abzug der festges. Sondervorauszahl. f. Dauerfristverlängerung, nur auszuf. i. d. letzten Voranmeldung d. Besteuerungszeitr., i.d.R. Dez. (39)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_account_move +msgid "Account Entry" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Add Invoice" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Add/Remove the Undeclared Invoices listed below. Afterwards press the Update button in order to recompute the statement lines!" +msgstr "" + +#. module: l10n_de_tax_statement +#: selection:l10n.de.tax.statement,target_move:0 +msgid "All Entries" +msgstr "" + +#. module: l10n_de_tax_statement +#: selection:l10n.de.tax.statement,target_move:0 +msgid "All Posted Entries" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:306 +#, python-format +msgid "Andere Leistung eines im Ausland ansässigen Untern. gem. § 13b Abs. 2 Nr. 1 u. 5 Buchst. a UStG (52 / 53)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:320 +#, python-format +msgid "Andere Leistungen gem. § 13b Abs. 2 Nr. 4, 5 Bst. b, Nr. 6 b. 9 u. 11 UStG (84 / 85)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:367 +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +#, python-format +msgid "Andere Steuerbeträge" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:204 +#, python-format +msgid "Anmeldung der Umsatzsteuer Vorauszahlung" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Apply" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_base +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Bemessungsgrundlage (ohne USt.)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:356 +#, python-format +msgid "Berichtigung des Vorsteuerabzugs g. § 15 a UStG (64)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_code +msgid "Code" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_company_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_company_id +msgid "Company" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_create_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_create_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_create_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_create_uid +msgid "Created by" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_create_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_create_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_create_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_create_date +msgid "Created on" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_currency_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_currency_id +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Currency" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_is_invoice_basis +msgid "DE Tax Invoice Basis" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_date_posted +msgid "Date Posted" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_date_update +msgid "Date Update" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Date posted" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_date_range_id +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Date range" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Date update" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_display_name +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_display_name +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_display_name +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_display_name +msgid "Display Name" +msgstr "" + +#. module: l10n_de_tax_statement +#: selection:l10n.de.tax.statement,state:0 +msgid "Draft" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_move_line_ids +msgid "Entry Lines" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:344 +#, python-format +msgid "Entst. Einfuhrumsatzst. g. § 15 Abs. 1 S. 1 Nr. 2 UStG (62)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:274 +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +#, python-format +msgid "Ergänzende Angaben zu Umsätzen" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:257 +#, python-format +msgid "Erwerbe nach §§ 4b u. 25c UStG (91)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Finalize" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_format_base +msgid "Format Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_format_tax +msgid "Format Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_from_date +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "From Date" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "German VAT Declaration" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_l10n_de_tax_statement_config_wizard +msgid "German Vat Statement Configuration Wizard" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_l10n_de_tax_statement_line +msgid "German Vat Statement Line" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_id +msgid "ID" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "If you confirm, it will be not possible to modify this Statement or reset it back to draft anymore. Do you confirm?" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:374 +#, python-format +msgid "In Rechnungen unrichtig oder unberechtigt ausgewiesene Steuerbeträge gem. § 14c UstG) sowie Steuerbetr. d. n. § 6a Abs. 4 S. 2, § 17 Abs. 1 S. 6, § 25 b Abs. 2 UStG o. v. e. Auslagerer o. Lagerh. n. § 13a Abs. 1 Nr. 6 UStG geschuldet werden (69)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Include Undeclared Invoices" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_account_move_l10n_de_tax_statement_include +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_account_move_line_l10n_de_tax_statement_include +msgid "Include in VAT Statement" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:253 +#, python-format +msgid "Innergemeinschaftliche Erwerbe Steuerfreie innergemeinschaftliche Erwerbe" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_is_group +msgid "Is Group" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_is_readonly +msgid "Is Readonly" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_is_total +msgid "Is Total" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_account_move_line +msgid "Journal Item" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement___last_update +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config___last_update +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard___last_update +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line___last_update +msgid "Last Modified on" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_write_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_write_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_write_uid +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_write_uid +msgid "Last Updated by" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_write_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_write_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_write_date +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_write_date +msgid "Last Updated on" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:298 +#, python-format +msgid "Leistungsempfänger als Steuerschuldner (§ 13b UStG)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Leistungsempfänger als Steuerschuldner (§13b UStG)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:207 +#, python-format +msgid "Lief. u. sonst. Leistg. einschl. unentg. Wertabg." +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:277 +#, python-format +msgid "Lieferungen des ersten Abnehmers bei innergem. Dreiecksgeschäften gem. § 25b Abs. 2 UStG (42)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:245 +#, python-format +msgid "Lieferungen land- u. forstw. Betriebe nach § 24 UStG an Abnehmer mit Ust-ID (77)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:310 +#, python-format +msgid "Lieferungen sicherungsübereign. Gegenst. u. Umsätze d. u. d. GrEStG fallen g. § 13b Abs. 2 Nr. 2 u. 3 (73 / 74)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:315 +#, python-format +msgid "Lieferungen v. Mobilfunkger., Tablet-Comp., Spielekons. u. int. Schaltkr. g. §13b A. 2 Nr. 10 UStG (78 / 79)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_ids +msgid "Lines" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_name +msgid "Name" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:290 +#, python-format +msgid "Nicht steuerb. sonst. Leist. gem. § 18b S. 1 Nr. 2 (21)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Past Undeclared Invoices" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Post" +msgstr "" + +#. module: l10n_de_tax_statement +#: selection:l10n.de.tax.statement,state:0 +msgid "Posted" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Press the Update button in order to recompute the statement lines!" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_account_move_line_l10n_de_tax_statement_id +msgid "Related Move Statement" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Remove Invoice" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Reset to Draft" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_account_move_l10n_de_tax_statement_id +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_statement_id +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Statement" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_state +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_state +msgid "Status" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuer" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:370 +#, python-format +msgid "Steuer inf. Wechsels d. Besteuerungsf. sow. Nachst. a. verst. Anzahlungen u.a. wg. Steuersatzänd. (65)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:210 +#, python-format +msgid "Steuerfr. Umsätze mit Vorsteuerabz. innerg. Lieferungen (§4 Nr. 1b) ..." +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuerfreie Umsätze mit Vorsteuerabzug" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:228 +#, python-format +msgid "Steuerfreie Umsätze ohne Vorsteuerabzug Umsätze n. § 4 Nr. 8 bis 28 UStG (48)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuerfreie innergemeinschaftliche Erwerbe" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:281 +#, python-format +msgid "Steuerpfl. Ums. f.d.d. Leistungsempf. die Steuer schuldet g. § 13b A. 5 S. 1 i.V.m. Abs. 2 Nr. 10 UStG (68)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:302 +#, python-format +msgid "Steuerpfl. sonst. Leist. e. i. übr. Gemeinschaftsgeb. ans. Untern. gem. § 13b Abs. 1 UStG (46 / 47)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuerpflichtige Umsätze (Lief. u. Leistg. ein. unentg. Wertabg.)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:232 +#, python-format +msgid "Steuerpflichtige Umsätze (Lief. u. sonst. Leistg. einschl. unentg. Wertabg.)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Steuerpflichtige innergemeinschaftliche Erwerbe" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:260 +#, python-format +msgid "Steuerpflichtige innergemeinschaftliche Erwerbe ... zum Steuersatz v. 19 % (89)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_21_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_21_base +msgid "Tag 21 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_35_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_35_base +msgid "Tag 35 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_36_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_36_tax +msgid "Tag 36 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_41_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_41_base +msgid "Tag 41 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_42_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_42_base +msgid "Tag 42 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_43_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_43_base +msgid "Tag 43 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_44_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_44_base +msgid "Tag 44 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_45_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_45_base +msgid "Tag 45 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_46_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_46_base +msgid "Tag 46 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_47_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_47_tax +msgid "Tag 47 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_48_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_48_base +msgid "Tag 48 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_49_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_49_base +msgid "Tag 49 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_52_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_52_base +msgid "Tag 52 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_53_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_53_tax +msgid "Tag 53 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_59_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_59_tax +msgid "Tag 59 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_60_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_60_base +msgid "Tag 60 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_61_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_61_tax +msgid "Tag 61 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_62_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_62_tax +msgid "Tag 62 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_63_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_63_tax +msgid "Tag 63 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_64_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_64_tax +msgid "Tag 64 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_65_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_65_tax +msgid "Tag 65 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_66_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_66_tax +msgid "Tag 66 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_67_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_67_tax +msgid "Tag 67 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_68_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_68_base +msgid "Tag 68 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_69_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_69_tax +msgid "Tag 69 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_73_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_73_base +msgid "Tag 73 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_74_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_74_tax +msgid "Tag 74 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_76_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_76_base +msgid "Tag 76 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_77_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_77_base +msgid "Tag 77 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_78_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_78_base +msgid "Tag 78 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_79_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_79_tax +msgid "Tag 79 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_80_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_80_tax +msgid "Tag 80 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_81_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_81_base +msgid "Tag 81 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_81_tax +msgid "Tag 81 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_83_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_83_tax +msgid "Tag 83 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_84_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_84_base +msgid "Tag 84 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_85_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_85_tax +msgid "Tag 85 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_86_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_86_base +msgid "Tag 86 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_86_tax +msgid "Tag 86 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_89_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_89_base +msgid "Tag 89 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_89_tax +msgid "Tag 89 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_91_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_91_base +msgid "Tag 91 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_93_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_93_base +msgid "Tag 93 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_93_tax +msgid "Tag 93 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_94_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_94_base +msgid "Tag 94 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_95_base +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_95_base +msgid "Tag 95 Base" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_96_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_96_tax +msgid "Tag 96 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_tag_98_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_config_wizard_tag_98_tax +msgid "Tag 98 Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:489 +#, python-format +msgid "Tags mapping not configured for this Company! Check the DE Tags Configuration." +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_target_move +msgid "Target Moves" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement_filters +msgid "Target moves" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_account_tax +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_line_tax +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.report_tax_statement +msgid "Tax" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_name +msgid "Tax Statement" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Tax Statement lines" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_to_date +msgid "To Date" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:328 +#, python-format +msgid "Umsatzsteuer" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Umsatzsteuer Voranmeldung - Steuerkennzahl Zuordnung" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:381 +#, python-format +msgid "Umsatzsteuer-Vorauszahlung" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:249 +#, python-format +msgid "Umsätze nach § 24 UStG, z.B. Sägewerke, Getränke u. alk. Flüssigk. (76 / 80)" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_unreported_move_ids +msgid "Unreported Journal Entries" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_unreported_move_from_date +msgid "Unreported Move From Date" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "Update" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.actions.act_window,name:l10n_de_tax_statement.action_account_tax_statement_de +#: model:ir.actions.act_window,name:l10n_de_tax_statement.action_account_tax_statement_de_config +#: model:ir.ui.menu,name:l10n_de_tax_statement.menu_account_tax_statement_de +#: model:ir.ui.menu,name:l10n_de_tax_statement.menu_account_tax_statement_de_config +msgid "Ust-Voranmeldung" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.actions.report,name:l10n_de_tax_statement.action_report_tax_statement +msgid "UstVA-Report" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,help:l10n_de_tax_statement.field_l10n_de_tax_statement_line_currency_id +msgid "Utility field to express amount currency" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_format_tax_total +#: model:ir.model.fields,field_description:l10n_de_tax_statement.field_l10n_de_tax_statement_tax_total +msgid "Verbl. Ust.-Vorauszahlung (66-67)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:364 +#, python-format +msgid "Verbleibender Betrag" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "View base lines" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_l10n_de_tax_report_form +msgid "View tax lines" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:359 +#, python-format +msgid "Vorsteuerabzug f. innergem. Lief. neuer Fahrzeuge außerh. e. Untern. g. §2a UStG sow. v. Kleinunt. i.S. d. § 19 Abs. 1 i.V.m. § 15a Abs. 4a UStG (59)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:340 +#, python-format +msgid "Vorsteuerbeträge a. d. innerg. Erwerb v. Gegenständen gem. § 15 Abs. 1 Satz 1 Nr. 3 UStG (61)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:348 +#, python-format +msgid "Vorsteuerbeträge aus Leistungen i. S. des § 13b UStGi.V.m § 15 Abs. 1 Satz 1 Nr. 4 UStG (67)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:334 +#, python-format +msgid "Vorsteuerbeträge aus Rechn. v.a. Unternehmen g. § 15 Abs. S. 1 Nr. 1 UStG a. Leistungen i.S.d. § 13a Abs. 1 Nr. 6 UStG u. § 15 Abs. 1 S. 1 Nr. 5 UStG u. a. innerg. Dreiecksgesch. g. § 25b A. 5 UStG (66)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:352 +#, python-format +msgid "Vorsteuerbeträge d. n. allg. Durchschnittssätzen berechnet sind gem. §§ 23 und 23a UStG (63)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:224 +#, python-format +msgid "Weitere steuerfr. Umsätze mit Vorsteuerabzug, z.B. Ausfuhrlief., Umsätze n. § 4 Nr. 2-7 UStG (43)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:706 +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:765 +#, python-format +msgid "You cannot delete a posted statement! Reset the statement to draft first." +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:710 +#, python-format +msgid "You cannot delete a statement set as final!" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement_line.py:104 +#, python-format +msgid "You cannot delete lines of a posted statement! Reset the statement to draft first." +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:545 +#, python-format +msgid "You cannot modify a posted statement!" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:697 +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:756 +#, python-format +msgid "You cannot modify a posted statement! Reset the statement to draft first." +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:691 +#, python-format +msgid "You cannot modify a statement set as final!" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:629 +#, python-format +msgid "You cannot post a statement if all the previous statements are not yet posted! Please Post all the other statements first." +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 20" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 21" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 22" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 23" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 24" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 26" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 27" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 28" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 29" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 30" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 32" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 33" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 34" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 35" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 36" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 38" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 39" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 40" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 41" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 42" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 48" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 49" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 50" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 51" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 52" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 55" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 56" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 57" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 58" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 59" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 60" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 61" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 64" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.ui.view,arch_db:l10n_de_tax_statement.view_account_tax_statement_de_config +msgid "Zeile 65" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_l10n_de_tax_statement +msgid "l10n.de.tax.statement" +msgstr "" + +#. module: l10n_de_tax_statement +#: model:ir.model,name:l10n_de_tax_statement.model_l10n_de_tax_statement_config +msgid "l10n.de.tax.statement.config" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:294 +#, python-format +msgid "Übrige n. steuerb. Umsätze, Leistungsort ist nicht im Inland (45)" +msgstr "" + +#. module: l10n_de_tax_statement +#: code:addons/l10n_de_tax_statement/models/l10n_de_tax_statement.py:286 +#, python-format +msgid "Übrige steuerpfl. Umsätze f.d.d. Lstg.empf. d. Steuer n. § 13b Abs. 5 UStG schuldet (60)" +msgstr "" + diff --git a/l10n_de_tax_statement/models/__init__.py b/l10n_de_tax_statement/models/__init__.py new file mode 100755 index 000000000..a8ffa21c8 --- /dev/null +++ b/l10n_de_tax_statement/models/__init__.py @@ -0,0 +1,10 @@ +# Copyright 2019 BIG-Consulting GmbH() +# Copyright 2019 Onestein () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import l10n_de_tax_statement +from . import l10n_de_tax_statement_line +from . import l10n_de_tax_statement_config +from . import account_move +from . import account_move_line +from . import account_tax diff --git a/l10n_de_tax_statement/models/account_move.py b/l10n_de_tax_statement/models/account_move.py new file mode 100755 index 000000000..a5a4b52c5 --- /dev/null +++ b/l10n_de_tax_statement/models/account_move.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 BIG-Consulting GmbH() +# Copyright 2019 Onestein () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class AccountMove(models.Model): + _inherit = 'account.move' + + l10n_de_tax_statement_id = fields.Many2one( + 'l10n.de.tax.statement', + 'Statement' + ) + l10n_de_tax_statement_include = fields.Boolean( + 'Include in VAT Statement' + ) + + def add_move_in_statement(self): + for move in self: + move.l10n_de_tax_statement_include = True + + def unlink_move_from_statement(self): + for move in self: + move.l10n_de_tax_statement_include = False diff --git a/l10n_de_tax_statement/models/account_move_line.py b/l10n_de_tax_statement/models/account_move_line.py new file mode 100755 index 000000000..b7e5c35ef --- /dev/null +++ b/l10n_de_tax_statement/models/account_move_line.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 BIG-Consulting GmbH() +# Copyright 2019 Onestein () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class AccountMoveLine(models.Model): + _inherit = 'account.move.line' + + l10n_de_tax_statement_id = fields.Many2one( + related='move_id.l10n_de_tax_statement_id', + store=True, + readonly=True, + string='Related Move Statement' + ) + l10n_de_tax_statement_include = fields.Boolean( + related='move_id.l10n_de_tax_statement_include', + store=True, + readonly=True + ) diff --git a/l10n_de_tax_statement/models/account_tax.py b/l10n_de_tax_statement/models/account_tax.py new file mode 100755 index 000000000..29aec8daf --- /dev/null +++ b/l10n_de_tax_statement/models/account_tax.py @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 BIG-Consulting GmbH() +# Copyright 2019 Onestein () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models +from odoo.osv import expression + + +class AccountTax(models.Model): + _inherit = 'account.tax' + + def get_move_line_partial_domain(self, from_date, to_date, company_id): + res = super(AccountTax, self).get_move_line_partial_domain( + from_date, + to_date, + company_id + ) + + if not self.env.context.get('skip_invoice_basis_domain'): + return res + + company = self.env['res.company'].browse(company_id) + if company.country_id != self.env.ref('base.de'): + return res + + return expression.AND([ + [('company_id', '=', company_id)], + [('l10n_de_tax_statement_id', '=', False)], + [('l10n_de_tax_statement_include', '=', True)], + self._get_move_line_tax_date_range_domain(from_date), + ]) + + @api.model + def _get_move_line_tax_date_range_domain(self, from_date): + unreported_date = self.env.context.get('unreported_move_from_date') + if self.env.context.get('is_invoice_basis'): + if unreported_date: + res = [ + '|', + '&', '&', + ('l10n_de_date_invoice', '=', False), + ('date', '<', from_date), + ('date', '>=', unreported_date), + '&', '&', + ('l10n_de_date_invoice', '!=', False), + ('l10n_de_date_invoice', '<', from_date), + ('l10n_de_date_invoice', '>=', unreported_date), + ] + else: + res = [ + '|', + '&', + ('l10n_de_date_invoice', '=', False), + ('date', '<', from_date), + '&', + ('l10n_de_date_invoice', '!=', False), + ('l10n_de_date_invoice', '<', from_date), + ] + else: + res = [ + ('date', '<', from_date), + ] + if unreported_date: + res += [ + ('date', '>=', unreported_date), + ] + return res + + def get_balance_domain(self, state_list, type_list): + res = super().get_balance_domain(state_list, type_list) + tax_ids = self.env.context.get('l10n_de_statement_tax_ids') + if tax_ids: + for item in res: + if item[0] == 'tax_line_id': + res.remove(item) + res.append( + ('tax_line_id', 'in', tax_ids) + ) + return res + + def get_base_balance_domain(self, state_list, type_list): + res = super().get_base_balance_domain(state_list, type_list) + tax_ids = self.env.context.get('l10n_de_statement_tax_ids') + if tax_ids: + for item in res: + if item[0] == 'tax_ids': + res.remove(item) + res.append( + ('tax_ids', 'in', tax_ids) + ) + return res diff --git a/l10n_de_tax_statement/models/l10n_de_tax_statement.py b/l10n_de_tax_statement/models/l10n_de_tax_statement.py new file mode 100755 index 000000000..98b629743 --- /dev/null +++ b/l10n_de_tax_statement/models/l10n_de_tax_statement.py @@ -0,0 +1,788 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 BIG-Consulting GmbH() +# Copyright 2019 Onestein () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from datetime import datetime +from dateutil.relativedelta import relativedelta + +from odoo import _, api, fields, models +from odoo.exceptions import UserError +from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DF +from odoo.tools.misc import formatLang + + +class VatStatement(models.Model): + _name = 'l10n.de.tax.statement' + + name = fields.Char( + string='Tax Statement', + required=True, + ) + state = fields.Selection([ + ('draft', 'Draft'), + ('posted', 'Posted')], + readonly=True, + default='draft', + copy=False, + string='Status' + ) + line_ids = fields.One2many( + 'l10n.de.tax.statement.line', + 'statement_id', + 'Lines' + ) + company_id = fields.Many2one( + 'res.company', + 'Company', + required=True, + readonly=True, + default=lambda self: self.env.user.company_id + ) + from_date = fields.Date(required=True) + to_date = fields.Date(required=True) + date_range_id = fields.Many2one( + 'date.range', + 'Date range', + ) + currency_id = fields.Many2one( + 'res.currency', + related='company_id.currency_id', + readonly=True + ) + target_move = fields.Selection([ + ('posted', 'All Posted Entries'), + ('all', 'All Entries')], + 'Target Moves', + readonly=True, + required=True, + default='posted' + ) + date_posted = fields.Datetime(readonly=True) + date_update = fields.Datetime(readonly=True) + + tax_total = fields.Monetary( + compute='_compute_tax_total', + string='Verbl. Ust.-Vorauszahlung (66 - 67)' + ) + format_tax_total = fields.Char( + compute='_compute_amount_format_tax_total', + string='Verbl. Ust.-Vorauszahlung (66 - 67)' + ) + move_line_ids = fields.One2many( + 'account.move.line', + 'l10n_de_tax_statement_id', + string='Entry Lines', + readonly=True, + ) + + @api.multi + def _compute_unreported_move_ids(self): + for statement in self: + domain = statement._get_unreported_move_domain() + move_line_ids = self.env['account.move.line'].search(domain) + statement.unreported_move_ids = move_line_ids.mapped('move_id') + + @api.multi + def _get_unreported_move_domain(self): + self.ensure_one() + domain = [ + ('company_id', '=', self.company_id.id), + ('invoice_id', '!=', False), + ('l10n_de_tax_statement_id', '=', False), + ] + if self.is_invoice_basis and not self.unreported_move_from_date: + domain += [ + '|', + '&', + ('l10n_de_date_invoice', '=', False), + ('date', '<', self.from_date), + '&', + ('l10n_de_date_invoice', '!=', False), + ('l10n_de_date_invoice', '<', self.from_date), + ] + elif self.is_invoice_basis and self.unreported_move_from_date: + domain += [ + '|', + '&', '&', + ('l10n_de_date_invoice', '=', False), + ('date', '<', self.from_date), + ('date', '>=', self.unreported_move_from_date), + '&', '&', + ('l10n_de_date_invoice', '!=', False), + ('l10n_de_date_invoice', '<', self.from_date), + ('l10n_de_date_invoice', '>=', self.unreported_move_from_date), + ] + else: + domain += [ + ('date', '<', self.from_date), + ] + if self.unreported_move_from_date: + domain += [ + ('date', '>=', self.unreported_move_from_date), + ] + return domain + + unreported_move_ids = fields.One2many( + 'account.move', + string="Unreported Journal Entries", + compute='_compute_unreported_move_ids' + ) + unreported_move_from_date = fields.Date() + + @api.multi + def _compute_is_invoice_basis(self): + self.is_invoice_basis = False + has_invoice_basis = self.env['ir.model.fields'].sudo().search_count([ + ('model', '=', 'res.company'), + ('name', '=', 'l10n_de_tax_invoice_basis') + ]) + if has_invoice_basis: + self.is_invoice_basis = self.company_id.l10n_de_tax_invoice_basis + + is_invoice_basis = fields.Boolean( + string='DE Tax Invoice Basis', + compute='_compute_is_invoice_basis', + ) + + @api.multi + @api.depends('tax_total') + def _compute_amount_format_tax_total(self): + for statement in self: + tax = formatLang(self.env, statement.tax_total, monetary=True) + statement.format_tax_total = tax + + @api.model + def default_get(self, fields_list): + defaults = super(VatStatement, self).default_get(fields_list) + company = self.env.user.company_id + fy_dates = company.compute_fiscalyear_dates(datetime.now()) + from_date = fields.Date.to_string(fy_dates['date_from']) + to_date = fields.Date.to_string(fy_dates['date_to']) + defaults.setdefault('from_date', from_date) + defaults.setdefault('to_date', to_date) + defaults.setdefault('name', company.name) + return defaults + + @api.onchange('date_range_id') + def onchange_date_range_id(self): + if self.date_range_id and self.state == 'draft': + self.update({ + 'from_date': self.date_range_id.date_start, + 'to_date': self.date_range_id.date_end, + }) + + @api.onchange('from_date', 'to_date') + def onchange_date(self): + display_name = self.company_id.name + if self.from_date and self.to_date: + display_name += ': ' + ' '.join([self.from_date, self.to_date]) + self.name = display_name + + @api.onchange('from_date') + def onchange_date_from_date(self): + d_from = datetime.strptime(self.from_date, DF) + # by default the unreported_move_from_date is set to + # a quarter (three months) before the from_date of the statement + d_from_2months = d_from + relativedelta(months=-3, day=1) + date_from = fields.Date.to_string(d_from_2months) + self.unreported_move_from_date = date_from + + @api.onchange('unreported_move_from_date') + def onchange_unreported_move_from_date(self): + self._compute_unreported_move_ids() + + @api.model + def _get_taxes_domain(self): + return [('has_moves', '=', True)] + + @api.model + def _prepare_lines(self): + lines = {} + lines['17'] = { + 'code': '17', + 'name': _('Anmeldung der Umsatzsteuer Vorauszahlung')} + lines['18'] = { + 'code': '18', + 'name': _('Lief. u. sonst. Leistg. einschl. unentg. Wertabg.')} + lines['19'] = { + 'code': '19', + 'name': _('Steuerfr. Umsätze mit Vorsteuerabz. innerg. ' + 'Lieferungen (§4 Nr. 1b) ...')} + lines['20'] = { + 'code': '20', 'base': 0.0, + 'name': _('... an Abnehmer mit USt-ID (41)')} + lines['21'] = { + 'code': '21', 'base': 0.0, + 'name': _('... neue Fahrzeuge an Abnehmer ohne UST-ID (44)')} + lines['22'] = { + 'code': '22', 'base': 0.0, + 'name': _('... neuer Fahrzeuge außerh. eines Unternehmens ' + '§ 2a UStG (49)')} + lines['23'] = { + 'code': '23', 'base': 0.0, + 'name': _('Weitere steuerfr. Umsätze mit Vorsteuerabzug, ' + 'z.B. Ausfuhrlief., Umsätze n. § 4 Nr. 2-7 UStG (43)')} + lines['24'] = { + 'code': '24', 'base': 0.0, + 'name': _('Steuerfreie Umsätze ohne Vorsteuerabzug ' + 'Umsätze n. § 4 Nr. 8 bis 28 UStG (48)')} + lines['25'] = { + 'code': '25', + 'name': _('Steuerpflichtige Umsätze ' + '(Lief. u. sonst. Leistg. einschl. unentg. Wertabg.)')} + lines['26'] = { + 'code': '26', 'base': 0.0, 'tax': 0.0, + 'name': _('... zum Steuersatz von 19 % (81)')} + lines['27'] = { + 'code': '27', 'base': 0.0, 'tax': 0.0, + 'name': _('... zum Steuersatz von 7% (86)')} + lines['28'] = { + 'code': '28', 'base': 0.0, 'tax': 0.0, + 'name': _('... zu anderen Steuersätzen (35 / 36)')} + lines['29'] = { + 'code': '29', 'base': 0.0, + 'name': _('Lieferungen land- u. forstw. Betriebe ' + 'nach § 24 UStG an Abnehmer mit Ust-ID (77)')} + lines['30'] = { + 'code': '30', 'base': 0.0, 'tax': 0.0, + 'name': _('Umsätze nach § 24 UStG, ' + 'z.B. Sägewerke, Getränke u. alk. Flüssigk. (76 / 80)')} + lines['31'] = { + 'code': '31', + 'name': _('Innergemeinschaftliche Erwerbe ' + 'Steuerfreie innergemeinschaftliche Erwerbe')} + lines['32'] = { + 'code': '32', 'base': 0.0, + 'name': _('Erwerbe nach §§ 4b u. 25c UStG (91)')} + lines['33'] = { + 'code': '33', 'base': 0.0, 'tax': 0.0, + 'name': _('Steuerpflichtige innergemeinschaftliche Erwerbe ' + '... zum Steuersatz v. 19 % (89)')} + lines['34'] = { + 'code': '34', 'base': 0.0, 'tax': 0.0, + 'name': _('... zum Steuersatz v. 7% (93)')} + lines['35'] = { + 'code': '35', 'base': 0.0, 'tax': 0.0, + 'name': _('... zu anderen Steuersätzen (95 / 98)')} + lines['36'] = { + 'code': '36', 'base': 0.0, 'tax': 0.0, + 'name': _('... neuer Fahrzeuge gem. § 1b Abs. 2 u. 3 UStG ' + 'von Lieferern o. Ust-ID z. allg. Steuersatz (94 / 96)')} + lines['37'] = { + 'code': '37', 'base': 0.0, 'tax': 0.0, + 'name': _('Ergänzende Angaben zu Umsätzen')} + lines['38'] = { + 'code': '38', 'base': 0.0, + 'name': _('Lieferungen des ersten Abnehmers bei innergem. ' + 'Dreiecksgeschäften gem. § 25b Abs. 2 UStG (42)')} + lines['39'] = { + 'code': '39', 'base': 0.0, + 'name': _('Steuerpfl. Ums. f.d.d. Leistungsempf. die Steuer ' + 'schuldet g. § 13b A. 5 S. 1 i.V.m. Abs. 2 ' + 'Nr. 10 UStG (68)')} + lines['40'] = { + 'code': '40', 'base': 0.0, + 'name': _('Übrige steuerpfl. Umsätze f.d.d. Lstg.empf. d. Steuer ' + 'n. § 13b Abs. 5 UStG schuldet (60)')} + lines['41'] = { + 'code': '41', 'base': 0.0, + 'name': _('Nicht steuerb. sonst. Leist. gem. ' + '§ 18b S. 1 Nr. 2 (21)')} + lines['42'] = { + 'code': '42', 'base': 0.0, + 'name': _('Übrige n. steuerb. Umsätze, Leistungsort ' + 'ist nicht im Inland (45)')} + lines['47'] = { + 'code': '47', + 'name': _('Leistungsempfänger als Steuerschuldner ' + '(§ 13b UStG)')} + lines['48'] = { + 'code': '48', 'base': 0.0, 'tax': 0.0, + 'name': _('Steuerpfl. sonst. Leist. e. i. übr. Gemeinschaftsgeb. ' + 'ans. Untern. gem. § 13b Abs. 1 UStG (46 / 47)')} + lines['49'] = { + 'code': '49', 'base': 0.0, 'tax': 0.0, + 'name': _('Andere Leistung eines im Ausland ansässigen Untern. ' + 'gem. § 13b Abs. 2 Nr. 1 u. 5 Buchst. a UStG (52 / 53)')} + lines['50'] = { + 'code': '50', 'base': 0.0, 'tax': 0.0, + 'name': _('Lieferungen sicherungsübereign. Gegenst. u. Umsätze ' + 'd. u. d. GrEStG fallen g. § 13b Abs. 2 ' + 'Nr. 2 u. 3 (73 / 74)')} + lines['51'] = { + 'code': '51', 'base': 0.0, 'tax': 0.0, + 'name': _('Lieferungen v. Mobilfunkger., Tablet-Comp., ' + 'Spielekons. u. int. Schaltkr. g. §13b A. 2 ' + 'Nr. 10 UStG (78 / 79)')} + lines['52'] = { + 'code': '52', 'base': 0.0, 'tax': 0.0, + 'name': _('Andere Leistungen gem. § 13b Abs. 2 Nr. 4, 5 ' + 'Bst. b, Nr. 6 b. 9 u. 11 UStG (84 / 85)')} +# lines['53'] = { +# 'code': '53', 'tax': 0.0, +# 'name': _('Steuer inf. Wechsels d. Besteuerungsf. sow. Nachst. ' +# 'a. verst. Anzahlungen u.a. wg. Steuersatzänd. (65)')} + lines['53'] = { + 'code': '53', 'tax': 0.0, + 'name': _('Umsatzsteuer')} + lines['54'] = { + 'code': '54', + 'name': _('Abziehbare Vorsteuerbeträge')} + lines['55'] = { + 'code': '55', 'tax': 0.0, + 'name': _('Vorsteuerbeträge aus Rechn. v.a. Unternehmen g. § 15 ' + 'Abs. S. 1 Nr. 1 UStG a. Leistungen i.S.d. § 13a ' + 'Abs. 1 Nr. 6 UStG u. § 15 Abs. 1 S. 1 Nr. 5 UStG ' + 'u. a. innerg. Dreiecksgesch. g. § 25b A. 5 UStG (66)')} + lines['56'] = { + 'code': '56', 'tax': 0.0, + 'name': _('Vorsteuerbeträge a. d. innerg. Erwerb v. Gegenständen ' + 'gem. § 15 Abs. 1 Satz 1 Nr. 3 UStG (61)')} + lines['57'] = { + 'code': '57', 'tax': 0.0, + 'name': _('Entst. Einfuhrumsatzst. g. § 15 Abs. 1 S. 1 Nr. 2 ' + 'UStG (62)')} + lines['58'] = { + 'code': '58', 'tax': 0.0, + 'name': _('Vorsteuerbeträge aus Leistungen i. S. des § 13b UStG' + 'i.V.m § 15 Abs. 1 Satz 1 Nr. 4 UStG (67)')} + lines['59'] = { + 'code': '59', 'tax': 0.0, + 'name': _('Vorsteuerbeträge d. n. allg. Durchschnittssätzen ' + 'berechnet sind gem. §§ 23 und 23a UStG (63)')} + lines['60'] = { + 'code': '60', 'tax': 0.0, + 'name': _('Berichtigung des Vorsteuerabzugs g. § 15 a UStG (64)')} + lines['61'] = { + 'code': '61', 'tax': 0.0, + 'name': _('Vorsteuerabzug f. innergem. Lief. neuer Fahrzeuge ' + 'außerh. e. Untern. g. §2a UStG sow. v. Kleinunt. i.S. ' + 'd. § 19 Abs. 1 i.V.m. § 15a Abs. 4a UStG (59)')} + lines['62'] = { + 'code': '62', 'tax': 0.0, + 'name': _('Verbleibender Betrag')} + lines['63'] = { + 'code': '63', + 'name': _('Andere Steuerbeträge')} + lines['64'] = { + 'code': '64', 'tax': 0.0, + 'name': _('Steuer inf. Wechsels d. Besteuerungsf. sow. Nachst. ' + 'a. verst. Anzahlungen u.a. wg. Steuersatzänd. (65)')} + lines['65'] = { + 'code': '65', 'tax': 0.0, + 'name': _('In Rechnungen unrichtig oder unberechtigt ausgewiesene ' + 'Steuerbeträge gem. § 14c UstG) sowie Steuerbetr. d. n. ' + '§ 6a Abs. 4 S. 2, § 17 Abs. 1 S. 6, § 25 b Abs. 2 UStG ' + 'o. v. e. Auslagerer o. Lagerh. n. § 13a Abs. 1 Nr. 6 ' + 'UStG geschuldet werden (69)')} + lines['66'] = { + 'code': '66', 'tax': 0.0, + 'name': _('Umsatzsteuer-Vorauszahlung')} + lines['67'] = { + 'code': '67', 'tax': 0.0, + 'name': _('Abzug der festges. Sondervorauszahl. f. ' + 'Dauerfristverlängerung, nur auszuf. i. d. letzten ' + 'Voranmeldung d. Besteuerungszeitr., i.d.R. Dez. (39)')} + + return lines + + @api.model + def _finalize_lines(self, lines): + +# _26b = lines['26']['tax'] +# _27b = lines['27']['tax'] + _28b = lines['28']['tax'] +# _30b = lines['30']['tax'] +# _33b = lines['33']['tax'] +# _34b = lines['34']['tax'] +# _35b = lines['35']['tax'] +# _36b = lines['36']['tax'] +# _48b = lines['48']['tax'] +# _49b = lines['49']['tax'] +# _50b = lines['50']['tax'] +# _51b = lines['51']['tax'] +# _52b = lines['52']['tax'] + _64b = lines['64']['tax'] + _65b = lines['65']['tax'] + + # calculate lines 48 - 52 + lines['48']['tax'] = lines['48']['tax'] * 1 + _48b = lines['48']['tax'] + lines['49']['tax'] = lines['49']['tax'] * 1 + _49b = lines['49']['tax'] + lines['50']['tax'] = lines['50']['tax'] * 1 + _50b = lines['50']['tax'] + lines['51']['tax'] = lines['51']['tax'] * 1 + _51b = lines['51']['tax'] + lines['52']['tax'] = lines['52']['tax'] * 1 + _52b = lines['52']['tax'] + + # calculate lines 26, 27, 28, 33, 34 + lines['26']['tax'] = lines['26']['base'] * 0.19 + _26b = lines['26']['tax'] + lines['27']['tax'] = lines['27']['base'] * 0.07 + _27b = lines['27']['tax'] + lines['30']['tax'] = lines['30']['base'] * 0.19 + _30b = lines['30']['tax'] + lines['33']['tax'] = lines['33']['base'] * 0.19 + _33b = lines['33']['tax'] + lines['34']['tax'] = lines['34']['base'] * 0.07 + _34b = lines['34']['tax'] + + # calculate reverse of lines 32 - line 36 base + lines['32']['base'] = lines['32']['base'] * -1 + lines['33']['base'] = lines['33']['base'] * -1 + lines['34']['base'] = lines['34']['base'] * -1 + lines['35']['base'] = lines['35']['base'] * -1 + lines['36']['base'] = lines['36']['base'] * -1 + + # calculate reverse of lines 32 - line 36 tax + lines['33']['tax'] = lines['33']['tax'] * -1 + _33b = lines['33']['tax'] + lines['34']['tax'] = lines['34']['tax'] * -1 + _34b = lines['34']['tax'] + lines['35']['tax'] = lines['35']['tax'] * -1 + _35b = lines['35']['tax'] + lines['36']['tax'] = lines['36']['tax'] * -1 + _36b = lines['36']['tax'] + + # calculate reverse of lines 48 - line 52 base + lines['48']['base'] = lines['48']['base'] * -1 + lines['49']['base'] = lines['49']['base'] * -1 + lines['50']['base'] = lines['50']['base'] * -1 + lines['51']['base'] = lines['51']['base'] * -1 + lines['52']['base'] = lines['52']['base'] * -1 + + # calculate reverse of line 55 - line 61 + lines['55']['tax'] = lines['55']['tax'] * -1 + _55b = lines['55']['tax'] + lines['56']['tax'] = lines['56']['tax'] * -1 + _56b = lines['56']['tax'] + lines['57']['tax'] = lines['57']['tax'] * -1 + _57b = lines['57']['tax'] + lines['58']['tax'] = lines['58']['tax'] * -1 + _58b = lines['58']['tax'] + lines['59']['tax'] = lines['59']['tax'] * -1 + _59b = lines['59']['tax'] + lines['60']['tax'] = lines['60']['tax'] * -1 + _60b = lines['60']['tax'] + lines['61']['tax'] = lines['61']['tax'] * -1 + _61b = lines['61']['tax'] + + # calculate line 53 + lines['53']['tax'] = lines['53']['tax'] * 1 + _53b = lines['53']['tax'] + _26b + _27b + _28b + _30b + _33b + _34b\ + + _35b + _36b + _48b + _49b + _50b + _51b + _52b + + # calculate line 62 + lines['62']['tax'] = lines['62']['tax'] * 1 + _62b = lines['62']['tax'] + _53b - _55b - _56b - _57b\ + - _58b - _59b - _60b - _61b + + # calculate line 66 + lines['66']['tax'] = lines['66']['tax'] * 1 + _66b = lines['66']['tax'] + _62b + _64b + _65b + + # update lines 53, 62, 66 + lines['66'].update({'tax': _66b}) + lines['53'].update({'tax': _53b}) + lines['62'].update({'tax': _62b}) + return lines + + @api.model + def _get_tags_map(self): + company_id = self.env.user.company_id.id + config = self.env['l10n.de.tax.statement.config'].search([ + ('company_id', '=', company_id)], limit=1 + ) + if not config: + raise UserError( + _('Tags mapping not configured for this Company! ' + 'Check the DE Tags Configuration.')) + return { + config.tag_41_base.id: ('20', 'base'), + config.tag_44_base.id: ('21', 'base'), + config.tag_49_base.id: ('22', 'base'), + config.tag_43_base.id: ('23', 'base'), + config.tag_48_base.id: ('24', 'base'), + config.tag_81_base.id: ('26', 'base'), + config.tag_81_tax.id: ('26', 'tax'), + config.tag_86_base.id: ('27', 'base'), + config.tag_86_tax.id: ('27', 'tax'), + config.tag_35_base.id: ('28', 'base'), + config.tag_36_tax.id: ('28', 'tax'), + config.tag_77_base.id: ('29', 'base'), + config.tag_76_base.id: ('30', 'base'), + config.tag_80_tax.id: ('30', 'tax'), + config.tag_91_base.id: ('32', 'base'), + config.tag_89_base.id: ('33', 'base'), + config.tag_93_base.id: ('34', 'base'), + config.tag_95_base.id: ('35', 'base'), + config.tag_98_tax.id: ('35', 'tax'), + config.tag_94_base.id: ('36', 'base'), + config.tag_96_tax.id: ('36', 'tax'), + config.tag_42_base.id: ('38', 'base'), + config.tag_68_base.id: ('39', 'base'), + config.tag_60_base.id: ('40', 'base'), + config.tag_21_base.id: ('41', 'base'), + config.tag_45_base.id: ('42', 'base'), + config.tag_46_base.id: ('48', 'base'), + config.tag_47_tax.id: ('48', 'tax'), + config.tag_52_base.id: ('49', 'base'), + config.tag_53_tax.id: ('49', 'tax'), + config.tag_73_base.id: ('50', 'base'), + config.tag_74_tax.id: ('50', 'tax'), + config.tag_78_base.id: ('51', 'base'), + config.tag_79_tax.id: ('51', 'tax'), + config.tag_84_base.id: ('52', 'base'), + config.tag_85_tax.id: ('52', 'tax'), + config.tag_66_tax.id: ('55', 'tax'), + config.tag_61_tax.id: ('56', 'tax'), + config.tag_62_tax.id: ('57', 'tax'), + config.tag_67_tax.id: ('58', 'tax'), + config.tag_63_tax.id: ('59', 'tax'), + config.tag_64_tax.id: ('60', 'tax'), + config.tag_59_tax.id: ('61', 'tax'), + config.tag_65_tax.id: ('64', 'tax'), + config.tag_69_tax.id: ('65', 'tax'), + } + + @api.multi + def statement_update(self): + self.ensure_one() + + if self.state == 'posted': + raise UserError( + _('You cannot modify a posted statement!')) + + # clean old lines + self.line_ids.unlink() + + # calculate lines + lines = self._prepare_lines() + taxes = self._compute_taxes() + self._set_statement_lines(lines, taxes) + taxes = self._compute_past_invoices_taxes() + self._set_statement_lines(lines, taxes) + self._finalize_lines(lines) + + # create lines + for line in lines: + lines[line].update({'statement_id': self.id}) + self.env['l10n.de.tax.statement.line'].create( + lines[line] + ) + self.date_update = fields.Datetime.now() + + def _compute_past_invoices_taxes(self): + self.ensure_one() + ctx = { + 'from_date': self.from_date, + 'to_date': self.to_date, + 'target_move': self.target_move, + 'company_id': self.company_id.id, + 'skip_invoice_basis_domain': True, + 'is_invoice_basis': self.is_invoice_basis, + 'unreported_move_from_date': self.unreported_move_from_date + } + taxes = self.env['account.tax'].with_context(ctx) + for move in self.unreported_move_ids: + for move_line in move.line_ids: + if move_line.tax_exigible: + if move_line.tax_line_id: + taxes |= move_line.tax_line_id + return taxes + + def _compute_taxes(self): + self.ensure_one() + ctx = { + 'from_date': self.from_date, + 'to_date': self.to_date, + 'target_move': self.target_move, + 'company_id': self.company_id.id, + } + domain = self._get_taxes_domain() + taxes = self.env['account.tax'].with_context(ctx).search(domain) + return taxes + + def _set_statement_lines(self, lines, taxes): + self.ensure_one() + tags_map = self._get_tags_map() + for tax in taxes: + for tag in tax.tag_ids: + tag_map = tags_map.get(tag.id) + if tag_map: + column = tag_map[1] + code = tag_map[0] + if column == 'base': + lines[code][column] += tax.base_balance + else: + lines[code][column] += tax.balance + + @api.multi + def finalize(self): + self.ensure_one() + self.write({ + 'state': 'final' + }) + + @api.multi + def post(self): + self.ensure_one() + prev_open_statements = self.search([ + ('company_id', '=', self.company_id.id), + ('state', '=', 'draft'), + ('id', '<', self.id) + ], limit=1) + + if prev_open_statements: + raise UserError( + _('You cannot post a statement if all the previous ' + 'statements are not yet posted! ' + 'Please Post all the other statements first.')) + + self.write({ + 'state': 'posted', + 'date_posted': fields.Datetime.now() + }) + self.unreported_move_ids.write({ + 'l10n_de_tax_statement_id': self.id, + }) + domain = [ + ('company_id', '=', self.company_id.id), + ('l10n_de_tax_statement_id', '=', False), + ] + if self.is_invoice_basis: + domain += [ + '|', + '&', '&', + ('l10n_de_date_invoice', '=', False), + ('date', '<=', self.to_date), + ('date', '>=', self.from_date), + '&', '&', + ('l10n_de_date_invoice', '!=', False), + ('l10n_de_date_invoice', '<=', self.to_date), + ('l10n_de_date_invoice', '>=', self.from_date), + ] + else: + domain += [ + ('date', '<=', self.to_date), + ('date', '>=', self.from_date), + ] + move_line_ids = self.env['account.move.line'].search(domain) + updated_move_ids = move_line_ids.mapped('move_id') + updated_move_ids.write({ + 'l10n_de_tax_statement_id': self.id, + }) + + @api.multi + def reset(self): + self.write({ + 'state': 'draft', + 'date_posted': None + }) + req = """ + UPDATE account_move_line + SET l10n_de_tax_statement_id = NULL + WHERE + l10n_de_tax_statement_id = %s + """ + self.env.cr.execute( + req, (self.id, )) + + @api.model + def _modifiable_values_when_posted(self): + return ['state'] + + @api.multi + def write(self, values): + for statement in self: + if statement.state == 'final': + raise UserError( + _('You cannot modify a statement set as final!')) + if 'state' not in values or values['state'] != 'draft': + if statement.state == 'posted': + for val in values: + if val not in self._modifiable_values_when_posted(): + raise UserError( + _('You cannot modify a posted statement! ' + 'Reset the statement to draft first.')) + return super(VatStatement, self).write(values) + + @api.multi + def unlink(self): + for statement in self: + if statement.state == 'posted': + raise UserError( + _('You cannot delete a posted statement! ' + 'Reset the statement to draft first.')) + if statement.state == 'final': + raise UserError( + _('You cannot delete a statement set as final!')) + super(VatStatement, self).unlink() + + def _compute_lines(self, lines): + ctx = { + 'from_date': self.from_date, + 'to_date': self.to_date, + 'target_move': self.target_move, + 'company_id': self.company_id.id, + } + tags_map = self._get_tags_map() + domain = self._get_taxes_domain() + taxes = self.env['account.tax'].with_context(ctx).search(domain) + for tax in taxes: + for tag in tax.tag_ids: + tag_map = tags_map.get(tag.id) + if tag_map: + column = tag_map[1] + code = tag_map[0] + if column == 'base': + lines[code][column] += tax.base_balance + else: + lines[code][column] += tax.balance + + @api.multi + def post(self): + self.write({ + 'state': 'posted', + 'date_posted': fields.Datetime.now() + }) + + @api.multi + def reset(self): + self.write({ + 'state': 'draft', + 'date_posted': None + }) + + @api.multi + def write(self, values): + for statement in self: + if 'state' not in values or values['state'] != 'draft': + if statement.state == 'posted': + for val in values: + if val != 'state': + raise UserError( + _('You cannot modify a posted statement! ' + 'Reset the statement to draft first.')) + return super(VatStatement, self).write(values) + + @api.multi + def unlink(self): + for statement in self: + if statement.state == 'posted': + raise UserError( + _('You cannot delete a posted statement! ' + 'Reset the statement to draft first.')) + super(VatStatement, self).unlink() + + @api.depends('line_ids.tax') + def _compute_tax_total(self): + for statement in self: + total = 0.0 + for line in statement.line_ids: + if line.code in ['66', '67']: + total += line.tax + statement.tax_total = total diff --git a/l10n_de_tax_statement/models/l10n_de_tax_statement_config.py b/l10n_de_tax_statement/models/l10n_de_tax_statement_config.py new file mode 100755 index 000000000..5698cb6ec --- /dev/null +++ b/l10n_de_tax_statement/models/l10n_de_tax_statement_config.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 BIG-Consulting GmbH() +# Copyright 2019 Onestein () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import fields, models + + +class VatStatementConfig(models.Model): + _name = 'l10n.de.tax.statement.config' + + company_id = fields.Many2one( + 'res.company', + 'Company', + required=True + ) + + tag_41_base = fields.Many2one('account.account.tag') + tag_44_base = fields.Many2one('account.account.tag') + tag_49_base = fields.Many2one('account.account.tag') + tag_43_base = fields.Many2one('account.account.tag') + tag_48_base = fields.Many2one('account.account.tag') + tag_81_base = fields.Many2one('account.account.tag') + tag_81_tax = fields.Many2one('account.account.tag') + tag_86_base = fields.Many2one('account.account.tag') + tag_86_tax = fields.Many2one('account.account.tag') + tag_35_base = fields.Many2one('account.account.tag') + tag_36_tax = fields.Many2one('account.account.tag') + tag_77_base = fields.Many2one('account.account.tag') + tag_76_base = fields.Many2one('account.account.tag') + tag_80_tax = fields.Many2one('account.account.tag') + tag_91_base = fields.Many2one('account.account.tag') + tag_89_base = fields.Many2one('account.account.tag') + tag_89_tax = fields.Many2one('account.account.tag') + tag_93_base = fields.Many2one('account.account.tag') + tag_93_tax = fields.Many2one('account.account.tag') + tag_95_base = fields.Many2one('account.account.tag') + tag_98_tax = fields.Many2one('account.account.tag') + tag_94_base = fields.Many2one('account.account.tag') + tag_96_tax = fields.Many2one('account.account.tag') + tag_42_base = fields.Many2one('account.account.tag') + tag_68_base = fields.Many2one('account.account.tag') + tag_60_base = fields.Many2one('account.account.tag') + tag_21_base = fields.Many2one('account.account.tag') + tag_45_base = fields.Many2one('account.account.tag') + tag_46_base = fields.Many2one('account.account.tag') + tag_47_tax = fields.Many2one('account.account.tag') + tag_52_base = fields.Many2one('account.account.tag') + tag_53_tax = fields.Many2one('account.account.tag') + tag_73_base = fields.Many2one('account.account.tag') + tag_74_tax = fields.Many2one('account.account.tag') + tag_78_base = fields.Many2one('account.account.tag') + tag_79_tax = fields.Many2one('account.account.tag') + tag_84_base = fields.Many2one('account.account.tag') + tag_85_tax = fields.Many2one('account.account.tag') + tag_65_tax = fields.Many2one('account.account.tag') + tag_66_tax = fields.Many2one('account.account.tag') + tag_61_tax = fields.Many2one('account.account.tag') + tag_62_tax = fields.Many2one('account.account.tag') + tag_67_tax = fields.Many2one('account.account.tag') + tag_63_tax = fields.Many2one('account.account.tag') + tag_64_tax = fields.Many2one('account.account.tag') + tag_59_tax = fields.Many2one('account.account.tag') + tag_69_tax = fields.Many2one('account.account.tag') + tag_83_tax = fields.Many2one('account.account.tag') \ No newline at end of file diff --git a/l10n_de_tax_statement/models/l10n_de_tax_statement_line.py b/l10n_de_tax_statement/models/l10n_de_tax_statement_line.py new file mode 100755 index 000000000..23186d518 --- /dev/null +++ b/l10n_de_tax_statement/models/l10n_de_tax_statement_line.py @@ -0,0 +1,175 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 BIG-Consulting GmbH() +# Copyright 2019 Onestein () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, api, fields, models +from odoo.osv import expression +from odoo.exceptions import UserError +from odoo.tools.misc import formatLang + + +BASE_DISPLAY = ( + '20', '21', '22', '23', '24', + '26', '27', '28', '29', '30', + '32', '33', '34', '35', '36', + '38', '39', '40', '41', '42', + '48', '49', '50', '51', '52', +) + +TAX_DISPLAY = ( + '26', '27', '28', '30', + '33', '34', '35', '36', + '48', '49', '50', '51', '52', '53', '55', + '56', '57', '58', '59', + '60', '61', '62', '64', '65', '66', '67', +) + +GROUP_DISPLAY = ( + '17', '18', '19', + '25', '31', '37', + '47', '54', '63', +) + +EDITABLE_DISPLAY = ( + '20', '21', '22', '23', '24', + '26', '27', '28', '29', '30', + '32', '33', '34', '35', '36', + '38', '39', '40', '41', '42', + '48', '49', '50', '51', '52', + '64', '65', '67', +) + +TOTAL_DISPLAY = ( + '53', '62', +) + + +class VatStatementLine(models.Model): + _name = 'l10n.de.tax.statement.line' + _description = 'German Vat Statement Line' + _order = 'code' + + name = fields.Char() + code = fields.Char() + + statement_id = fields.Many2one( + 'l10n.de.tax.statement', + 'Statement' + ) + currency_id = fields.Many2one( + 'res.currency', + related='statement_id.company_id.currency_id', + readonly=True, + help='Utility field to express amount currency' + ) + base = fields.Monetary() + tax = fields.Monetary() + format_base = fields.Char(compute='_compute_amount_format') + format_tax = fields.Char(compute='_compute_amount_format') + + is_group = fields.Boolean(compute='_compute_is_group') + is_total = fields.Boolean(compute='_compute_is_group') + is_readonly = fields.Boolean(compute='_compute_is_readonly') + + state = fields.Selection(related='statement_id.state') + + @api.multi + @api.depends('base', 'tax', 'code') + def _compute_amount_format(self): + for line in self: + base = formatLang(self.env, line.base, monetary=True) + tax = formatLang(self.env, line.tax, monetary=True) + if line.code in BASE_DISPLAY: + line.format_base = base + if line.code in TAX_DISPLAY: + line.format_tax = tax + + @api.multi + @api.depends('code') + def _compute_is_group(self): + for line in self: + line.is_group = line.code in GROUP_DISPLAY + line.is_total = line.code in TOTAL_DISPLAY + + @api.multi + @api.depends('code') + def _compute_is_readonly(self): + for line in self: + if line.state == 'draft': + line.is_readonly = line.code not in EDITABLE_DISPLAY + else: + line.is_readonly = True + + @api.multi + def unlink(self): + for line in self: + if line.statement_id.state == 'posted': + raise UserError( + _('You cannot delete lines of a posted statement! ' + 'Reset the statement to draft first.')) + super(VatStatementLine, self).unlink() + + @api.multi + def view_tax_lines(self): + self.ensure_one() + return self.get_lines_action(tax_or_base='tax') + + @api.multi + def view_base_lines(self): + self.ensure_one() + return self.get_lines_action(tax_or_base='base') + + def get_lines_action(self, tax_or_base='tax'): + self.ensure_one() + action = self.env.ref('account.action_account_moves_all_tree') + vals = action.read()[0] + vals['context'] = {} + vals['domain'] = self._get_move_lines_domain(tax_or_base) + return vals + + def _get_move_lines_domain(self, tax_or_base): + statement = self.statement_id + taxes = self._filter_taxes_by_code(statement._compute_taxes()) + past_taxes = statement._compute_past_invoices_taxes() + past_taxes = self._filter_taxes_by_code(past_taxes) + if statement.state == 'draft': + domain = self._get_domain_draft(taxes, tax_or_base) + past_domain = self._get_domain_draft(past_taxes, tax_or_base) + else: + domain = self._get_domain_posted(taxes, tax_or_base) + past_domain = self._get_domain_posted(past_taxes, tax_or_base) + curr_amls = self.env['account.move.line'].search(domain) + past_amls = self.env['account.move.line'].search(past_domain) + res = [('id', 'in', past_amls.ids + curr_amls.ids)] + return res + + def _filter_taxes_by_code(self, taxes): + self.ensure_one() + tags_map = self.statement_id._get_tags_map() + filtered_taxes = self.env['account.tax'] + for tax in taxes: + for tag in tax.tag_ids: + tag_map = tags_map.get(tag.id) + if tag_map and tag_map[0] == self.code: + filtered_taxes |= tax + return filtered_taxes.with_context(taxes.env.context) + + def _get_domain_draft(self, taxes, tax_or_base): + self.ensure_one() + ctx = taxes.env.context.copy() + ctx.update({ + 'l10n_de_statement_tax_ids': taxes.ids + }) + AccountTax = self.env['account.tax'].with_context(ctx) + return AccountTax.get_move_lines_domain(tax_or_base=tax_or_base) + + def _get_domain_posted(self, taxes, tax_or_base): + self.ensure_one() + statement = self.statement_id + domain = [('move_id.l10n_de_tax_statement_id', '=', statement.id)] + if tax_or_base == 'tax': + tax_domain = [('tax_line_id', '=', taxes.ids)] + else: + tax_domain = [('tax_ids', '=', taxes.ids)] + return expression.AND([domain, tax_domain]) diff --git a/l10n_de_tax_statement/report/report_tax_statement.xml b/l10n_de_tax_statement/report/report_tax_statement.xml new file mode 100755 index 000000000..c8420bff7 --- /dev/null +++ b/l10n_de_tax_statement/report/report_tax_statement.xml @@ -0,0 +1,89 @@ + + + + + + + + + + diff --git a/l10n_de_tax_statement/security/ir.model.access.csv b/l10n_de_tax_statement/security/ir.model.access.csv new file mode 100755 index 000000000..a5cc9baf0 --- /dev/null +++ b/l10n_de_tax_statement/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_l10n_de_tax_statement_line,access_l10n_de_tax_statement_line,model_l10n_de_tax_statement_line,account.group_account_user,1,1,1,1 +access_l10n_de_tax_statement,access_l10n_de_tax_statement,model_l10n_de_tax_statement,account.group_account_user,1,1,1,1 +access_l10n_de_tax_statement_config,access_l10n_de_tax_statement_config,model_l10n_de_tax_statement_config,account.group_account_user,1,1,1,1 diff --git a/l10n_de_tax_statement/security/tax_statement_security_rule.xml b/l10n_de_tax_statement/security/tax_statement_security_rule.xml new file mode 100755 index 000000000..1f1f4ddaf --- /dev/null +++ b/l10n_de_tax_statement/security/tax_statement_security_rule.xml @@ -0,0 +1,11 @@ + + + + + DE Tax Statement Multicompany + + + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + + + diff --git a/l10n_de_tax_statement/static/src/css/report.css b/l10n_de_tax_statement/static/src/css/report.css new file mode 100755 index 000000000..07af225f4 --- /dev/null +++ b/l10n_de_tax_statement/static/src/css/report.css @@ -0,0 +1,49 @@ +.de_tax > table, .de_tax > td, .de_tax > span, .de_tax > div { + font-family: Helvetica, Arial; +} +.de_tax_act_as_table { + display: table; +} +.de_tax_act_as_row { + display: table-row !important; + page-break-inside: avoid; +} +.de_tax_act_as_cell { + display: table-cell; + page-break-inside: avoid; + font-size:18px; +} +.de_tax_act_as_row.labels { + background-color:#F0F0F0; +} +.de_tax_table { + width: 100%; + table-layout: fixed; + border-left:0px; + border-right:0px; + text-align:left; + font-size:18px; + padding-right:3px; + padding-left:3px; + padding-top:3px; + padding-bottom:3px; + border-collapse:collapse; +} +.de_tax_table .de_tax_act_as_cell{ + border-bottom: 1px solid lightGrey; + text-align: center; + word-wrap: break-word; +} +.de_tax_table .de_tax_act_as_row.labels { + font-weight: bold; +} +.de_tax_act_as_cell.right { + word-wrap:normal; + text-align:right; +} +.de_tax_act_as_cell.left { + text-align:left; +} +.de_tax_footer { + font-size:18px; +} diff --git a/l10n_de_tax_statement/templates/assets.xml b/l10n_de_tax_statement/templates/assets.xml new file mode 100755 index 000000000..6a239c111 --- /dev/null +++ b/l10n_de_tax_statement/templates/assets.xml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/l10n_de_tax_statement/tests/__init__.py b/l10n_de_tax_statement/tests/__init__.py new file mode 100755 index 000000000..c787b3677 --- /dev/null +++ b/l10n_de_tax_statement/tests/__init__.py @@ -0,0 +1,6 @@ +# Copyright 2019 BIG-Consulting GmbH() +# Copyright 2019 Onestein() + +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_l10n_de_tax_statement diff --git a/l10n_de_tax_statement/tests/test_l10n_de_tax_statement.py b/l10n_de_tax_statement/tests/test_l10n_de_tax_statement.py new file mode 100755 index 000000000..8d57de6d3 --- /dev/null +++ b/l10n_de_tax_statement/tests/test_l10n_de_tax_statement.py @@ -0,0 +1,544 @@ +# -*- coding: utf-8 -*- +# Copyright 2019 BIG-Consulting GmbH() +# Copyright 2019 Onestein () +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from dateutil.relativedelta import relativedelta +from mock import patch + +from odoo import fields +from odoo.tools import convert_file +from odoo.modules.module import get_module_resource +from odoo.exceptions import UserError +from odoo.tests.common import TransactionCase, at_install, post_install + + +class TestVatStatement(TransactionCase): + + def _load(self, module, *args): + convert_file( + self.cr, + 'l10n_de', + get_module_resource(module, *args), + {}, 'init', False, 'test', self.registry._assertion_report) + + def setUp(self): + super().setUp() + + self.Wizard = self.env['l10n.de.vat.statement.config.wizard'] + + self.tag_1 = self.env['account.account.tag'].create({ + 'name': 'Tag 1', + 'applicability': 'taxes', + }) + self.tag_2 = self.env['account.account.tag'].create({ + 'name': 'Tag 2', + 'applicability': 'taxes', + }) + self.tag_3 = self.env['account.account.tag'].create({ + 'name': 'Tag 3', + 'applicability': 'taxes', + }) + self.tag_4 = self.env['account.account.tag'].create({ + 'name': 'Tag 4', + 'applicability': 'taxes', + }) + + self.tax_1 = self.env['account.tax'].create({ + 'name': 'Tax 1', + 'amount': 19, + 'tag_ids': [(6, 0, [self.tag_1.id])], + }) + + self.tax_2 = self.env['account.tax'].create({ + 'name': 'Tax 2', + 'amount': 7, + 'tag_ids': [(6, 0, [self.tag_2.id])], + }) + + self.config = self.env['l10n.de.vat.statement.config'].create({ + 'company_id': self.env.user.company_id.id, + 'tag_81_base': self.tag_1.id, + 'tag_86_base': self.tag_2.id, + 'tag_66_tax': self.tag_3.id, + 'tag_21_base': self.tag_4.id, + }) + + daterange_type = self.env['date.range.type'].create({ + 'name': 'Type 1' + }) + + self.daterange_1 = self.env['date.range'].create({ + 'name': 'Daterange 1', + 'type_id': daterange_type.id, + 'date_start': '2016-01-01', + 'date_end': '2016-12-31', + }) + + self.statement_1 = self.env['l10n.de.vat.statement'].create({ + 'name': 'Statement 1', + }) + + self.journal_1 = self.env['account.journal'].create({ + 'name': 'Journal 1', + 'code': 'Jou1', + 'type': 'sale', + }) + + self.partner = self.env['res.partner'].create({ + 'name': 'Test partner'}) + + type_account = self.env.ref('account.data_account_type_receivable') + + account_receivable = self.env['account.account'].search([ + ('user_type_id', '=', type_account.id) + ], limit=1) + + invoice1_vals = [{ + 'name': 'Test line', + 'quantity': 1.0, + 'account_id': account_receivable.id, + 'price_unit': 100.0, + 'invoice_line_tax_ids': [(6, 0, [self.tax_1.id])], + }, { + 'name': 'Test line 2', + 'quantity': 1.0, + 'account_id': account_receivable.id, + 'price_unit': 50.0, + 'invoice_line_tax_ids': [(6, 0, [self.tax_2.id])], + }] + + self.invoice_1 = self.env['account.invoice'].create({ + 'partner_id': self.partner.id, + 'name': 'ref1', + 'account_id': account_receivable.id, + 'journal_id': self.journal_1.id, + 'date_invoice': fields.Date.today(), + 'type': 'out_invoice', + 'invoice_line_ids': [(0, 0, value) for value in invoice1_vals] + }) + + def test_01_onchange(self): + self.statement_1.write({'date_range_id': self.daterange_1.id}) + self.statement_1.onchange_date_range_id() + self.assertEqual(self.statement_1.from_date, '2016-01-01') + self.assertEqual(self.statement_1.to_date, '2016-12-31') + + self.statement_1.onchange_date() + check_name = self.statement_1.company_id.name + check_name += ': ' + ' '.join( + [self.statement_1.from_date, self.statement_1.to_date]) + self.assertEqual(self.statement_1.name, check_name) + + self.statement_1.onchange_date_from_date() + d_from = fields.Date.from_string(self.statement_1.from_date) + # by default the unreported_move_from_date is set to + # a quarter (three months) before the from_date of the statement + d_from_2months = d_from + relativedelta(months=-3, day=1) + new_date = fields.Date.to_string(d_from_2months) + self.assertEqual(self.statement_1.unreported_move_from_date, new_date) + + self.assertEqual(self.statement_1.tax_total, 0.) + + def test_02_post_final(self): + # in draft + self.assertEqual(self.statement_1.state, 'draft') + self.statement_1.statement_update() + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + + # first post + self.statement_1.statement_update() + self.statement_1.post() + self.assertEqual(self.statement_1.state, 'posted') + self.assertTrue(self.statement_1.date_posted) + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + + # then finalize + self.statement_1.finalize() + self.assertEqual(self.statement_1.state, 'final') + self.assertTrue(self.statement_1.date_posted) + + with self.assertRaises(UserError): + self.statement_1.write({'name': 'Test Name Modified'}) + with self.assertRaises(UserError): + self.statement_1.write({'state': 'posted'}) + with self.assertRaises(UserError): + self.statement_1.write({'date_posted': fields.Datetime.now()}) + with self.assertRaises(UserError): + self.statement_1.unlink() + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + with self.assertRaises(UserError): + line.unlink() + + self.assertEqual(self.statement_1.tax_total, 0.) + + def test_03_reset(self): + self.statement_1.reset() + self.assertEqual(self.statement_1.state, 'draft') + self.assertFalse(self.statement_1.date_posted) + + self.assertEqual(self.statement_1.tax_total, 0.) + + self.statement_1.statement_update() + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + + def test_04_write(self): + self.statement_1.post() + with self.assertRaises(UserError): + self.statement_1.write({'name': 'Test Name'}) + + self.assertEqual(self.statement_1.tax_total, 0.) + + def test_05_unlink_exception(self): + self.statement_1.post() + with self.assertRaises(UserError): + self.statement_1.unlink() + + def test_06_unlink_working(self): + self.statement_1.unlink() + + def test_07_update_exception1(self): + self.statement_1.post() + with self.assertRaises(UserError): + self.statement_1.statement_update() + + def test_08_update_exception2(self): + self.config.unlink() + with self.assertRaises(UserError): + self.statement_1.statement_update() + + def test_09_update_working(self): + self.invoice_1._onchange_invoice_line_ids() + self.invoice_1.action_invoice_open() + self.statement_1.statement_update() + self.assertEqual(len(self.statement_1.line_ids.ids), 22) + + _25 = self.statement_1.line_ids.filtered(lambda r: r.code == '25') + _26 = self.statement_1.line_ids.filtered(lambda r: r.code == '26') + + self.assertEqual(len(_25), 1) + self.assertEqual(len(_26), 1) + + self.assertFalse(_25.format_base) + self.assertFalse(_25.format_tax) + self.assertTrue(_25.is_group) + self.assertTrue(_25.is_readonly) + + self.assertEqual(_26.format_base, '100.00') + self.assertEqual(_1a.format_btw, '9.50') + self.assertFalse(_26.is_group) + self.assertTrue(_26.is_readonly) + + self.assertEqual(self.statement_1.tax_total, 9.5) + self.assertEqual(self.statement_1.format_tax_total, '9.50') + + def test_10_line_unlink_exception(self): + self.assertEqual(len(self.statement_1.line_ids.ids), 0) + self.assertEqual(self.statement_1.btw_total, 0.) + + self.invoice_1.action_invoice_open() + self.statement_1.statement_update() + self.statement_1.post() + with self.assertRaises(UserError): + self.statement_1.line_ids.unlink() + + self.assertEqual(len(self.statement_1.line_ids.ids), 22) + self.assertEqual(self.statement_1.btw_total, 9.5) + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + self.assertTrue(line.is_readonly) + with self.assertRaises(UserError): + line.unlink() + + def test_11_wizard_execute(self): + wizard = self.Wizard.create({}) + + self.assertEqual(wizard.tag_81_base, self.tag_1) + self.assertEqual(wizard.tag_86_base, self.tag_2) + + wizard.write({ + 'tag_81_base': self.tag_1.id, + 'tag_86_base': self.tag_2.id, + }) + + self.config.unlink() + + wizard_2 = self.Wizard.create({}) + self.assertNotEqual(wizard_2.tag_81_base, self.tag_1) + self.assertNotEqual(wizard_2.tag_86_base, self.tag_2) + + config = self.env['l10n.de.vat.statement.config'].search( + [('company_id', '=', self.env.user.company_id.id)], + limit=1) + self.assertFalse(config) + + wizard.execute() + + config = self.env['l10n.de.vat.statement.config'].search( + [('company_id', '=', self.env.user.company_id.id)], + limit=1) + self.assertTrue(config) + self.assertEqual(config.tag_86_base, self.tag_1) + self.assertEqual(config.tag_81_base, self.tag_2) + + self.assertEqual(self.statement_1.tax_total, 0.) + + def test_12_undeclared_invoice(self): + self.invoice_1._onchange_invoice_line_ids() + self.invoice_1.action_invoice_open() + self.invoice_1.move_id.add_move_in_statement() + for line in self.invoice_1.move_id.line_ids: + self.assertTrue(line.l10n_de_vat_statement_include) + self.invoice_1.move_id.unlink_move_from_statement() + for line in self.invoice_1.move_id.line_ids: + self.assertFalse(line.l10n_de_vat_statement_include) + + self.statement_1.statement_update() + self.assertEqual(len(self.statement_1.line_ids.ids), 22) + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + self.statement_1.post() + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + + invoice2 = self.invoice_1.copy() + invoice2._onchange_invoice_line_ids() + invoice2.action_invoice_open() + statement2 = self.env['l10n.de.vat.statement'].create({ + 'name': 'Statement 2', + }) + statement2.statement_update() + statement2.unreported_move_from_date = fields.Date.today() + statement2.onchange_unreported_move_from_date() + self.assertFalse(statement2.unreported_move_ids) + + self.assertEqual(self.statement_1.tax_total, 9.5) + self.assertEqual(self.statement_1.format_tax_total, '9.50') + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + self.assertTrue(line.is_readonly) + + def test_13_no_previous_statement_posted(self): + statement2 = self.env['l10n.de.vat.statement'].create({ + 'name': 'Statement 2', + }) + statement2.statement_update() + with self.assertRaises(UserError): + statement2.post() + + self.assertEqual(self.statement_1.tax_total, 0.) + self.assertEqual(self.statement_1.format_tax_total, '0.00') + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + self.assertFalse(line.is_readonly) + + @at_install(False) + @post_install(True) + def test_14_is_invoice_basis(self): + company = self.statement_1.company_id + has_invoice_basis = self.env['ir.model.fields'].sudo().search_count([ + ('model', '=', 'res.company'), + ('name', '=', 'l10n_de_tax_invoice_basis') + ]) + if has_invoice_basis: + company.l10n_de_tax_invoice_basis = True + self.statement_1._compute_is_invoice_basis() + self.assertTrue(self.statement_1.is_invoice_basis) + company.l10n_de_tax_invoice_basis = False + self.statement_1._compute_is_invoice_basis() + self.assertFalse(self.statement_1.is_invoice_basis) + + self.assertEqual(self.statement_1.tax_total, 0.) + self.assertEqual(self.statement_1.format_tax_total, '0.00') + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + self.assertTrue(line.is_readonly) + + @at_install(False) + @post_install(True) + def test_15_invoice_basis_undeclared_invoice(self): + self.invoice_1._onchange_invoice_line_ids() + self.invoice_1.action_invoice_open() + self.statement_1.statement_update() + self.assertEqual(len(self.statement_1.line_ids.ids), 22) + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + + self.statement_1.with_context( + skip_check_config_tag_66_base=True + ).post() + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + + has_invoice_basis = self.env['ir.model.fields'].sudo().search_count([ + ('model', '=', 'res.company'), + ('name', '=', 'l10n_de_tax_invoice_basis') + ]) + if has_invoice_basis: + + self.statement_1.company_id.l10n_de_tax_invoice_basis = True + self.statement_1.company_id.country_id = self.env.ref('base.de') + + invoice2 = self.invoice_1.copy() + d_date = fields.Date.from_string('2016-07-07') + d_date = d_date + relativedelta(months=-4, day=1) + old_date = fields.Date.to_string(d_date) + invoice2.date_invoice = old_date + invoice2.action_invoice_open() + + statement2 = self.env['l10n.de.vat.statement'].create({ + 'name': 'Statement 2', + }) + statement2.unreported_move_from_date = '2015-07-07' + statement2.onchange_unreported_move_from_date() + statement2.statement_update() + statement2.with_context( + skip_check_config_tag_66_base=True + ).post() + + self.assertTrue(statement2.unreported_move_ids) + self.assertEqual(len(statement2.unreported_move_ids), 1) + + self.assertEqual(self.statement_1.btw_total, 9.5) + self.assertEqual(self.statement_1.format_btw_total, '9.50') + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + self.assertTrue(line.is_readonly) + + @at_install(False) + @post_install(True) + def test_16_is_not_invoice_unreported_move_from_date(self): + self.invoice_1._onchange_invoice_line_ids() + self.invoice_1.action_invoice_open() + self.statement_1.statement_update() + self.assertEqual(len(self.statement_1.line_ids.ids), 22) + self.statement_1.is_invoice_basis = False + self.statement_1.with_context( + skip_check_config_tag_66_base=True + ).post() + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + + self.statement_1.company_id.l10n_de_tax_invoice_basis = False + self.statement_1.company_id.country_id = self.env.ref('base.de') + + invoice2 = self.invoice_1.copy() + d_date = fields.Date.from_string('2016-07-07') + d_date = d_date + relativedelta(months=-4, day=1) + old_date = fields.Date.to_string(d_date) + invoice2.date_invoice = old_date + invoice2.action_invoice_open() + + statement2 = self.env['l10n.de.statement'].create({ + 'name': 'Statement 2', + }) + statement2.unreported_move_from_date = '2015-07-07' + statement2.onchange_unreported_move_from_date() + statement2.statement_update() + statement2.with_context( + skip_check_config_tag_66_base=True + ).post() + + self.assertTrue(statement2.unreported_move_ids) + self.assertEqual(len(statement2.unreported_move_ids), 1) + + self.assertEqual(self.statement_1.btw_total, 9.5) + self.assertEqual(self.statement_1.format_btw_total, '9.50') + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + self.assertTrue(line.is_readonly) + + @at_install(False) + @post_install(True) + def test_17_is_not_invoice_basis_undeclared_invoice(self): + self.invoice_1._onchange_invoice_line_ids() + self.invoice_1.action_invoice_open() + self.statement_1.statement_update() + self.assertEqual(len(self.statement_1.line_ids.ids), 22) + self.statement_1.is_invoice_basis = False + self.statement_1.with_context( + skip_check_config_tag_66_base=True + ).post() + + self.statement_1.company_id.l10n_de_tax_invoice_basis = False + self.statement_1.company_id.country_id = self.env.ref('base.de') + + invoice2 = self.invoice_1.copy() + d_date = fields.Date.from_string('2016-07-07') + d_date = d_date + relativedelta(months=-4, day=1) + old_date = fields.Date.to_string(d_date) + invoice2.date_invoice = old_date + invoice2.action_invoice_open() + + statement2 = self.env['l10n.de.vat.statement'].create({ + 'name': 'Statement 2', + }) + statement2.unreported_move_from_date = False + statement2.onchange_unreported_move_from_date() + statement2.statement_update() + statement2.with_context( + skip_check_config_tag_66_base=True + ).post() + + self.assertTrue(statement2.unreported_move_ids) + self.assertEqual(len(statement2.unreported_move_ids), 1) + + self.assertEqual(self.statement_1.btw_total, 9.5) + self.assertEqual(self.statement_1.format_btw_total, '9.50') + + for line in self.statement_1.line_ids: + self.assertTrue(line.view_base_lines()) + self.assertTrue(line.view_tax_lines()) + self.assertTrue(line.is_readonly) + + def test_18_default_config_l10n_de_tags(self): + self._load('l10n_de', 'data', 'account_account_tag.xml') + config = self.env['l10n.de.vat.statement.config'].search([]) + config.unlink() + + path_addon = 'odoo.addons.l10n_de_tax_statement.' + path_file = 'wizard.l10n_de_vat_statement_config_wizard.' + path_class = 'VatStatementConfigWizard.' + method = path_addon + path_file + path_class + '_is_l10n_de_coa' + with patch(method) as my_mock: + my_mock.return_value = True + + wizard = self.Wizard.create({}) + self.assertTrue(wizard) + + def test_19_skip_invoice_basis_domain(self): + self.invoice_1._onchange_invoice_line_ids() + self.invoice_1.with_context( + skip_invoice_basis_domain=True + ).action_invoice_open() + self.statement_1.statement_update() + self.assertEqual(len(self.statement_1.line_ids.ids), 22) \ No newline at end of file diff --git a/l10n_de_tax_statement/views/l10n_de_tax_statement_view.xml b/l10n_de_tax_statement/views/l10n_de_tax_statement_view.xml new file mode 100755 index 000000000..ff5262544 --- /dev/null +++ b/l10n_de_tax_statement/views/l10n_de_tax_statement_view.xml @@ -0,0 +1,140 @@ + + + + + + + l10n.de.tax.statement + +
+
+ +
+ +
+
+