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.
Um einen neuen Bericht zu erstellen, öffnen Sie die Buchhaltung-App und navigieren Sie zu . Von hier aus können Sie entweder einen Stammbericht 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.
Beim Erstellen eines neuen Stammberichts müssen Sie einen Menüeintrag dafür erstellen. Öffnen Sie dazu den Bericht und klicken Sie in diesem Bericht auf das Symbol (Aktionen), dann wählen Sie Menüeintrag erstellen. Aktualisieren Sie die Seite; der Bericht ist jetzt unter 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 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.
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 erstellen, indem Sie auf Zeile hinzufügen klicken, oder eine bestehende Berichtszeile ändern, indem Sie darauf klicken. Alle Berichtszeilen benötigen einen Namen und können einen optionalen zusätzlichen Code (Ihrer Wahl) haben, wenn Sie deren Wert in Formeln verwenden möchten.
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 auf Zeile hinzufügen innerhalb einer Berichtszeile.
Beim Erstellen eines Ausdrucks müssen Sie ein Label zuweisen, das zur Referenzierung dieses Ausdrucks verwendet wird. Daher muss es unter den Ausdrücken jeder Zeile eindeutig sein. Sowohl eine Berechnungs-Engine als auch eine Formel müssen ebenfalls angegeben werden. Die Engine definiert, wie Ihre Formel(n) und Unterformel(n) interpretiert werden. Es ist möglich, Ausdrücke mit unterschiedlichen Berechnungs-Engines unter derselben Zeile zu kombinieren, falls erforderlich.
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:
sumDas Ergebnis ist die Summe aller Salden der übereinstimmenden Buchungszeilen.
sum_if_posDas Ergebnis ist die Summe aller Salden der übereinstimmenden Buchungszeilen, wenn dieser Betrag positiv ist. Andernfalls ist es
0.sum_if_negDas Ergebnis ist die Summe aller Salden der übereinstimmenden Buchungszeilen, wenn dieser Betrag negativ ist. Andernfalls ist es
0.count_rowsDas Ergebnis ist die Anzahl der Unterzeilen dieses Ausdrucks. Wenn die Berichtszeile einen Gruppierungswert hat, entspricht dies der Anzahl der unterschiedlichen Gruppierungsschlüssel in den übereinstimmenden Buchungszeilen. Andernfalls ist es die Anzahl der übereinstimmenden Buchungszeilen.
Sie können auch ein --Zeichen an den Anfang der Unterformel setzen, um das Vorzeichen des Ergebnisses umzukehren.
Maschine „Andere Formeln zusammenführen“¶
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 Verweisen 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 dem Label 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.
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
21Example
21 + 10 - 521 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)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)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\()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)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)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) + 1010 verbunden sind.Die Suffixe C und D können genauso mit Stichwörtern verwendet werden.
Example
tag(my_module.my_tag)CPräfix-Ausschluss funktioniert auch mit Stichwörtern.
Example
tag(my_module.my_tag)\(10)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:
sumWenn das Ergebnis die Summe aller externen Werte in der Periode sein muss.
most_recentWenn 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=XWenn Sie
Xdurch eine Zahl ersetzen, wird der Betrag auf X Dezimalstellen gerundet.editableZeigt 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=2Maschine „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.
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 , 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, gehen Sie zum Tab Zeilen 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 . Klicken Sie dort auf das Symbol (Fehler) und anschließend auf Felder. Der technische Name jedes Feldes ist in der Spalte Feldname aufgeführt.
Einrichtung eines benutzerdefinierten Steuerberichts¶
Berichtskonfiguration¶
Tipp
Alle technischen Begriffe und Funktionen der Berichts-Engine von Odoo werden in den vorherigen Abschnitten dieser Seite erklärt. Wir empfehlen dringend, diese Abschnitte zu lesen, bevor Sie einen benutzerdefinierten Steuerbericht einrichten.
Um einen benutzerdefinierten Steuerbericht zu erstellen, öffnen Sie die Buchhaltung-App, navigieren Sie zu und klicken Sie dann auf Neu:
Geben Sie einen Namen für Ihren Bericht ein.
Wählen Sie einen Stammbericht.
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 der Erstellung 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 Reiter Definition je nach folgendem Szenario eine Berechnungs-Engine für diesen Ausdruck:
In diesem Szenario verwendet Ihr Unternehmen Steuergitter:
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 Gitterkennung ein (z. B.
vat_sales_base). Odoo generiert automatisch die+- und--Varianten dieses Tags, die Sie unter zuordnen können.Geben Sie im Feld Unterformel entweder
baseein, um den Nettobetrag zu melden, odertax, um den tatsächlich eingezogenen/gezahlten Steuerbetrag zu melden.
Wiederholen Sie diesen Vorgang nach Bedarf. Klicken Sie anschließend auf Speichern & Schließen.
Alternativ können Sie:
Andere Formeln aggregieren als Berechnungs-Engine wählen. Odoo verwendet dieses Feld, um Berechnungen mit Zeilen durchzuführen, die bereits im Bericht vorhanden sind, anstatt Rohtransaktionen zu durchsuchen.
Verwenden Sie im Feld Formel einfache Algebra unter Bezugnahme auf Ihre Zeilencodes (z. B.
LINE_10 - LINE_20).
Wiederholen Sie diesen Vorgang nach Bedarf. Klicken Sie anschließend auf Speichern & Schließen.
In diesem Szenario verwendet Ihr Unternehmen keine Steuergitter. Stattdessen wird alles strikt über Hauptbuchkonten erfasst:
Wählen Sie Präfix von Kontocodes als Berechnungs-Engine: Odoo verwendet dies für Zeilen, die Finanzsummen abrufen müssen. Anstatt nach Transaktions-Tags zu suchen, ruft Odoo Live-Salden direkt aus Ihrem Kontenplan ab.
Geben Sie im Feld Formel die Anfangsziffern der Konten ein, die Sie verfolgen möchten (z. B. ruft
40die kombinierte Summe aller Ertragskonten ab, die mit400000,401000usw. beginnen).
Wiederholen Sie diesen Vorgang nach Bedarf. Klicken Sie anschließend auf Speichern & Schließen.
Alternativ können Sie:
Wählen Sie Andere Formeln aggregieren als Berechnungs-Engine. Odoo verwendet dies, um Zwischensummen, Nettosteuern oder Gesamtsummen zu berechnen, indem Ihre anderen Berichtszeilen addiert oder subtrahiert werden.
Verwenden Sie im Feld Formel einfache Algebra unter Bezugnahme auf Ihre Zeilencodes (z. B.
LINE_10 - LINE_20).
Wiederholen Sie diesen Vorgang nach Bedarf. Klicken Sie anschließend auf Speichern & Schließen.
In diesem Szenario erfordert Ihr Unternehmen erweiterte Filterung, manuelle Benutzerüberschreibungen oder komplexe algorithmische Logik, die Standard-Tags und Kontopräfixe nicht bewältigen können:
Wählen Sie Odoo-Domäne als Berechnungs-Engine: Odoo verwendet dies, um Steuer-Tags vollständig zu umgehen und rohe Journalbuchungen (
account.move.line) mithilfe der Standard-Odoo-Suchsyntax zu filtern.Geben Sie im Feld Formel eine gültige Domäne ein, die mit eckigen Klammern beginnt, um steuerbefreite Transaktionen für bestimmte Partnerkategorien zu isolieren.
Alternativ können Sie:
Wählen Sie Externer Wert als Berechnungs-Engine. Odoo verwendet dies, um manuelle Überschreibungen oder historische Übertragswerte zu protokollieren.
Geben Sie im Feld Formel entweder
sum(um alle manuellen Werte über Mehrperiodenberichte zusammenzuzählen) odermost_recent(um nur den neuesten Wert anzuzeigen) ein.Geben Sie im Feld Unterformel
editableein, um ein Bearbeitungssymbol im Live-Bericht anzuzeigen, sodass Benutzer den Wert manuell ändern können. Zusätzlich können Sie Zahlen runden, indem Sierounding=xeingeben.
Alternativ können Sie:
Wählen Sie Benutzerdefinierte Python-Funktion als Berechnungs-Engine aus. Odoo verwendet diese als Ausführungs-Engine, um spezifische Berechnungen durch Backend-Codierung auszuführen, wenn Regeln progressive Stufen, Schleifen oder mehrstufige Schwellenwerte beinhalten.
Geben Sie im Feld Formel den exakten technischen Namen der Python-Methode ein, die in Ihrem benutzerdefinierten Lokalisierungsmodul definiert ist.
Wiederholen Sie diesen Vorgang nach Bedarf. Klicken Sie anschließend auf Speichern & Schließen.
Im Reiter Optionen eines Ausdrucks füllen Sie das Feld Übertragen auf mit einer Formel aus, um Salden immer zu übertragen oder nur dann 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))Steuerkonfiguration¶
Gehen Sie als Nächstes zu und klicken Sie auf Neu, um neue Steuern zu erstellen und zu konfigurieren für Ihren benutzerdefinierten Steuerbericht. Erstellen Sie Ihre Verkaufs- und Einkaufs-Steuern und befüllen Sie die Steuerraster für alle Steuern mithilfe der zuvor erstellten passenden Steuerraster. Stellen Sie schließlich sicher, dass Sie sowohl ein Steuerzahlungskonto als auch ein Steuerforderungskonto für jede Steuer angeben.
Example
Abschlussbuchung¶
Um Steuern abzuschließen, muss für jede in Ihrem benutzerdefinierten Steuerbericht verwendete Steuer eine Steuergruppe angegeben werden. Öffnen Sie dazu die App Buchhaltung, navigieren Sie zu , ö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 diese zugewiesen ist, klicken Sie auf das (Pfeil nach rechts)-Symbol und legen sowohl ein Steuerzahlungskonto als auch ein Steuerforderungskonto fest.
Tipp
Wenn alles eingerichtet ist, testen Sie Ihren Bericht, indem Sie Rechnungen, Lieferantenrechnungen und Gutschriften mit den 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 , 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