Benutzerdefinierte Berichte

Odoo verfügt über ein leistungsstarkes und benutzerfreundliches Reporting-Framework. Die Engine ermöglicht es Ihnen, neue Berichte zu erstellen, wie z. B. Steuerberichte oder Bilanzen und Gewinn- und Verlustrechnungen mit spezifischen Gruppierungen und Layouts.

Wichtig

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

Um einen neuen Bericht zu erstellen, öffnen Sie die App Buchhaltung und navigieren Sie zu Konfiguration ‣ Buchhaltungsberichte. Von hier aus können Sie entweder einen Hauptbericht oder eine Variante erstellen.

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.

Wenn Sie einen neuen Hauptbericht erstellen, müssen Sie einen Menüeintrag dafür erstellen. Öffnen Sie dazu den Bericht und klicken Sie auf demselben Bericht auf das Symbol (Aktionen), wählen Sie dann Menüeintrag erstellen. Aktualisieren Sie die Seite; der Bericht ist nun unter Buchhaltung ‣ Berichte verfügbar.

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 Hauptbericht über eines der Hauptmenüs der Buchhaltungs-App geöffnet wird, werden alle seine Varianten im Variantenauswahlfeld in der oberen rechten Ecke der Ansicht angezeigt.

Example

Im folgenden Bild ist VAT Report (BE) die Variante des Hauptberichts Generic Tax report.

Berichtszeilen

Nachdem Sie einen Bericht erstellt haben (entweder Stammbericht oder Variante), müssen Sie ihn mit Berichtszeilen füllen. Sie können entweder eine neue Zeile erstellen, indem Sie auf Zeile hinzufügen klicken, oder eine vorhandene Berichtszeile bearbeiten, indem Sie darauf klicken. Alle Berichtszeilen erfordern einen Namen und können optional einen zusätzlichen Code (Ihrer Wahl) haben, wenn Sie deren Wert in Formeln verwenden möchten.

Optionen für Maschinenzeilen.

Ausdrücke

Jede Berichtszeile kann einen oder mehrere Ausdrücke enthalten. Ausdrücke können als Untervariablen betrachtet werden, die von einer Berichtszeile benötigt werden. Um einen Ausdruck zu erstellen, klicken Sie innerhalb einer Berichtszeile auf Zeile hinzufügen.

Beim Erstellen eines Ausdrucks müssen Sie eine Bezeichnung angeben, die zur Referenzierung dieses Ausdrucks verwendet wird. Daher muss sie unter den Ausdrücken jeder Zeile eindeutig sein. Sowohl eine Berechnungsengine als auch eine Formel müssen ebenfalls angegeben werden. Die Engine definiert, wie Ihre Formel(n) und Unterformel(n) interpretiert werden. Bei Bedarf können Sie unter derselben Zeile Ausdrücke mit unterschiedlichen Berechnungsengines kombinieren.

Bemerkung

Je nach Maschine können auch Unterformeln erforderlich sein.

‚Odoo Domain‘-Engine

Bei dieser Engine wird eine Formel als Odoo-Domain 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

Das Ergebnis ist die Anzahl der Unterzeilen dieses Ausdrucks. Wenn die Berichtszeile einen Gruppierungswert hat, entspricht dies der Anzahl unterschiedlicher Gruppierungsschlüssel in den übereinstimmenden Buchungszeilen. Andernfalls entspricht es der Anzahl der übereinstimmenden Buchungszeilen.

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

Ausdruckszeile in einem Zeilenbericht

‚Tax Tags‘-Engine

Eine für diese Engine erstellte Formel besteht aus einem Namen, der zum Abgleich von Steuerkennzeichen verwendet wird. Falls solche Kennzeichen beim Erstellen des Ausdrucks nicht existieren, 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 Engine die Steuerkennzeichen +tag_name und -tag_name ab und erstellt sie bei Bedarf. Um dies weiter zu veranschaulichen: Zwei Kennzeichen werden von der Formel abgeglichen. Wenn die Formel A lautet, werden die Kennzeichen +A und -A benötigt (und bei Bedarf erstellt).

‚Aggregate Other Formulas‘-Engine

Verwenden Sie diese Engine, wenn Sie arithmetische Operationen mit den für andere Ausdrücke erhaltenen Beträgen durchführen müssen. Formeln bestehen hier aus Referenzen auf Ausdrücke, die durch einen der vier grundlegenden arithmetischen Operatoren (Addition +, Subtraktion -, Division / und Multiplikation *) getrennt sind. Um auf einen Ausdruck zu verweisen, geben Sie den Code der Berichtszeile gefolgt von einem Punkt . und der Bezeichnung des Ausdrucks ein (z. B. 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.

cross_report(xml_id | report_id)

Wird verwendet, um einen Ausdruck aus einem anderen Bericht abzugleichen, auf den die xml_id oder die Berichts-ID selbst verweist.

‚Prefix of Account Codes‘-Engine

Diese Engine wird verwendet, um Beträge auf Konten abzugleichen, indem die Präfixe der Kontencodes 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 zugeordnete Kennzeichen dasjenige mit der ID 25 enthalten.

Wenn das von Ihnen referenzierte Kennzeichen 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.

‚External Value‘-Engine

Die ‚External Value‘-Engine wird verwendet, um auf manuelle und Vortragswerte zu verweisen. Diese Werte werden nicht mit account.move.line gespeichert, sondern mit account.report.external.value. Jedes dieser Objekte verweist direkt auf den Ausdruck, den es beeinflusst, sodass hier nur wenig für deren 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 kombiniert.

Engine „Custom Python Function“ (Benutzerdefinierte Python-Funktion)

Dieser Engine ermöglicht es Entwicklern, benutzerdefinierte Berechnungen von Ausdrücken fallweise einzuführen. Die Formel ist der Name einer aufzurufenden Python-Funktion, und die Unterformel ist ein Schlüssel, der aus dem von dieser Funktion zurückgegebenen Wörterbuch abgerufen werden soll. Verwenden Sie dies nur, wenn Sie ein eigenes benutzerdefiniertes 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.

Zeilengruppierung

Eine nicht standardmäßige Gruppierung ist möglich, indem Sie Felder zum Modell Journalbuchung hinzufügen oder vorhandene Felder verwenden, vorausgesetzt, sie sind miteinander verknüpft und nicht gespeichert.

Bemerkung

Für die Gruppierung von Zeilen muss der Bericht explizite Berichtszeilen enthalten, die bearbeitet werden können. Die zurückgestellten Berichte unterstützen beispielsweise keine Gruppierung von Zeilen, da sie dynamische Zeilen verwenden, die generiert werden.

Neues Feld in Journalbuchung erstellen

Um ein nicht gespeichertes, verwandtes Feld im Modell Journalbuchung zu erstellen, gehen Sie zunächst zu Buchhaltung ‣ Journalbuchungen, klicken Sie auf das Symbol (Fehler) und dann auf Felder. Klicken Sie auf Neu, um ein neues Feld zu erstellen, und füllen Sie die folgenden Felder aus:

  • Feldname: ein technischer Name für das Feld

  • Feldbezeichnung: die Bezeichnung, die für das Feld angezeigt werden soll

  • Feldtyp: der Typ des Feldes, auf das dieses verwandte Feld verweisen soll

  • Gespeichert: Lassen Sie dieses Feld deaktiviert, da nur nicht gespeicherte Felder für die Zeilengrupierung verwendet werden können.

  • Zugehöriges Modell: Wenn der Feldtyp one2many, many2many oder many2one ist, wählen Sie das Modell des ursprünglichen Feldes aus, nach dem gruppiert werden soll.

  • Definition des Bezugsfelds: der technische Pfad zu dem Feld, nach dem Sie gruppieren möchten

    Example

    Um nach dem Verkaufsteam des Geschäftspartners zu gruppieren, setzen Sie die Definition des zugehörigen Feldes auf move_id.team_id.

Zeilen gruppieren

Um Zeilen zu gruppieren, wechseln Sie zum Zeilen-Tab des gewünschten Berichts, klicken Sie auf die Zeile, die Sie gruppieren möchten, und bearbeiten Sie das Feld Gruppieren nach. Geben Sie den technischen Namen (Feldname) des Felds ein, das als Gruppierungsschlüssel verwendet werden soll.

Tipp

Eine Liste aller Felder des Modells und ihrer technischen Namen finden Sie unter Buchhaltung ‣ Journalbuchungen. Klicken Sie dort auf das Symbol (Fehler) und anschließend auf Felder. Der technische Name jedes Feldes ist in der Spalte Feldname aufgeführt.

Benutzerdefinierter Steuerbericht – Einrichtung

Berichtskonfiguration

Tipp

Alle technischen Begriffe und Funktionen der Berichts-Engine von Odoo werden in den vorherigen Abschnitten dieser Seite erläutert. Wir empfehlen dringend, diese Abschnitte zu lesen, bevor Sie einen benutzerdefinierten Steuerbericht einrichten.

Um einen benutzerdefinierten Steuerbericht zu erstellen, öffnen Sie die App Buchhaltung, navigieren Sie zu Konfiguration ‣ Buchhaltungsberichte und klicken Sie dann auf Neu:

  • Geben Sie einen Namen für Ihren Bericht ein.

  • Wählen Sie einen Root-Bericht.

  • Wählen Sie unter dem Feld Verfügbarkeit die Option Land stimmt überein und wählen Sie dann das Land, das zu Ihrem Unternehmen passt.

Erstellen Sie als Nächstes eine Berichtszeile, indem Sie auf Zeile hinzufügen klicken. Klicken Sie nach dem Erstellen auf diese Berichtszeile, um sie zu konfigurieren:

  • Klicken Sie erneut auf Zeile hinzufügen, um einen Ausdruck zu erstellen und zu benennen.

  • Wählen Sie im Tab Definition eine Berechnungs-Engine für diesen Ausdruck, abhängig von den folgenden Szenarien:

In diesem Szenario verwendet Ihr Unternehmen Steuerraster:

  • Wählen Sie Steuer-Tags als Berechnungs-Engine. Odoo verwendet dieses Feld, um die Berichtszeile mit Ihren Steuern zu verknüpfen.

  • Geben Sie im Feld Formel Ihre kurze Rasterkennung ein (z. B. vat_sales_base). Odoo generiert automatisch die Varianten + und - dieses Tags für Sie, die Sie unter Konfiguration ‣ Steuern zuordnen können.

  • Geben Sie im Feld Unterformel entweder base ein, um den unversteuerten Betrag zu melden, oder tax, um den tatsächlich eingezogenen/gezahlten Steuerbetrag zu melden.

Wiederholen Sie diesen Vorgang nach Bedarf. Klicken Sie dann auf Speichern & Schließen.

Alternativ können Sie:

  • Wählen Sie Aggregate Other Formulas als Berechnungs-Engine. Odoo verwendet dieses Feld, um Berechnungen mit Zeilen durchzuführen, die bereits im Bericht vorhanden sind, anstatt Rohtransaktionen zu durchsuchen.

  • Verwenden Sie im Feld Formula einfache Algebra unter Verwendung Ihrer Zeilencodes (z. B. LINE_10 - LINE_20).

Wiederholen Sie diesen Vorgang nach Bedarf. Klicken Sie dann auf Speichern & Schließen.

Füllen Sie im Reiter Options eines Ausdrucks das Feld Carry Over To mit einer Formel aus, um Salden immer zu übertragen oder sie nur zu übertragen, wenn der Betrag negativ ist. Lassen Sie dieses Feld leer, wenn Sie diese Funktion nicht verwenden möchten.

Example

if_below(EUR(0))
Diese Formel überträgt nur Beträge unter 0,00 EUR.

Steuerkonfiguration

Gehen Sie als Nächstes zu Konfiguration ‣ Steuern und klicken Sie auf Neu, um neue Steuern zu konfigurieren für Ihren benutzerdefinierten Steuerbericht. Erstellen Sie Ihre Verkaufs- und **Einkaufs**steuern und füllen Sie die Steuerraster für alle Steuern unter Verwendung der zuvor erstellten passenden Steuerraster aus. Stellen Sie abschließend sicher, dass Sie für jede Steuer sowohl ein Steuerschuldkonto als auch ein Steuerforderungskonto angeben.

Example

Konfiguration der Steuerraster.

Abschlussbuchung

Um Steuern abzuschließen, muss für jede in Ihrem benutzerdefinierten Steuerbericht verwendete Steuer eine Steuergruppe angegeben werden. Öffnen Sie dazu die Buchhaltung-App, navigieren Sie zu Konfiguration ‣ Steuern, öffnen Sie eine Steuer, die eine Steuergruppe benötigt, klicken Sie auf den Reiter Erweiterte Optionen und wählen Sie eine Gruppe im Feld Steuergruppe aus. Sobald zugewiesen, klicken Sie auf das (Pfeil nach rechts)-Symbol und legen sowohl ein Steuerschuldkonto als auch ein Steuerforderungskonto fest.

Tipp

  • Wenn alles eingerichtet ist, testen Sie Ihren Bericht, indem Sie Rechnungen, Lieferantenrechnungen und Gutschriften unter Verwendung der für diesen Bericht spezifischen Steuern erstellen. Testen Sie abschließend die Abschlussbuchung selbst.

  • Wenn Sie ein bestimmtes Konto in der Steuerabschlussbuchung ausblenden möchten, gehen Sie zu Konfiguration ‣ Steuern, wählen Sie die Steuer aus und klicken Sie auf das (Einstellungen anpassen)-Symbol. Aktivieren Sie dort das Kontrollkästchen Steuerabschlussbuchung, um die Sichtbarkeit anzupassen.

Siehe auch

Steuerabschluss