Finanzbericht (Fenster ID-216)
Finanzberichte
Was ist ein Finanzbericht?
Ein Finanzbericht ist ein druckbarer Bericht, der eine Zusammenfassung (nicht nur) von Finanzdaten enthält. Es kann sich um eine Kontenübersicht, eine Saldenliste, eine Bilanz oder eine Gewinn- und Verlustrechnung handeln. Alle diese Anwendungsfälle werden durch den Generator für Finanzberichte abgehandelt.
Finanzberichte (Fenster Finanzbericht (Fenster ID-216), Seitenkategorie Category:Finanzberichte) werden benutzt, um periodengerechte Werte auszugeben oder nebeneinanderzustellen. Diese erlauben es, in einem ersten Schritt Saldierungen von Konten, Mengen, und dergleichen vorzunehmen und so z.B. Jahres-, Quartals-, Monats-, und Vorjahreswerte nebeneinanderzustellen. Klassische Beispiele sind die Bilanz, die Gewinn- und Verlustrechnung aber auch viele Arten von Umsatz- und Kostenanalysen, die Gruppen von Kunden, Verkaufsmitarbeitern, Produkten, etc. gegenüberstellen.
Der Finanzbericht unterscheidet sich vom normalen Bericht (siehe Statistik und Berichte) dadurch, das keine gewöhnlichen Tabellendaten ausgegeben werden sondern sowohl die Spalten als auch die Zeilen des Berichts einzeln definiert und durch Formeln festgelegt werden können (und müssen).
Sind diese Periodenwerte entsprechend berechnet, bedienen sich die Finanzberichte für Ausgabe und Layout auch dem bekannten internen Berichtsgenerator.
Als Informatiker gesprochen gesagt dienen Finanzberichte als eine Möglichkeit, eine Art Kreuztabellen (ähnleich einer Pivot-Tabelle) zu berechnen. In einem ersten Schritt wird diese Kreuztabelle berechnet. Im zweiten Schritt wird diese dann über den normalen Berichtsgenerator ausgegeben (siehe also dort zur Definition von Druckformaten, Layout, etc. etc.).
Für einen Finanzbericht muss man als erstes die Zeilen und die Spalten definieren, die man ausgeben will. Die entsprechenden Fenster sind Berichtspositionssatz (Fenster ID-218) und Berichtsspaltensatz (Fenster ID-217).
Wie funktioniert das?
Um das genauer zu erklären hole ich etwas aus: Ein Finanzbericht besteht aus Zeilen und Spalten. Die Spalten werden über einen sogenannten Berichtsspaltensatz (siehe Berichtsspaltensatz (Fenster ID-217)) definiert. Das ist ein Satz von Spaltendefinitionen, die z.B. bedeuten, das wir eine Jahressumme, eine Periodensumme, eine Vorjahressumme, etc. im Bericht haben wollen. Die Zeilen des Finanzreports werden über einen Reportpositionssatz definiert. Dort steht drin, welche Zeilen ("Report-Positionen") unser Bericht haben soll und aus welchen Konten er berechnet werden soll. Da steht also sowas wie "Die Zeile soll heissen 'technische Anlagen und Maschinen' und soll die Konten 0400-0599 zusammenfassen." Um nun einen Finanzbericht für die Bilanz zu erzeugen, muss man also zuerst im Berichtspositionssatz (Fenster ID-218) einen neuen Satz anlegen. Diesen kann man dann im Programm per Hand oder direkt aus der CSV-Datei füllen.
Darüber hinaus kann man noch einen Datenwürfel definieren (Das erhöht bei sehr grossen Datenmengen die Performanz, weil es die Daten verdichtet). Ist der Import abgeschlossen, kann man im Fenster Finanzbericht (Fenster ID-216) den fertigen Report aus einer Spaltensatz, einem Positionssatz und einem Report zusammenstellen. Dazu kann man nach der Anzeige des Reports noch das Druckformat anpassen wie üblich.
Definition von Zeilen (Berichtspositionssatz)
Die Zeilendaten benutzen als Basis eine der Buchführungsdimensionen, die in der Tabelle der Buchführungsdaten benutzt werden. Der zur Erklärung einfachste Fall sind Konten. Hier benutzt der Bericht bestimmte Konten, die bekanntlich im Buchführungsschema, d.h. im Kontenplan angegeben werden. Wer der klassischen Installationsanleitung folgt, wird zu Beginn der Installationsanleitung eine Bilanz und eine Gewinn- und Verlustrechnung aus seinem Kontenplan generieren. Man kann aber ebenso auch eigene Berichte definieren.
Ist die "Positionsart" des Zeileneintrags "Segmentwert", so wird der Inhalt des angegebenen Kontos ausgegeben. Ist das angegebene Konto ein Summenkonto, so wird hier die Summe aller Unterkonten als eine Zeile betrachtet (bei der Erzeugung des Berichts im Fenster "Finanzbericht" kann man auswählen, ob die verwendeten Konten auch nochmal einzeln aufgeführt werden sollen).
Die Positionsart "Berechnung" bietet die Möglichkeit, die Werte anderer Zeilen zu addieren oder zu subtrahieren etc.
Wer eine Kommentarzeile oder eine Überschrift erzeugen möchte, kann eine Zeile mit der Art "Berechnung" erzeugen, ohne eine echte Formel anzugeben. Man sollte dazu den Operator auf Addieren setzen und die beiden Operanden-Felder freilassen. (Lässt man den Operator frei, gibt das pro Zeile eine "Störungsmeldung", die im entsprechenden Fenster zu sehen ist und im Swing-Client zu einem unangenehmen "Beep" führt.) Man kannn der aktuellen iDempiere-Version auch komplett freie Zeilen erzeugen mit der Positionsart "Blank Line" (siehe Tips & Tricks).
Import eines Finanzberichtes
Man kann einen Satz von Berichts-Positionen auch aus einer CSV-Datei importieren. Insbesondere ist das interessant, weil man diese Definition direkt in der Datei mit dem Kontenplan abhandeln kann. Hierzu steht etwas mehr auf der Setie zur Einrichtung der Buchhaltung.
andere Berichtsquellen als Konten
Im Register "Berichtsquelle" kann jedoch auch etwas anderes als ein Konto ausgewählt werden. So kann man also anstatt einer Kontenübersicht seine Kunden in einem Baum von Kundengruppen organisieren und dann eine Übersicht über die Umsätze seiner Kundengruppen erzeugen. Grundsätzlich sollte jede dieser Hierarchien es ermöglichen, einen entsprechenden Baum zu definieren.
Für fortgeschrittene Problemstellungen ist es auch möglich, für eine Dimension (z.B. für "Kunden") einen zweiten Baum zu definieren. Jeder Kunde kann dann je nach Berichtsanforderung in jedem Baum woanders einsortiert sein (z.B. ein Baum nach Kundengruppen, ein Baum nach Außendienst und ein Baum nach Bundesländern). Bei der Erzeugung des Berichts (im Fenster "Finanzbericht") wird man unter anderem nach einer Berichtshierarchie gefragt. Eine solche kann man anlegen, um die zu verwendenden Bäume mit unserem Bericht zu verknüpfen.
Tips und Tricks
Wer beim Druck des Finanzberichts mit der Einstellung "Quellen auflisten" einen Kontennachweis der ausgegebenen Zeilen aktiviert, wird in vielen Berichten viel zu viele Daten bekommen. Das Problem ist, das man in hierarchischen Berichten (z.B. der Bilanz) für jede Obersumme alle Konten auflistet und dann für jede Zwischensumme nochmal. Je nach Hierarchieebenen kann so jedes Konto X-mal auf dem Bericht stehen und dieser wird dadurch völlig unbrauchbar. In diesem Fall darf man nicht verzweifeln, sondern kann mit etwas liebevoller Arbeit dafür sorgen, das wirklich nur die Zeilen, von denen man einen Kontennachweis erwartet (das sind die "Blätter" der Baumhierarchie) auf "Segmentwert" gesetzt werden. Die anderen Zeilen werden dann per Formel aus den ersteren erzeugt.
Falls das nicht in einem Schritt geht (die Addition erlaubt immer nur zwei Summanden-Zeilen), muss man eben eine zusätzliche Zeile für ein Zwischenergebnis einfügen. Diese kann man dann mit dem Feld "gedruckt" so einstellen, das sie im Ausdruck nicht erscheint (sie wird aber wohl intern für die Berechnung genutzt).
Wer eine Positionszeile als "Blank line" konfiguriert, kann das Problem bekommen, das zwar in Summenspalten die Zeile ebenfalls frei ist, das aber in Prozentspalten eine "0,00" steht (ich halte das für einen Bug. Man kann das beheben, indem man nach Erzeugung des Berichts in das Druckformat geht und i, Formatelement der entsprechenden Spalte in der Anzeigelogik sowas einträgt wie "@Col_1@!0" (Den Namen der Spalte sieht man im Feld "Spalte"). Dann ist die Freizeile im Ausdruck wirklich frei.
Definition von Spalten (Berichtsspaltensatz)
In den Spalten werden periodenbezogene Werte der Buchungszeilen zusammengeführt. Hier gibt es interessante (und ehrlich gesagt leicht verwirrende) Einstellungsmöglichkeiten.
Art des Betrags
Grundlegend wichtig ist die Spalte "Art des Betrags". Am einfachsten zu verstehen sind hier die Einstellungen "Soll" und "Haben". Diese zählen entsprechend nur Konten zusammen, die auf der einen oder der anderen Seite stehen. Hiermit ist es möglich, diese in zwei Spalten auszugeben, wie das in kaufmännischen Berichten oft gewünscht ist.
Auch einfach ist die Einstellung "gebuchtes Vorzeichen". Hier werden Soll-Buchungen als "+" und Haben-Buchungen als "-" betrachtet und das Ergebnis ausgegeben.
Nun ergibt sich aber z.B. in einer Gewinn- und Verlustrechnung, das auf diese Art das Ergebnis "umgedreht" ist, d.h. ein Gewinn steht dort als Minus-Wert. Da das nicht so schön ist, gibt es die Einstellung "Saldo (erwartetes Vorzeichen)". Diese dreht aber nun das Vorzeichen nicht einfach überall in dieser Spalte um sondern sie erlaubt, das Vorzeichen für jedes einzelne Konto auf die "richtige" Seite zu drehen. Das erlaubt, das im gleichen Bericht (z.B. Bilanz) manche Werte umgedreht werden (Passivbuchungen) und manche nicht (Aktivbuchungen), so das im Ergebnis die Aktiva und Passiva beide positiv sind (was ja auch der kaufmännischen Logik entspricht).
Um das zu erreichen, ist es allerdings immens wichtig, das im Kontenplan bei jedem Konto angegeben ist, was das "erwartete" Vorzeichen ist. Dort kann man die Kontenart und das Kontovorzeichen angeben. Die Grundregel hierzu ist, das alle Unterkonten eines Summenkontos die gleiche Kontenart haben müssen. Ist das nicht so, werden Soll und Haben wild durcheinanderaddiert und nichts stimmt mehr.
Außerdem gibt es die Möglichkeit, bei einzelnen (oder natürlich auch allen) Zeilen das Vorzeichen einfach umzudrehen. Dazu setzt man in der Spalte das Flag "Show Opposite Sign" UND in der Positionszeile das Flag "Show Opposite Sign". Nur, wenn beides in einem Tabellenfeld sich kreuzt, wird das Vorzeichen umgedreht. Wer das bei allen Positionssätzen anhakt, kann so natürlich auch eine ganze Spalte umdrehen, deren Ausrichtung ihm nicht gefällt (z.B. in einer GuV, die sonst einen negativen Gewinn auswirft). Siehe auch: https://wiki.idempiere.org/en/NF8.2_Reverse_Sign_In_Financial_Report_Cell
Spaltenart
Die Spaltenart kann drei Werte haben:
- Buchungsart - wird ausgewertet, wenn in der Berichtsposition nicht festgelegt.
- Segmentwert - Bei der endgültigen Erzeugung des Berichts (im Fenster Finanzbericht) muss man eine Periode angeben. Deren Gesamtwert wird dann verwendet
- relative Periode - Es wird nicht die angegebene Periode verwendet (Periodenart auf "Periode"), sondern z.B. die davor, dahinter, 12 Monate davor oder aber auch das ganze Jahr (Periodenart auf "Jahr") bzw. das Jahr davor. Hiermit sind Vergleiche zwischen verschiedenen Perioden denkbar ("dieses - letztes Jahr", "dieser Monat - ganzes Jahr" etc.). Dies wird nicht ausgewertet, wenn in der Berichtsposition bereits festgelegt wurde, welche Periodenart betrachtet werden soll.
- relative Periode bis - Es werden mehrere Perioden bis zu dieser Periode verwendet, vorausgesetzt 'relative Periode' wurde gesetzt.
- Berechnung - Die Spalte wird von anderen Spalten berechnet. Zum einen kann man hier auch über den Trick, Spalten nicht zu drucken, Ergebnisse über mehrere Rechenschritte zusammenfassen, zum anderen interessant ist hier auch, eine Spalte als Prozentsatz einer bestimmten Zeile auszugeben. So kann man in einer Kostenaufstellung (z.B. auch der Gewinn- und Verlustrechnung) die Kosten in Prozent vom gesamten Verkaufsumsatz angeben.
weitere Hilfe und Dokumentation
Ein sehr schönes (englisches) Tutorial zum Thema ist adempiere:Financial_Report_Writer. Ein anderes Tutorial (das mir nicht so gut gefällt, aber etwas tiefere Informationen hat) gibt es [von Walking Tree].
Beschreibung des Fensters
Fenster: Finanzbericht
Beschreibung: Verwaltung Finanzberichte
Hilfe: Ein "Finanzbericht" ist eine Kombination aus Berichtspaltensatz und Zeilensatz.
TAB: Finanzbericht
Beschreibung: null
Hilfe null
Folgende Felder werden in der Standardmaske angezeigt:
Original Name (englisch) | Name (deutsch) | Beschreibung | Hilfe | Technische Daten |
---|---|---|---|---|
Client | Mandant | Mandant für diese Installation | Ein "Mandant" ist eine Firma oder eine juristische Person. Mandanten können keine Daten teilen/nicht gemeinsam auf Daten zugreifen. | AD_Client_ID numeric(10) NOT NULL Table Direct |
Organization | Organisation | Organisatorische Einheit innerhalb des Mandanten | Eine "Organisation" ist die Geschäftseinheit eines Mandanten oder eine juristische Person, z.B. ein Geschäft oder eine Abteilung. Organisationen können gemeinsam auf Daten zugreifen, bzw. die Daten gemeinsam verwenden. | AD_Org_ID numeric(10) Table Direct |
Accounting Schema | Buchführungsschema | Regeln der Buchführung | Ein "Buchführungsschema" legt grundlegende Buchführungseinstellungen fest, wie z.B. die verwendete Kostenrechnungsart, die Währung und die Buchungsperiode. | C_AcctSchema_ID numeric(10) NOT NULL Table Direct |
Calendar | Kalender | Bezeichnung des Buchführungskalenders | Das Feld "Kalender" zeigt einen Buchführungskalender an. Es können mehrere Kalender verwendet werden. Z. B. können Sie einen Standardkalender definieren, der vom 1. Januar bis zum 31. Dezember und einen fiskalischen, der vom 1. Juli bis zum 30. Juni gilt. | C_Calendar_ID numeric(10) NOT NULL Table Direct |
Name | Name | Alphanumerischer Identifikator des Eintrags | Der "Name" eines Eintrags wird zusätzlich zum Suchschlüssel als Standardsuchoption verwendet. Ein Name kann bis zu 60 Zeichen lang sein. | Name character varying(60) NOT NULL String |
Description | Beschreibung | Optionale Kurzbeschreibung des Datensatzes | Eine Beschreibung ist auf 255 Zeichen begrenzt. | Description character varying(255) String |
Active | Aktiv | Der Datensatz ist im System aktiv | Es gibt zwei Methoden um Datensätze im System zu sperren: Eine Methode ist den Datensatz zu löschen. die andere ist es den Datensatz zu deaktivieren. Ein deaktivierter Datensatz kann nicht mehr ausgewählt werden, steht aber weiterhin in Berichten zur Verfügung. Es gibt zwei Gründe dafür einen Datensatz zu deaktivieren und nicht zu löschen: (1) Das System benötigt den Datensatz für Audits (2) Der Datensatz wird von anderen Datensätzen referenziert. Es ist z.B. nicht möglich einen Geschäftspartner zu löschen, wenn zu diesen Geschäftspartner Rechnungen vorliegen. In diesem Fall wird der Geschäftspartner deaktiviert und kann nicht mehr für zukünftige Vorgänge verwendet werden. | IsActive character(1) NOT NULL Yes-No |
Report Line Set | Berichtspositionssatz | null | null | PA_ReportLineSet_ID numeric(10) NOT NULL Table Direct |
Report Column Set | Berichtsspaltensatz | Zusammenstellung von Spalten für einen Bericht. | Der "Berichtspaltensatz" zeigt die in einem Bericht verwendeten Spalten an. | PA_ReportColumnSet_ID numeric(10) NOT NULL Table Direct |
Report Cube | Report Cube | Legen Sie einen "Report" für die Vorkalkulation der zusammengefassten Buchführungsdaten fest. | Für jede Periode eines gewählten Kalenders werden Datenzusammenfassungen erzeugt. Die Daten werden nach den von Ihnen ausgewählten Dimensionen gruppiert. | PA_ReportCube_ID numeric(10) Table |
Jasper Process | Jasper-Prozess | Der vom Druckmodul verwendete Jasper-Prozess (falls definiert) | null | JasperProcess_ID numeric(10) Table |
List Sources | Quellen auflisten | Quellen von Berichtpositionen anzeigen. | Quellkonten für die gewählte Saldenzusammenfassung anzeigen. | ListSources character(1) NOT NULL Yes-No |
List Transactions | Transaktionen anzeigen | Berichttransaktionen anzeigen. | Transaktionen von Berichtquellpositionen auflisten | ListTrx character(1) NOT NULL Yes-No |
Create Report | Bericht erstellen | Finanzbericht erstellen | Standard ist die aktuelle Periode. Sie können weitere Einschränkungen eingeben. Sie können eine alternative Berichtshierarchie auswählen. | Processing character(1) NOT NULL Button |
Print Format | Druckformat | Daten Druckformat | Unter "Druck Format" legen Sie fest, wie Daten für den Druck aufbereitet werden. | AD_PrintFormat_ID numeric(10) Table Direct |
Create Report (Jasper) | Bericht erstellen (Jasper) | Finanzbericht erstellen (Jasper) | Standard ist die aktuelle Periode. Sie können weitere Einschränkungen eingeben. Sie können eine alternative Berichtshierarchie auswählen. | JasperProcessing character(1) Button |