Benutzerdefinierte Berichte

Odoo verfügt über ein leistungsstarkes und benutzerfreundliches Framework für das Berichtswesen. Die Maschine ermöglicht es Ihnen, neue Berichte zu erstellen, wie z. B. Steuerberichte oder Bilanzen und Erfolgsrechnung mit spezifischen Gruppierungen und Layouts.

Wichtig

Aktivieren Sie den Entwicklermodus, um auf die Schnittstelle zur Erstellung von Buchhaltungsberichten zuzugreifen.

To create a new report, open the Accounting app and navigate to Configuration ‣ Accounting Reports. From here, you can either create a root report or a variant.

Stammberichte

Stammberichte können als allgemeine, neutrale Buchhaltungsberichte betrachtet werden. Sie dienen als Vorlage, auf der lokale Buchhaltungsversionen aufgebaut werden. Wenn ein Bericht keinen Stammbericht hat, wird er selbst als Stammbericht betrachtet.

Example

Steuerberichte für Belgien und die USA würden beide dieselbe generische Version als Grundlage verwenden und sie an ihre nationalen Vorschriften anpassen.

When creating a new root report, you need to create a menu item for it. To do so, open the report and, on that same report, click the (Actions) icon, then select Create Menu Item. Refresh the page; the report is now available under Accounting ‣ Reporting.

Bemerkung

Fälle, die die Erstellung eines neuen Stammberichts erfordern, sind selten, z. B. wenn die Steuerbehörden eines Landes eine neue und spezielle Art von Bericht verlangen.

Varianten

Varianten sind länderspezifische Versionen von Stammberichten und beziehen sich daher immer auf einen Stammbericht. Um eine Variante zu erstellen, wählen Sie bei der Erstellung eines neuen Berichts im Feld Stammbericht einen generischen (Stamm-)Bericht aus.

Wenn ein Stammbericht aus einem der Hauptmenüs der Buchhaltungsapp geöffnet wird, werden alle seine Varianten in der Variantenauswahl in der oberen rechten Ecke der Ansicht angezeigt.

Example

Im folgenden Bild ist der MwSt.-Bericht (BE) die Variante des Stammberichts Generischer MwSt.-Steuerbericht.

Report lines

After having created a report (either root or variant), you need to fill it with report lines. You can either create a new one by clicking on Add a line, or modify an existing report line by clicking on it. All report lines require a Name, and can have an optional additional Code (of your choice) if you wish to use their value in formulas.

Optionen für Maschinenzeilen.

Ausdrücke

Each report line can contain one or multiple expressions. Expressions can be seen as sub-variables needed by a report line. To create an expression, click on Add a line within a report line.

When creating an expression, you must attribute a Label used to refer to that expression. Therefore, it has to be unique among the expressions of each line. Both a Computation Engine and a Formula must also be indicated. The engine defines how your formula(s) and subformula(s) are interpreted. It is possible to mix expressions using different computation engines under the same line if you need to.

Bemerkung

Je nach Maschine können auch Unterformeln erforderlich sein.

Maschine ‚Odoo Bereich‘

Mit dieser Maschine wird eine Formel als Odoo-Bereich interpretiert, die auf account.move.line-Objekte abzielt.

Mit der Unterformel können Sie festlegen, wie die Buchungszeilen, die dem Bereich entsprechen, zur Berechnung des Wertes des Ausdrucks verwendet werden:

sum

Das Ergebnis ist die Summe aller Salden der übereinstimmenden Buchungszeilen.

sum_if_pos

Das Ergebnis ist die Summe aller Salden der übereinstimmenden Buchungszeilen, wenn dieser Betrag positiv ist. Andernfalls ist es 0.

sum_if_neg

Das Ergebnis ist die Summe aller Salden der übereinstimmenden Buchungszeilen, wenn dieser Betrag negativ ist. Andernfalls ist es 0.

count_rows

The result is the number of sub-lines of this expression. If the report line has a group-by value, this will correspond to the number of distinct grouping keys in the matched move lines. Otherwise, it will be the number of matched move lines.

Sie können auch ein --Zeichen an den Anfang der Unterformel setzen, um das Vorzeichen des Ergebnisses umzukehren.

Ausdruckszeile in einem Zeilenbericht

Maschine „Steuerstichwörter“

Eine für diese Maschine erstellte Formel besteht aus einem Namen, der für den Abgleich von Steuerstichwörtern verwendet wird. Wenn solche Stichwörter bei der Erstellung des Ausdrucks nicht vorhanden sind, werden sie erstellt.

Bei der Auswertung des Ausdrucks kann die Ausdrucksberechnung grob wie folgt ausgedrückt werden: (Anzahl der Buchungszeilen mit + Stichwort) - (Anzahl der Buchungszeilen mit - Stichwort).

Example

Wenn die Formel Tag_name lautet, gleicht die Maschine die Steuerstichwörter +Tag_name und -tag_name ab und erstellt sie, falls erforderlich. Um ein weiteres Beispiel zu geben: Zwei Stichwörter werden durch die Formel abgeglichen. Wenn die Formel A lautet, werden die Stichwörter +A und -A benötigt (und bei Bedarf erstellt).

Maschine „Andere Formeln zusammenführen“

Use this engine when you need to perform arithmetic operations on the amounts obtained for other expressions. Formulas here are composed of references to expressions separated by one of the four basic arithmetic operators (addition +, subtraction -, division /, and multiplication *). To refer to an expression, type in its report line’s code followed by a period . and the expression’s label (ex. code.label).

Unterformeln können folgende sein:

if_above(CUR(amount))

Der Wert des arithmetischen Ausdrucks wird nur zurückgegeben, wenn er größer als die angegebene Grenze ist. Andernfalls ist das Ergebnis 0.

if_below(CUR(amount))

Der Wert des arithmetischen Ausdrucks wird nur zurückgegeben, wenn er kleiner als die angegebene Grenze ist. Andernfalls ist das Ergebnis 0.

if_between(CUR1(amount1), CUR2(amount2))

Der Wert des arithmetischen Ausdrucks wird nur zurückgegeben, wenn er genau zwischen den angegebenen Grenzen liegt. Andernfalls wird der Wert auf die nächstgelegene Grenze zurückgesetzt.

if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

Der Wert des arithmetischen Ausdrucks wird nur dann zurückgegeben, wenn der Wert des durch den angegebenen Zeilencode bezeichneten Ausdrucks und die Bezeichnung des Ausdrucks größer ist als die angegebene Grenze. Andernfalls ist das Ergebnis 0.

if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

Der Wert des arithmetischen Ausdrucks wird nur dann zurückgegeben, wenn der Wert des durch den angegebenen Zeilencode bezeichneten Ausdrucks und die Bezeichnung des Ausdrucks kleiner ist als die angegebene Grenze. Andernfalls ist das Ergebnis 0.

CUR ist der Währungscode in Großbuchstaben, und Betrag ist der in dieser Währung ausgedrückte Betrag der Grenze.

Sie können auch die Unterformel cross_report verwenden, um einen Ausdruck in einem anderen Bericht zu finden.

Maschine „Präfix der Kontocodes“

Diese Maschine wird verwendet, um Beträge auf Konten abzugleichen, indem die Präfixe der Codes dieser Konten als Variablen in einem arithmetischen Ausdruck verwendet werden.

Example

21
Arithmetische Ausdrücke können auch aus einem einzelnen Präfix bestehen, wie hier.

Example

21 + 10 - 5
Diese Formel addiert die Salden der Buchungszeilen auf Konten, deren Codes mit 21 und 10 beginnen, und subtrahiert den Saldo derjenigen auf Konten mit dem Präfix 5.

Es ist auch möglich, eine Auswahl von Unterpräfixen zu ignorieren.

Example

21 + 10\(101, 102) - 5\(57)
Diese Formel funktioniert genauso wie das vorherige Beispiel, ignoriert aber die Präfixe 101, 102 und 57.

Sie können mit den Suffixen C und D eine „Unterfilterung“ auf Gutschriften und Lastschriften anwenden. In diesem Fall wird ein Konto nur dann berücksichtigt, wenn sein Präfix übereinstimmt und wenn der Gesamtsaldo der Buchungszeilen auf diesem Konto Haben/Soll ist.

Example

Das Konto 210001 hat einen Saldo von -42 und das Konto 210002 hat einen Saldo von 25. Die Formel 21D passt nur auf das Konto 210002 und liefert daher 25. Das Konto 210001 wird nicht abgeglichen, da sein Saldo im Haben ist.

Präfix-Ausschlüsse können mit den Suffixen C und D gemischt werden.

Example

21D + 10\(101, 102)C - 5\(57)
Diese Formel addiert die Salden der Buchungszeilen auf Konten, deren Code mit 21 beginnt, wenn es sich um ein Soll (D) handelt, und 10, wenn es sich um ein Haben (C) handelt, ignoriert aber die Präfixe 101, 102 und subtrahiert den Saldo derjenigen auf Konten mit dem Präfix 5, wobei das Präfix 57 ignoriert wird.

Um den Buchstaben C oder D in einem Präfix zu finden und ihn nicht als Suffix zu verwenden, verwenden Sie einen leeren Ausschluss ().

Example

21D\()
Diese Formel stimmt mit Konten überein, deren Code mit 21D beginnt, unabhängig vom Vorzeichen des Saldos.

Sie können nicht nur Code-Präfixe verwenden, um Konten einzuschließen, sondern diese auch mit Konto-Stichwörtern abgleichen. Dies ist zum Beispiel besonders nützlich, wenn es in Ihrem Land keinen standardisierten Kontenplan gibt und dasselbe Präfix in verschiedenen Unternehmen für unterschiedliche Zwecke verwendet werden könnte.

Example

tag(25)
Diese Formel gleicht Konten ab, deren zugehörige Stichwörter das Stichwort mit der ID 25 enthalten.

Wenn das Stichwort, auf das Sie verweisen, in einer Datendatei definiert ist, kann anstelle der ID eine xmlid verwendet werden.

Example

tag(my_module.my_tag)
Diese Formel gleicht Konten ab, deren zugehörige Stichwörter das Stichwort **my_module.my_tag* enthalten.

Sie können auch arithmetische Ausdrücke mit Stichwörtern verwenden und diese möglicherweise mit Präfixen kombinieren.

Example

tag(my_module.my_tag) + tag(42) + 10
Die Salden der Konten mit dem Stichwort my_module.my_tag werden mit den Salden der Konten summiert, die mit dem Stichwort mit der ID 42 und den Konten mit dem Code-Präfix 10 verbunden sind.

Die Suffixe C und D können genauso mit Stichwörtern verwendet werden.

Example

tag(my_module.my_tag)C
Diese Formel gleicht Konten mit dem Stichwort my_module.my_tag und einem Haben-Saldo ab.

Präfix-Ausschluss funktioniert auch mit Stichwörtern.

Example

tag(my_module.my_tag)\(10)
Diese Formel gleicht Konten mit dem Stichwort my_module.my_tag und einem Code der mit 10 beginnt.

Maschine „Externer Wert“

Die Maschine „Externer Wert“ wird verwendet, um sich auf manuelle und Übertragswerte zu beziehen. Diese Werte werden nicht mit account.move.line, sondern mit account.report.external.value gespeichert. Jedes dieser Objekte verweist direkt auf den Ausdruck, auf den es sich auswirkt, sodass hier nur sehr wenig für die Auswahl getan werden muss.

Formeln können folgende sein:

sum

Wenn das Ergebnis die Summe aller externen Werte in der Periode sein muss.

most_recent

Wenn das Ergebnis der Wert des letzten externen Wertes in der Periode sein muss.

Darüber hinaus können Unterformeln auf zwei Arten verwendet werden:

rounding=X

Wenn Sie X durch eine Zahl ersetzen, wird der Betrag auf X Dezimalstellen gerundet.

editable

Zeigt an, dass dieser Ausdruck manuell bearbeitet werden kann, wodurch ein Symbol im Bericht angezeigt wird, das dem Benutzer die Durchführung dieser Aktion ermöglicht.

Bemerkung

Manuelle Werte werden zum aktuell im Bericht ausgewählten date_to erstellt.

Beide Unterformeln können gemischt werden, indem Sie sie mit einem ; trennen.

Example

editable;rounding=2
ist eine korrekte Unterformel, die beide Verhaltensweisen vermischt.

Maschine „Benutzerdefinierte Python-Funktion“

Diese Maschine bietet Entwicklern die Möglichkeit, von Fall zu Fall benutzerdefinierte Berechnungen von Ausdrücken einzuführen. Die Formel ist der Name einer Python-Funktion, die aufgerufen werden soll, und die Unterformel ist ein Schlüssel, der aus dem Verzeichnis geholt werden soll, das von dieser Funktion zurückgegeben wird. Verwenden Sie diese Funktion nur, wenn Sie ein eigenes Modul erstellen.

Spalten

Berichte können eine unbegrenzte Anzahl von Spalten enthalten. Jede Spalte erhält ihre Werte aus den Ausdrücken, die in den Zeilen angegeben sind. Das Feld expression_label der Spalte gibt die Bezeichnung der Ausdrücke an, deren Wert angezeigt wird. Wenn eine Zeile keinen Ausdruck in diesem Feld hat, wird für sie in dieser Spalte nichts angezeigt. Wenn mehrere Spalten erforderlich sind, müssen Sie verschiedene Ausdrucksbezeichnungen verwenden.

Spalten eines Berichts.

Wenn Sie die Funktion Periodenvergleich im Reiter Optionen eines Buchhaltungsberichts verwenden, werden alle Spalten in jeder und für jede Periode wiederholt.

Custom tax report setup

Report configuration

Tipp

All technical terms and functions of Odoo’s reports engine are explained in the previous sections of this page. We strongly recommend reading these sections before setting up a custom tax report.

To create a custom tax report, open the Accounting app, navigate to Configuration ‣ Accounting Reports, then click New:

  • Enter a name for your report.

  • Select a Root Report.

  • Under the Availability field, select Country Matches, then select the Country matching your company.

Next, create a report line by clicking the Add a line. Once created, click that report line to configure it:

  • Click Add a line again to create an Expression and name it.

  • In the Definition tab, select a Computation Engine for that expression depending on the following scenarios:

In this scenario, your company uses tax grids:

  • Select Tax Tags as the computation engine. Odoo uses this field to link the report line to your taxes.

  • In the Formula field, type your short grid identifier (e.g., vat_sales_base). Odoo automatically generates the + and - variants of this tag for you to map inside Configuration ‣ Taxes.

  • In the Subformula field, enter either base to report the untaxed amount, or tax to report the actual tax amount collected/paid.

Repeat this process as necessary. Then, Save & Close.

Alternatively, you can:

  • Select Aggregate Other Formulas as the computation engine. Odoo uses this field to perform math on lines already present in the report rather than scanning raw transactions.

  • In the Formula field, use basic algebra referencing your line codes (e.g., LINE_10 - LINE_20).

Repeat this process as necessary. Then, Save & Close.

In the Options tab of an Expression, populate the Carry Over To field with a formula to always carry over balances or only carry them over when the amount is negative. Leave this field blank if you do not want to use this feature.

Example

if_below(EUR(0))
This formula will only carry over amounts below 0.00 EUR.

Tax configuration

Next, go to Configuration ‣ Taxes and click New to create and configure new taxes for your custom tax report. Create your Sales and Purchases taxes, and populate the Tax Grids for all taxes using the matching tax grids you created earlier. Finally, make sure to specify both a tax payable and tax receivable account for each tax.

Example

Tax grids configuration.

Closing entry

To close taxes, a tax group must be specified on each tax used in your custom tax report. To do this, open the Accounting app, navigate to Configuration ‣ Taxes, open a tax that requires a tax group, click the Advanced Options tab, and select a group in the Tax Group field. Once assigned, click the (right arrow) icon and set both a Tax Payable Account and a Tax Receivable Account.

Tipp

  • When everything has been set up, make sure to test your report by creating invoices, bills, and credit notes using the taxes specific to that report. Finally, test the closing entry itself.

  • If you want to hide a specific account from displaying in the tax closing entry, go to Configuration ‣ Taxes, select the tax, and click the (settings adjust) icon. From there, check the Tax Closing Entry box to adjust its visibility.

Siehe auch

Tax closing