Buchführungsdimensionen
Was sind Dimensionen?
Buchführungsdimensionen dienen dazu, Buchungen in der Finanzbuchhaltung näher zu definieren. Wenn man z.B. eine Eingangsrechnung erstellt, wird diese auf das Konto für "Verbindlichkeiten aus Lieferungen und Leistungen" (Konto 3300 im SKR-04) gebucht. In diese Buchungszeile werden jedoch neben dem Datum, dem Betrag und dergleichen noch weitere Informationen geschrieben. Für unser Beispiel ist das insbesondere der Geschäftspartner, der uns die Ware geliefert hat sowie das Produkt, das er uns geliefert hat. Auf diese Art und Weise legen wir nicht für jeden Lieferanten ein eigenes Verbindlichkeiten-Konto an, sondern benutzen ein einziges Konto und notieren bei jeder Buchung, wen sie denn betrifft. (Um das sicherzustellen sind solche Konten oftmals - im Fenster Kontenplan - so konfiguriert, das sie nur durch Dokumente bebucht werden können, damit man nicht womöglich beim Direktbuchen vergisst, einen Geschäftspartner anzugeben).
Auf diese Weise kann man später die Buchungsdetails aufrufen (View Konto) und so sortieren, das man z.B. alle Buchungen findet, die einen bestimmten Geschäftspartner betreffen - oder ein bestimmtes Produkt - oder...?!?
Nun kann man in den Buchungsdetails z.B. auch alle Einträge auf verschiedenen Konten sehen, die ein einzelnes Produkt betreffen. Man kann sich also heraussuchen, wie viel von einem Produkt man im Bestand hat, wieviel man ein- und wieviel man verkauft hat. Diese Information (von mindestens drei Konten zusammengesucht) kann offensichtlich sehr hilfreich sein. Man spricht in diesem Fall davon, das man die Daten in einer anderen Dimension durchsuchen kann (sozusagen quer zu den Konten).
Informationstheoretisch ist eine Sammlung von Daten mit mehreren Dimensionen, nach denen sie sortiert werden können, ein OLAP-Datenwürfel. Diese Sichtweise ist insbesondere interessant da man diese Daten im Bereich der Finanzberichte verdichten kann. Man könnte sagen, das man einen Teilwürfel mit weniger Dimensionen extrahiert, indem man auf bestimmte Dimensionen (für bestimmte Abfragen interessiert mich die Aktivität nicht, sondern nur der GEschäftspartner und die Produkte) oder eine Auflösung (keine Einzeldaten, sondern tägliche oder periodische Zusammenfassungen) verzichtet. Der entstehende, neue Datenwürfel enthält viel weniger Daten und kann so performanter für Auswertungen herangezogen werden.
Wer sich mehr für die Konzepte der Business Intelligence interessiert, sollte sich nicht scheuen, sich weiter zu informieren.
Beispiele für Dimensionen
Bei den Geschäftspartnern und den Produkten handelt es sich um die offensichtlichste Art einer Dimension. Man kann aber auch noch viele weitere Dimensionen denken. Diese korrelieren z.B. mit dem, was man in der klassischen Kostenstellenrechnung eine Kostenstelle nennt. Als ein Beispiel ist denkbar, das man eine Dimension von Nutzfahrzeugen hat und so erfährt, welche Ein- und Verkäufe dieses Fahrzeug bewegt hat (als Rohertrag), welche Reparaturkosten es hat, welche Abschreibungen, wieviel Maut und welche Steuern und Versicherungen es hat (als Kosten).
Welche Dimensionen gibt es in iDempiere?
Es gibt einige vorgegebene Arten von Dimensionen. Manche davon haben besondere Eigenschaften, manche dienen mehr oder weniger nur für eigene Zwecke. Hier kommt eine voerst leider sehr unvollständige Liste der Eigenschaften, die man gerne erweitern kann.
Bezeichnung | Besonderheiten |
---|---|
Organisation | Benutzt man mehrere Organisationen (z.B. Filialen), kann man natürlich auch Auswertungen quer über diese Filialen machen. Diese Dimension dürfte für die meisten Anwender nicht wichtig sein. |
Konto | Das Konto ist natürlich letztlich auch eine Dimension, die der Auswertung dient. Eine Sortierung nach dem Konto ist natürlich der Klassiker der Buchführung. |
Produkt | Jede einzelne Zeile einer Eingangs- und Ausgangs-Rechnung erzeugt eine Buchungszeile mit einem passenden Produkt. So kann man z.B. eine Übersicht über Ein- und Verkauf zusammenstellen. Natürlich kann man trotzdem auch bei der Verbuchung sonstiger Kosten das Produkt angeben, um eine Kostenrechnung pro Produkt zu erhalten. In Buchungszeilen mit Produkten ist meistens auch eine Menge angegeben, die sich dann auf die Bestände bezieht. |
Geschäftspartner | Jeder Beleg wie z.B. eine Rechnung schreibt auch direkt den betroffenen Geschäftspartner an die Buchung. Von Seiten der Buchhaltung ist auch das nichts anderes als eine Dimension. Man kann dies auch ggf. benutzen um z.B. Buchungen auf bestimmte Konten den Mitarbeitern zuzuordnen (das sind ja auch Geschäftspartner). |
Verkaufsgebiet | Ist diese Dimension aktiviert, kann man im Fenster Geschäftspartner ein Verkaufsgebiet auswählen. Dieses wird dann bei der Verbuchung eines Beleges (z.B. einer Rechnung) in die Buchungszeile übernommen. Auf diese Art und Weise kann man also seine Kunden gruppieren. Ich benutze das z.B. für verschiedene Kunden, die hintereinander das gleiche Outlet betreiben. |
Aktivität | Die Aktivität besteht eigentlich nur aus einem Namen und einer Beschreibung. Sie ist eine Art Joker, der gut für eigene Erweiterungen benutzt werden kann. Diese Dimension kann z.B. in einem Rechnungsbeleg oder auch in einem Hauptbuchjournal gesetzt werden. |
Projekt | In iDempiere gibt es eine Projektverwaltung, mit der ich mich jedoch persönlich noch nicht beschäftigt habe. Diese Dimension kann in einem Beleg oder im Hauptbuchjournal gesetzt werden. |
Kampagne | Hiermit habe ich mich noch nicht beschäftigt. Diese Dimension kann in einem Beleg oder im Hauptbuchjournal gesetzt werden. |
User Element 1 | Erweiterungsdimension für eigene Zwecke. Kann z.B. durch das Fenster für Kombinationen nicht gesetzt werden. Siehe unten. |
User Element 2 | Erweiterungsdimension für eigene Zwecke. Kann z.B. durch das Fenster für Kombinationen nicht gesetzt werden. Siehe unten. |
User List1 | Erweiterungsdimension für eigene Zwecke. Siehe unten. |
UserList2 | Erweiterungsdimension für eigene Zwecke. Siehe unten. |
Wie aktiviert man die Dimensionen?
Der einfachste Weg ist, bei der Einrichtung eines Mandanten einige Häkchen bei den entsprechenden Fragen zu machen. Hieraus werden entsprechende Einträge im Fenster Buchführungsschema im zweiten Tab generiert. Dort kann man auch selber weitere Zeilen anlegen. Nachdem man das gemacht hat, wird empfohlen, das ganze Programm neu zu starten (ggf. inklusive Server-Restart). Hat man die Dimensionen hier aktiviert, tauchen sie in vielen Eingabemasken mit auf und können dann benutzt werden.
Wie kann man eigene Ideen umsetzen?
In iDempiere gibt es leider nicht die direkte Möglichkeit, beliebige Mengen eigener Dimensionen jederzeit frei zu definieren und der Buchhaltung hinzuzufügen.
vorhandene Dimensionen "umwidmen"
Es gibt jedoch einige vordefinierte Dimensionen und einige reservierte, die man benutzen kann, wie Jörg Janke sich das gedacht hat oder auch völlig anders, wenn man das möchte. :-)
Eine Dimension, die man immer gut benutzen kann, wenn man etwas eigenes umsetzen will, sind die "Aktivitäten". Der zugehörige Datensatz im Fenster Aktivitäten enthält nicht mehr als einen Namen und eine Beschreibung. Natürlich kann man diesen (wie alle Datensätze im iDempiere) aufbohren und mehr Felder für eigene Zwecke hinzufügen. So kann aus den "Aktivitäten" zum Beispiel eine Verwaltung von Nutzfahrzeugen gemacht werden.
Ich habe aus der Aktivität eine allgemeine Sammlung von Kostenstellen gemacht. Also alle Gegenstände, Dinge oder Ereignisse, denen ich Kostenbuchungen zuordnen möchte, erhalten einen Eintrag in der Aktivitätentabelle. Kommt nun eine Buchung vor, die zu solch einer Kostenstelle passt, muss diese angegeben werden.
Erweiterungsidee: Es wäre schön, wenn man diese Kostenstellen gruppieren und besonderen Konten zuordnen könnte. Man könnte dann vielleicht festlegen, das auf das Konto "KfZ-Kosten" immer nur unter Angabe einer Kostenstelle gebucht werden kann, die Teil der Gruppe "Kraftfahrzeuge" ist.
User:a42niem hat mich auf zwei spannende Links zum Thema hingewiesen:
- http://www.compieresource.com/2008/10/cost-center-profit-center-service-center-in-compiere.html
- http://www.adempiere.com/Setup_Custom_Account_Combination_using_User_List
Einige Tips gibt es auch unter adempiere:Chart_of_Accounts
User List 1+2 Dimensionen
Diese Dimension läuft letztlich darauf hinaus, das man eine neue Dimension von Konten erhält. Man legt einen weiteren Kontenplan (ein "Account Element" in englisch) an und kann dort neue "Konten" (Element Values) erzeugen. Diese kann man dann als neue Buchführungsdimension benutzten. Diese User Lists haben den Vorteil, das sie einerseits auch als Baum strukturiert sein können und damit in Financial Reports eine Zusammenfassung entsprechend des Baumes erlauben. Ist eine User List Dimension eingerichtet, taucht sie im Prinzip an allen Stellen im Programm auf, wo die anderen auch erscheinen. Man kann sie also z.B. in der Auswahl des Infofensters benutzen, man kann sie im Eingabefenster für Konten-Kombinationen eingeben etc. Andererseits haben User Lists den Nachteil, das das ausgewählte Objekt immer ein Konto ist. Man kann also keine eigene Objektklasse drumherumstricken wie z.B. bei der Anpassung der "Aktivitäten" möglich.
Siehe für ein ausführliches Beispiel auch http://www.adempiere.com/Setup_Custom_Account_Combination_using_User_List
User Element 1+2
Beim User Element kann man eine einzelne Fremdschlüssel-Spalte des Beleges als Buchführungsdimension festlegen. In der Definition des User Elements wird einem hierzu eine Liste aller Fremdschlüssel-Referenzen des Programms zur Auswahl angeboten (Das sind alle Spalten, die auf *_ID enden). Hier kann man eine beliebige ADempiere-Tabelle, also auch eine ganz selbst erzeugte, angeben. Die User Element Felder tauchen jedoch im Gegensatz zu den anderen Dimensionen nicht automatisch überall auf. Ein solcher User Element-Wert wird nur dann übernommen, wenn im Beleg eine Spalte mit genau dem angegebenen Namen existiert. Wenn nicht, wird die Dimension auch nicht verwendet.
Diese Dimension kann nicht in einer Kontenkombination ausgewählt werden. Ihr Zweck scheint mehr zu sein, einen Wert direkt aus einem Beleg zu übernehmen.
Leider wird eine User Element Dimension auch nicht überall zur Asuwahl angezeigt. Man kann aber z.B. im Info Fenster nach ihr suchen und Ihr Wert wird auch korrekt angezeigt. Die Liste der Buchführungsdetails zeigt normalerweise nur die ID des Datenatzes an, aber auch hier kann man über die Felddefinition (des Fensters Buchführungsdetails) die Ausgabe anpassen. Ähnliches gilt für das entsprechende Feld in der Journalzeile, das man über die Felddefinition als eine Referenz auf seine eigene Tabelle umdefinieren kann. (WAhrscheinlich kann man das auch - besser - in der Tabellendefinition als in der Felddefinition ändern.)
Original Hilfetext zum User Element:
- A user defined accounting element refers to a Adempiere table. This allows to use any table content as an accounting dimension (e.g. Project Task). Note that User Elements are optional and are populated from the context of the document (i.e. not requested)
Bei Problemen mit dem Info-Fenster: Damit das User Element in der Kontoinformation ausgewählt werden kann, muss es möglich sein, daraus ein Info Fenster zu generieren. Sollte das nicht klappen hier ein paar Tips: Das Info Fenster in Swing hat (noch?) gar nichts mit den Einstellungen in "Info Window" zu tun (die werden bisher nur in zk benutzt). Die Tabelle, die für das User Element benutzt wird, muss ein zugeordnetes Fenster haben. Die Reihenfolge der Felder in diesem Fenster bildet die Basis für das Info Fenster. Das erste Feld (hinter Client und Org) sollte ein Textfeld sein (nicht isActive, das gibt eine Exception in der Tabellendarstellung, weil es Boolean ist).
- https://wiki.compiere.com/display/docs/Performance+Analysis, chapter "user defined elements".
- [ADempiere Tracker about completion of User Elements Feature]
- [ADempiere Tracker for more that 2 User Elements with discussion about it]
- [Compiere Article about Cost Centers]
- [ADempiere Forum about this article]
- [Accounting Fact Details (including online help comment for User Elements)]