# Buchhaltung/Kassenbuch MySQL Software-Version: 5.5.27 - MySQL Community Server (GPL)



## Scuzzi (24. Januar 2014)

Guten Tag,

Ich versuche schon seit geraumer Zeit, meine Webapplikation um ein kleines Kassenbuch zu erweitern!
Nun habe ich so viele Varianten versucht, dass ich mich total verloren habe und somit auch nicht weiss, welche
Scripts ich hier beschreiben soll. Deshalb versuche ich zu beschreiben was das Problem ist.


*Beschreibung*

Es muss möglich sein, verschieden Kontopläne zu erstellen und den Mandanten zuzuweisen.
Das ist soweit kein Problem!

*Tabelle Mandanten*
_Mandanten_ID (Primary)
Kunden_ID (Foreign_Key)
Kontoplan_ID (Foreign_Key)
_
-----------------------------------------------


*Tabelle Kontoplan_Vorlage*
_Kontoplan_ID (Primary)
_
*Tabelle Gruppen*
_Gruppen_ID (Primary)
Kontoplan_ID (Foreign_Kay)
Buchungsart_ID (Foreign_Key) (Einnahmen/Ausgaben)
Gruppenbezeichnung
_
*Tabelle Kategorien*
_Kategorien_ID (Primary)
Kontoplan_ID (Foreign_Key)
Gruppen_ID (Foreign_Key)
Buchungsart_ID (Foreign_Key) (Einnahmen/Ausgaben)
Kategorien_Bezeichnung
_

Wenn ich nun eine Neue Kategorie in einem Kontoplan erstelle so sehe ich alle Gruppen aller erstellten Kontopläne.
Das Ziel währe, dass ich nur die Gruppen des jeweiligen Kontoplanes sehe.

Vor lauter LEFT, INNER RIGHT JOINS Foreign Keys usw. sehe ich gar nichts mehr, hab wie ein Blackout. Könnt Ihr mir helfen.


Ich gebe mal diese Script mit, dass ist das was z.Z. installiert ist, Feldbezeichnungen könnten unterschiedlich sein.

SELECT
  bhk.id AS Kategorien_ID,
  bhk.buchhaltung_konto_vorlagen_id     AS Vorlagen_ID,
  bhk.buchhaltung_gruppen_id                AS Gruppen_ID,
  bhk.kategorien_nr                                 AS Kategorien_Nr,
  bhk.kategorien_bezeichnung                AS Bezeichnung
FROM
  buchhaltung_kategorien bhk

    LEFT JOIN (
        SELECT      bhgd.id,
                    bhgd.buchhaltung_konto_vorlagen_id

        FROM        buchhaltung_gruppen AS bhgd
            )   AS bhg
    ON bhk.buchhaltung_gruppen_id = bhg.id

    INNER JOIN
          buchhaltung_konto_vorlagen ON bhk.buchhaltung_konto_vorlagen_id =
          bhg.buchhaltung_konto_vorlagen_id

GROUP BY
Kategorien_ID


Ich bin auch für andere Ansätze offen.


----------



## Spyke (26. Januar 2014)

Mit Kontoplan, meinst du damit die buchhalterischen Kontenpläne wie man diese zum Beispiel bei Datev kennt? (SKR 3, SKR 4, ...)
Wenn ja, wäre für mich an sich der Kontenplan schon die "Gruppe" zu der die einzelnen Sachkonten gehören.
Damit würde ich keine weitere Diferenzierung noch zu einer Gruppe oder Kategorie machen.

Was mich auch bissel irritiert ist der foreignkey von Buchungsart.
Ich assoziere damit erstmal Fibu-, Handelsbilanz- oder Steuerbilanzbuchungen, da würde vielleicht auch einfach ein numerischen Feld reichen (in C# würd ich das mit nem Enum repräsentieren).

Also ich an deiner Stelle würde die Kategorien und Gruppen erstmal verwerfen.
Der Kontenplan an sich sollte ja selbst schon eine Bezeichnung und eine Kontenplannummer (und vielleicht noch Anzahl stellen der Sachkonten) beinhalten.

P.S.: Hoffe reden ungefähr vom gleichen


----------



## Scuzzi (27. Januar 2014)

Hallo Spyke,

Danke erst mal das Du dich damit beschäftigt hast!

Buchungsart ist entweder 1 oder 2 für Einnahmen oder Ausgaben, wie gesagt ich bin am tüfteln.

Nehmen wir mal an...

Ich habe Verschieden Kunden und möchte für diese ein rudimentäres Kassenbuch führen
eine Kunden Tabelle besitzte ich schon, deren Primary ist Kunden_ID.

In diesem Kassenbuch möchte z.B. die


Buchungsdatum
Kategorien -> Die Kategorien sollten schon als kategorie für Ausgaben zb. Tanken
oder Einnahmen was auch immer, definiert werden

Einnahmen/Ausgaben

Betrag


Nun möchte aber nicht jeder Kunde die gleichen Kategorien verwenden, z.B. Bäckerei oder
Autoverwerter
Also brauche ich doch Kategorien_Vorlagen

Dann habe ich die Kunden_ID und die Kategorien_Vorlage in einer Tabelle Mandanten zusammen
gebracht
Kunden_ID + Kategorien_Vorlage_ID


Jetzt soll es Möglich sein, dass

wenn ich beim Mandant eine neue Buchung
mache, ein schöner aublauf ensteht.

Das eingabe fenster sollte dann im ablauf irgendwie so laufen

Buchungsart
als Auswahl sollte nun Einnahmen oder Ausgaben gewählt werden können

Das System sollte nun wissen welche Kategorien_Vorlage der Mandant verwendet
aufgrund dessen soll er mir aus der Vorlge jeweils nur die Ausgaben oder Einnahmen
Kategorien auflisten, gemäss der gewählten Buchungsart.


Ich bin jetzt wieder zurückgegangen auf 1 Kunde 1 Buchungstabelle, damit ich für mich weiter
machen kann, dass heisst es besteht z. Z. Eine Buchungstabelle und eine Kategorien Tabelle
Einnahmen oder Ausgaben sind in 2 Spalten aufgeteilt, dass wäre die Ausgangslage für einen
Neuanfang

Ziel wäre natürlich eine Spalte für Einnahmen und Ausgaben z.B. Betrag  und dies halt wo anders
zu differenzieren.

Ich hoffe Du kannst damit etwas anfangen um mich zu verstehen.

Wie würdest Du so etwas auffbauen?


----------



## Spyke (27. Januar 2014)

Meine Buchungstabelle würde ungefähr so ausschauen:
KundeId (foreignkey)
KategorieId (foreignkey)
Buchungsart (numerisch, 1 - Einnahmen, 2 -  Ausgaben, als BitFlag)
Buchungsdatum
Betrag (numerisch)

Tabelle Kategorie:
Id (numerisch)
Bezeichnung (text)
Buchungsart (1 - Einnahmen, 2 -  Ausgaben, 3-beides, siehe oben BitFlag)
(... was sonst noch ne kategorie braucht)

(Buchugnsart in der Kategorie als Vorselektionsfilter)

Tabelle Kunde:
Id (numerisch)
(weitere Kundendaten)

Tabelle KundenKategorie:
KundeId
KategorieId

Mit der definition Kontoplan hab ich noch bissel problem was du da genau meinst.
Sowie ich eine Buchung kenne würde noch Konto und Gegenkonto mit zur Buchung gehören.

Unser kassenbuchprogramm hab ich mir noch nie so angesehen, mache zur Zeit direkt Handels-/Steuerbilanzbuchungen (mit dem ganzen Steuerschlüssel gedöns und was es da so gibt).


----------



## Scuzzi (27. Januar 2014)

Hallo Spyke,

Ich bau deinen Vorschlag mal nach!

Buchhalterisch bin ich nicht der Meister!
Unter Kontoplan meine ich die Zusammenfassung aller buchungskategorien, also quasi  eine Vorlage!
Somit kann der Bäcker am Anfang vom Jahr eine fertige Vorlage wählen oder selber eine Vorlage erstellen(die vom letzten Jahr ) oder eine neue erstellen!
Diese wählt er dann aus, wenn er. Fürs neue Jahr einen weiteren Mandanten erstellt!
Der Mandant bring dann folgende Informationen mit

Id,
Kunden_id,
Jahr,
Kontoplan oder Vorlage!

Bis dato habe ich eine standalone buchhaltungssoftware verwendet Bananasoft und habe versucht das nachzubilden, nur dass Kassenbuch das reicht für mich.

Dort erstellt man zuerst eine sogenannte Datei, dass definiert das Jahr, die Firma und alle Buchungen, ich habe das als Mandat bezeichnet.

Danach kannst du aus Vorlagen wählen zB. Kassenbuch, oder Bilanz oder doppelte Buchhaltung.

Ich benutzte die Kassenbuch und dort die Standard vorlag!

Jetzt tut sich sowas wie excel auf mit diversen Spalten und darüber drei  Register Konten, Kategorien und Buchungen

Bei Konto
Konto.   Bezeichnung
1000.    Kasse
Beschreibung, Eröffnung USW.

Bei Kategorien      hier hat es dann einige Kategorien zB. Versicherung, Spesen usw
Gruppen. (Das sind Einnahmen und Ausgaben )     Konto-Nr.      Kat.nummer      Bezeichnung  
4
5

Bei Buchungen wird dann alles zusammen geführt! Einnahmen und Ausgaben werden in separaten Spalten geführt, was zu Fehlern führt.
--------

Wieder meine Applikationen

Was ich versuche ist, über den Mandat direkt zur Buchung zu kommen
Das Formular soll so starten

Datum
Gutschrift oder Belastung? (Bananasoft Gruppen 4 oder 5 in separater Spalte)
Kategorien
Betrag
X
X

Ich glaube, das dass Formular wohl den Mandanten kennt, jedoch nicht die Vorlage, die beim Mandant hinterlegt ist! Mir werden immer alle Gruppen angezeigt!

Ob ich da richtig ticke, ob ich das richtig angehe, weiss ich nicht! Ich versuche mal deinen Vorschlag umzusetzen, dann sprechen wir auch über die gleichen Vorgänge

Wenn Du Spyke, dazu aber nicht wirklich Lust hast, dich da reinzusteigern verstehe ich das, ich hab doch schon mal eine Ansatz von dir bekommen, dass ist schon mehr als ich erwarten konnte! Danke


Liebe Grüsse aus Zürich


----------



## Spyke (27. Januar 2014)

An der Lust liegts nicht.
Ich programmier selbst Buchhaltungssoftware.

Ein Kontenplan ist eher ein Sammelbegriff in dem sich mehrere Sachkonten drunter gruppieren.

Standardmäßig gibt es dort den SKR 3 und SKR 4 Kontenplan.
Beide haben 4 stellige Sachkontonummern, dazu gibt es jetzt dann zum Beispiel den SKR 36 der glaube schon 6 Sachkontenstellen hat aber ähnlichen Aufbau hat wie der SKR 3 (bin mir da jetzt aber gerade nicht ganz sicher)

Ich glaube auf der Datev Seite kannst du dir die Kontenpläne kostenlos als PDF auch downloaden (nein ich arbeite nicht bei dennen ^^).
Vielleicht wird dann klarer was ich meine.

Zu den Sachkonten gebs dann jetzt aber auch noch die Personenkonten.
Die Debitoren und Kreditoren, also die Forderungen und Verbindlichkeiten.

Mein problem ist einfach nur mehr inwieweit tief geht da jetzt son Kassenbuch.
Nicht das ich dich zu sehr dann ausm Konzept bring 

Mein problem sind deshalb mehr die Begrifflichkeiten ob wir vom gleichen reden.
Und ich grade nicht weiß inwieweit Tief sone Kassenbuchungen gehen (oder deine gehen sollen).


----------



## Scuzzi (28. Januar 2014)

Hallo Spyke,

Ich habe keine qualifizierten Begriffe benutzt, rein vom Bauch weg!

Ich erkenne aber, dass ein Profi damit nicht wirklich klar kommen kann!

Habe mir die Datev Seite mal angeschaut, dass geht alles viel weiter als ich das je bräuchte.

Ich brauch lediglich


Tabelle Mandant (Name nicht Qualifiziert)
Wer?                      = Kunde        (aus einer anderen Tabelle)
Welche Vorlage?    = Standard    (aus einer andren Tabelle)
Welches Jahr?        = 2014

Tabelle Buchungen
Wer?               = Mandant (Kunde_ID, Vorlage_ID, Jahr)
Wann?
Buchungsart?  = Einnahmen oder Ausgaben

Was?
Aus der gewählten Vorlage je nach gewählter Buchungsart die "Kategorien" anzeigen/wählen,
z.B.

Gewählt = Ausgaben
Angezeigte Kategorien_ID resp. Nummer und Bezeichnung =

1000    Miete
1001    Versicherungen
1002    Benzin


Gewählt = Einnahmen
Angezeigte Kategorien_ID =

2000    Torten
2001    Brötchen
2002    Schokodrink

Betrag?

Tabelle Vorlagen
Vorlagen_ID,
Vorlagename,

Tabelle Kategorien (nicht Qualifiziert)
Kategorien_ID
Vorlagen_ID
Buchungsart (Einnahme oder Ausgabe) Name frei erfunden
Kategorien_Nummer
Kategorien_Bezeichnung

Mehr brauche ich nicht!
Diese Werte können ja dann in eine Profi BH-Software einfliessen,
Für meine Steuern hats hier in der Schweiz gereicht. Ich bin nicht Mehrwertsteuerpflichtig
bin ein Einzelunternehmer und brauche lediglich Einnahmen Ausgaben und dass halt
ein bisschen gruppiert.

Ich wollte einfach ein bisschen Flexibilität in die "Buchhaltung" bringen, da ich meine Applikation anbieten werde.
Und meine App Kunden nicht meine Vorlagen verwenden wollen. Es ist eine Branchenspeziefische App.

Und mein Problem ist es vermutlich, dass bei der Buchung zwar klar ist, welcher Mandant gerade buchen will, aber nicht
klar ist welche Vorlage er benutzt, irgendwie muss er wissen welche Vorlage der Mandant verwendet, damit er aus der
Tebelle Kategorien nur die Vorlagen_ID's der in der Tabelle Mandant hinterlegte Vorlagen_ID anzeigt, dass macht er aber
nicht.

Ich nehme mal deinen Ansatz und beginne neu!

LG


----------

