Schatzkarte: Unterschied zwischen den Versionen

Aus Stratum 0
Wechseln zu:Navigation, Suche
K (mehr Todo)
(Mitgliedsbeitrag)
 
(19 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Projekt|verantwortlich=[[Schatzmeister]]|status=aktiv|beschreibung=Eine Übersicht über ie Buchführung des Schatzmeisters für den Verein.}}
+
{{Projekt|verantwortlich=[[Schatzmeister]]|status=aktiv|beschreibung=Eine Übersicht über die Buchführung des Schatzmeisters für den Verein.}}
  
 
==Ziel dieser Seite==
 
==Ziel dieser Seite==
Zeile 8: Zeile 8:
 
==Arbeitsumgebung==
 
==Arbeitsumgebung==
 
===JVerein===
 
===JVerein===
Als Buchhaltung kommt JVerein zum Einsatz. JVerein ist nicht für den Einsatz im Netzwerk gedacht und arbeitet daher immer auf einer lokalen Kopie der Daten. Die lokale Datenbank ist über ein Passwort verschlüsselt.
+
Als Buchhaltung kommt JVerein zum Einsatz. Prinzipiell unterstützt JVerein den Einsatz eines SQL-Servers im Netzwerk als Backend. Um allerdings Änderungen an der Datenbank ebenfals Versionieren zu können, setzen wir JVerein mit einer lokalen Datenbank ein.  
JVerein kann per HBCI aktuelle Umsätze für das Girokonto abholen. Um das zu tun ist zusätzlich die PIN des Onlinebanking notwendig.
 
  
 
===Versionverwaltung===
 
===Versionverwaltung===
Zum Sichern der Daten und zum synchronisieren zwischen Schatzmeister, seinem inoffiziellen Stellvertreter und den Kassenprüfern kommt ein gehostetes SVN zum Einsatz.
+
Alle finanz-relevanten Daten liegen in einem git. In dem Repository werden dabei rücksicktslos auch Binärdateien eingecheckt. Es gibt ein zentral gehostetes Repository, über das die Arbeitskopien synchron gehalten werden.
Das SVN ist nur über HTTPS erreichbar und wird auf einem RPI bei einem zugriffsberechtigten Vorstand gehostet. Der Zugriff auf die Daten ist über eine Authentifizierung beschränkt.
 
  
===Arbeitskopie===
+
Das Repo hat folgende Struktur:
In der Arbeitskopie des SVN befinden sich folgende Verzeichnisse:
+
  ./s0v-finanz
  ./stratum0-finanzen
 
 
     |- .jameica            Arbeitsverzeichnis von JVerein.  
 
     |- .jameica            Arbeitsverzeichnis von JVerein.  
 
     |- 2012                Buchführung und Belege für 2011 und 2012.
 
     |- 2012                Buchführung und Belege für 2011 und 2012.
Zeile 25: Zeile 22:
 
     |- 2013
 
     |- 2013
 
         |- Belege                  Verzeichnis mit digitalen Kopien der Buchungsbelege
 
         |- Belege                  Verzeichnis mit digitalen Kopien der Buchungsbelege
 +
        |- Jahresbericht          Verzeichnis mit dem Jahresbericht des Schatzmeisters
 +
        |- Prüfung                Verzeichnis mit Unterlagen zur Kassenprüfung
 +
    |- Auswertungen                Auswertungen der Datenbank, z.B. Mitgliedskontenauszüge
 +
    |- Vorlagen                    Vorlagen rund um das Schatzmeistern
  
 +
Die Struktur des Ordners 2013 wiederholt sich für alle weiteren Jahre.
  
==Umgang mit JVerein==
+
=== Locking ===
 +
Bei der Versionierung von Binärdateien (Jverein-Datenbank) muss sichergestellt werden, dass nicht aus Versehen zwei Vorstandsentitäten gleichzeitig am Datenbestand arbeiten – ansonsten müsste man beide Änderungen auf Binärebene miteinander vereinen, und das will wirklich niemand. Deshalb wird mit {{WP|File locking|Locking|l=en}} gearbeitet, wofür das gitolite auf [[theodem]] Unterstützung mitbringt.
 +
 
 +
* '''Vor Beginn der Arbeit''' wird das Skript <code>./lock.sh</code> ausgeführt, das die entsprechenden Dateien sperrt und gleichzeitig auch neue Git-Revisionen holt.
 +
* Dann kann JVerein benutzt und Git-Commits erstellt werden.
 +
* ''' Nach Beginn der Arbeit''' wird das Skript <code>./unlock.sh</code> benutzt, um die neuen Revisionen auf den Server zu pushen und das Repo wieder zu entsperren.
 +
** Falls dieser Schritt vergessen wird, bekommt der nächste Benutzer beim Locking eine Fehlermeldung: <pre>FATAL: '.jameica/jverein/h2db/jverein.h2.db' locked by 'rohieb' since Sun Apr 23 17:23:46 2017</pre> In diesem Fall den entsprechenden Benutzer treten, oder dem [[Schatzmeister]] Bescheid sagen, um das Lock per Admin-Zugriff zu überschreiben. ([http://gitolite.com/gitolite/locking/index.html Relevante Doku dazu])
 +
 
 +
===Erweiterte Toollandschaft===
 +
:''Talk von {{Benutzer|Emantor}} dazu: [[Vorträge/Vorbei#Talks am Samstag, 14. Januar 2017, ab 19:00|Das Stratum 0 Finanzautomatisierungssystem]]''
 +
 
 +
Um das Jverein als zentrales Tool sind im Laufe der Zeit weitere Tools als Helfer entstanden:
 +
* [https://gitli.stratum0.org/schatzmeister/jverein-regressionstests jverein-regressionstests]
 +
** Test-suite, die in einem Post-Commit Hook des Git-Hosts durchgeführt wird.
 +
** Mit den Tests sollen regelmäßig bei den Kassenprüfung auftretende Fehler vor der Kassenprüfung gefunden werden.
 +
* [https://gitli.stratum0.org/schatzmeister/H2SqlServer H2SqlServer]
 +
** Stellt eine Socket-Schnittstelle auf die H2SQL-Datenbank JVereins zur Verfügung. Wird von weiteren Tools genutzt, um Änderungen und Auswertungen an der Datenbank durchführen zu können.
 +
* [https://gitli.stratum0.org/schatzmeister/python3-jverein python3-jverein]
 +
** Client-Library für Python, die direkt mit dem H2Sql Server sprechen kann.
 +
** Hierüber lassen sich auch Mitgliedskonten abfragen
 +
* [https://gitli.stratum0.org/schatzmeister/jverein-zuwendungsbescheinigung jverein-zuweundungsbescheinigung]
 +
** Erstellt aus der Datenbank automatisiert Zuwendungsbescheinigungen für Mitgliedsbeiträge als PDF.
 +
** Enthält auch ein Latex-Template für die Zuwendungsbescheinigungen.
 +
** Wenn eine Adresse in der Datenbank hinterlegt wurde, wird diese verwendet.
 +
* [https://gitli.stratum0.org/schatzmeister/finanz-helper finanz-helper]
 +
** Sammlung von mehreren kleinen Tools.
 +
** Erstellen von Buchungsbelegen für folgende Fälle:
 +
*** Bar-Einzahlung in ein internes Konto
 +
*** Umbuchung zwischen internen Konten
 +
** Senden aller Mitgliedskontoauszüge aus einem Ordner an das jeweilige Mitglied
 +
* [https://gitli.stratum0.org/schatzmeister/jverein-beitragshelfer jverein-beitragshelfer]
 +
** Tool zum automatisierten Zuordnen von eingegangenen Buchungen zu den entsprechenden Mitgliedern.
 +
* DEPRECATED [https://gitli.stratum0.org/stratum0/jverein-guthabenstat jverein-guthabenstat]
 +
** Tool zum Erstellen einer tageweisen Guthabenstatistik über alle Konten.
 +
** Der Export kann anschließend z.B. im Finanzbericht eingesetzt werden.
 +
** Sollte irgendwann einmal durch einen ReWrite ersetzt werden.
 +
* DEPRECATED [https://gitli.stratum0.org/stratum0/jverein-member-reports jverein-member-reports]
 +
** Tool zum Erstellen der Mitgliedskontoauszüge
 +
** Sollte irgendwann einmal durch einen ReWrite ersetzt werden.
 +
* DEPRECATED [https://gitli.stratum0.org/stratum0/jverein-finance-report jverein-finance-report]
 +
** Tool zum Erstellen von Finanz-Statistiken über den Verein.
 +
** Sollte irgendwann einmal durch einen ReWrite ersetzt werden.
 +
 
 +
==Operatives==
 +
===Regelmäßige Aufgaben===
 +
Die hier gelisteten Aufgaben sind in eine MUSS und SOLL Kategorie geordnet. SOLL Aufgaben erleichtern die gesamte Buchführung, MUSS Aufgaben sollten in jedem Fall regelmäßig durchgeführt werden. Dafür eignet sich gut das Vorstandstreffen am Anfang des Monats.
 +
====Monatlich====
 +
MUSS:
 +
* Kassen zählen
 +
SOLL:
 +
* Spendendosen leeren
 +
* Matekasse nachführen
 +
* Verbrauchsmaterial nachführen
 +
* Belege einscannen/drucken
 +
* Belege im git einchecken
 +
====Jährlich====
 +
MUSS:
 +
* Jahresbericht erstellen
 
===Konten im JVerein===
 
===Konten im JVerein===
Für den Verein werden im JVerein mehrere Konten mit unterschiedlichen Aufgaben abgebildet. Ein Konto kann dabei z.B. sein: Das Girokonto, die Barkasse, etc. Jedes Konto (ausser dem Giro) kann dabei in Unterkonten gegliedert sein.
+
Für den Verein werden im JVerein mehrere Konten mit unterschiedlichen Aufgaben abgebildet. Ein Konto kann dabei z.B. sein: Das Girokonto, die Barkasse, etc. Jedes Konto kann dabei in Unterkonten gegliedert sein.
  
 
Es gilt dabei folgendes:
 
Es gilt dabei folgendes:
 
* Ein (Haupt-) Konto ist dabei jeweils die Kasse bzw. das Konto in dem das Geld wirklich liegt. Hauptkonten haben als Kontonummer eine Zahl.
 
* Ein (Haupt-) Konto ist dabei jeweils die Kasse bzw. das Konto in dem das Geld wirklich liegt. Hauptkonten haben als Kontonummer eine Zahl.
* Interne (Haupt-) Konten haben immer eine dreistellige Nummer. Externe (z.B. das Giro) haben wahrscheinlich meißt eine längere.
+
* Interne (Haupt-) Konten haben immer eine dreistellige Nummer. Externe (z.B. das Giro) haben wahrscheinlich eine längere.
 
* Unterkonten sind eine Segmentierung eines Hauptkontos. Dabei wird eine Menge Geld in einem Haupt-Konto für einen speziellen Zweck reserviert.  
 
* Unterkonten sind eine Segmentierung eines Hauptkontos. Dabei wird eine Menge Geld in einem Haupt-Konto für einen speziellen Zweck reserviert.  
 
* Unterkonten werden durch Anhängen des Suffix "-$N" gebildet. Dabei ist $N der fortlaufende Index der Unterkonten des Hauptkontos.
 
* Unterkonten werden durch Anhängen des Suffix "-$N" gebildet. Dabei ist $N der fortlaufende Index der Unterkonten des Hauptkontos.
 
* Die Summe der Beträge in einem Haupt- und seiner Unterkonten entspricht der Menge an Geld die tatsächlich in dieser Ablage vorhanden ist.  
 
* Die Summe der Beträge in einem Haupt- und seiner Unterkonten entspricht der Menge an Geld die tatsächlich in dieser Ablage vorhanden ist.  
 +
* Jedes Konto trägt am Anfang seines Namens einen Buchstaben als Kennung. Dieser Buchstabe wird bei der Bildung der Belegnummer verwendet.
 +
 +
Bei Erstellung des Artikels vorhandene Konten:
 +
100            (B) Barkasse Stratum0
 +
100-1          (D) 3D-Drucker Filamentspenden
 +
100-2          (P) Pfand für Physische Schlüssel
 +
100-3          (F) Spenden for Plotter-Material
 +
100-4          (S) Spenden für Material Stickmaschine
 +
101            (V) Erstattungskasse Verbrauchsmaterial
 +
102            (M) Matekasse
 +
200024917      (G) Girokonto des Vereins
 +
200*-1          (R) Rückstellungen Giro
 +
 +
Wird Geld zwischen Konten verschoben, muss im JVerein eine Umbuchung zwischen den Konten stattfinden. Dies gilt auch, wenn eine Umbuchung zwischen Haupt- und Unterkonto stattfindet, z.B. wenn Geld aus einem Konto mit Zweckbindung in das zugehörige Hauptkonto verschoben wird.
 +
 +
====Konto: Barkasse====
 +
Konto, dass nicht zweckgebundenes Geld enthält.
 +
 +
====Konto: 3D-Drucker Filamentspenden====
 +
Konto mit zweckgebundenem Geld aus der 3D-Druck Spendenbox
 +
 +
====Konto: Pfand für Physische Schlüssel ====
 +
Konto mit für ausgegebene Schlüssel eingenommenes Pfand. Geld ist nicht für operatives Geschäft verfügbar, da es bei Rückgabe des Schlüssels ebenfalls zurückgegeben werden muss.
 +
Für die Dokumentation der Schlüsselübergabe gibt es ein Template in:
 +
./s0v-dokumente/vorlagen/Schluesselquittung.odt
 +
 +
====Konto: Spenden for Plotter-Material====
 +
Konto mit zweckgebundenem Geld aus der Plotter Spendenbox.
 +
 +
====Konto: Spenden für Material Stickmaschine====
 +
Konto mit zweckgebundenem Geld aus der Stickmaschinen Spendenbox.
 +
 +
====Konto: Erstattungskasse Verbrauchsmaterial====
 +
Kasse, die im Space steht und es Mitgliedern erlaubt sich Verbrauchsmaterial direkt und ohne Antrag an den Vorstand selber zu erstatten. Dies soll Mitglieder motivieren notwendiges Verbrauchsmaterial selbständig zu beschaffen und das Geld dafür unbürokratisch zurück zu bekommen.
 +
Die Kasse wird i.d.R. mit 20 bis 50€ "aufgeladen", wenn die Einlage zu gering geworden ist.
 +
 +
In dieser Kasse ist durch die Mitglieder ein Kassenbuch zu führen, dass alle Geldbewegungen abbildet.
 +
 +
====Konto: Matekasse====
 +
Kasse des Space-Kiosk für Getränke und Süßkram.
 +
 +
In dieser Kasse ist durch die Mitglieder ein Kassenbuch zu führen, dass alle Geldbewegungen abbildet.
 +
 +
====Konto: Girokonto====
 +
Girokonto. Konto, dass nicht zweckgebundenes Geld enthält.
  
Beispielhaft ein Auszug der bei Erstellung des Artikels vorhandenen Konten:
+
====Konto: Rückstellungen Giro====
100            Barkasse Stratum0
+
Auf diesem Konto sind Gelder für zu erwartende Sonderausgaben besonders allokiert.
100-1          3D-Drucker Filamentspenden (Zweckgebundene Bargeldspenden)
 
100-2          Einbehaltenes Pfandgeld für ausgegebene physische Schlüssel zum Space
 
101            Erstattungskasse Verbrauchsmaterial
 
20002...       Girokonto des Vereins
 
  
Wird Geld physisch zwischen Konten verschoben, muss im JVerein eine Umbung zwischen den Konten stattfinden. Die Buchführung soll ja die Realität abbilden.
 
  
 +
{{Todo| Virtuelle Konten}}
 
===Buchungsklassen und Buchungsarten===
 
===Buchungsklassen und Buchungsarten===
 
Die Buchungsklassen und Buchungsarten dienen der Gruppierung der Gewinn-und-Verlust-Rechnung des Vereins.
 
Die Buchungsklassen und Buchungsarten dienen der Gruppierung der Gewinn-und-Verlust-Rechnung des Vereins.
Zeile 68: Zeile 168:
 
   |- 3000 Umbuchungen
 
   |- 3000 Umbuchungen
  
{{Todo|Buchungsarten}}
+
Die Strukturierung in Buchungsklassen und Buchungsarten sollte so feingliedrig gewählt werden, dass sie übersichtlich Darstellt, welche (finanziellen) Aktivitäten im Verein stattgefunden haben. Diese Struktur wird sowohl für den Finanz-Jahresbericht, als auch für die Steuererklärung gegenüber dem Finanazamt herangezogen.
  
 
===Mitgliedsbeitrag===
 
===Mitgliedsbeitrag===
{{Todo|Beitragsklassen. Angabe von Individual-Beiträgen und Befreiungen.}}
+
JVerein führt für jedes Mitglied ein Mitgliedskonto. Auf diesem werden die fälligen Beiträge (SOLL-Buchungen) (anhand der Beitragsklassen bzw. der Abrechnungsläufe, sowie besonders angelegter Fälligkeiten) und die gezahlten Mitgliedsbeiträge (IST-Buchungen) gegenüber gestellt.
{{Todo|SOLL-Buchung auf Mitgliedskonten}}
+
 
{{Todo|Zuornung einer Zahlung auf ein Mitgliedskonto}}
+
Ein Mitgliedskonto ist im JVerein allerdings kein echtes Konto mit Buchungsvorfällen, sondern eine Liste von SOLL-Buchungen. An jede SOLL-Buchung kann anschließend genau eine IST-Buchung angehangen werden. JVerein geht also, davon aus, jedes Mitglied jede Fälligkeit mit genau einer Buchung begleicht - was natürlich im Stratum 0 nicht der Fall ist. Das führt an manchen Stellen zu interessantem Verhalten der Software.
{{Todo|Splitbuchungen bei Überweisungen aus Mitgliedsbeiträgen und spenden }}
+
Wir hängen Mitgliedsbeiträge nicht an die SOLL-Buchungen an.
===Umbuchen===
+
Eine Buchung auf ein Mitgliedskonto bei der gleichzeitig eine SOLL- und eine IST-Buchung in einer Buchung erfolgt wird verwendet um Spenden einem Mitglied zuzuordnen, damit diese bei der automatischen Erstellung von Zuwendungsbescheinigungen auch dem Mitglieds zugeordnet werden.
 +
 
 +
Im Stratum 0 ist Mitgliedsbeitrag monatlich fällig. Daher wird für jeden Monat ein Abrechnungslauf durchgeführt und somit SOLL-Buchungen auf allen Mitgliedskonten erzeugt.
 +
 
 +
Es können individuelle ermäßigte Mitgliedsbeiträge vergeben werden. Gemäß Beitragsordnung laufen die nach einem Jahr aus. Um das gewährleisten zu können muss im JVerein bei einem Mitglied wo ein individuelle Beitrag festgelegt ist dies über eine Wiedervorlage mit Datum bis zu dem der Beiträg gültig ist hinterlegt werden.
 +
 
 +
Mitgliedsbeiträge gehen dem Verein nur durch Überweisungsgutschriften, sowie Bar-Einzahlungen zu. Lastschrift wird nicht angeboten.
 +
 
 +
==== Beitragsklassen ====
 +
Im JVerein können Beitragsklassen als Presets für den fälligen Mitgliedsbeitrag je Abrechnungszeitraum angelegt werden. Hierfür sind typischerweise Vollzahler und ermäßigte Zahler definiert.
 +
Diese Presets können allerdings für jedes Mitglied individuell überschrieben werden.
 +
 
 +
Zahlt ein Mitglied einen durch ein Preset abgedeckten Mitgliedsbeitrag, so sollte auch dieses Preset verwendet werden.
 +
 
 +
Zahlt ein Mitglied einen anderen Beitrag, so kann ein individueller Beitrag das Preset überschreiben. Individuelle Beiträge sind z.B. für Mitglieder mit individuellem Beitrag und Fördermitglieder üblich.
 +
 
 +
Falls ein Mitglied einen Ermäßigungsantrag stellt, gilt dieser nur für ein Jahr. Dafür kann in der Mitgliederverwaltung beim Bearbeiten eines Mitglieds auf dem Reiter "Mitgliedschaft" eine zukünftige Beitragsgruppe erstellt werden, die von JVerein automatisch ab einem bestimmten Datum gesetzt wird.
 +
 
 +
==== Abrechnungslauf durchführen ====
 +
Beim durchführen eines Abrechnungslauf sind folgende Schritte zu beachten:
 +
* Als Stichtag für die Abrechung sollte der letzte des Monats angegeben werden. Somit werden auch Mitglieder erfasst, die im Laufe des Monats eingetreten sind (und für die auch Mitgliedsbeitrag für einen ganzen Monat fällig wird).
 +
* JVerein möchte umbedingt angegebene SEPA-Fälligkeiten haben. Da kann man den vorgeschlagenen Wert akzeptieren.
 +
* Abrechnungsziel ist "Alle".
 +
* Freitext der Abrechnung ist "Mitgliedsbeitrag MM.YYYY".
 +
* Nach einem Klick auf den "Make it so"-Button muss man die von JVerein generierten XML-Dateien speichern. Diese werden im Weiteren nicht benötigt - ohne diesen Schritt führt JVerien die Abrechnung allerdings nicht durch.
 +
 
 +
==== Zuordnung der monatlichen IST-Buchungen ====
 +
Um das Zuordnen der monatlich eingehenden Mitgliedsbeiträge auf die Mitgliedskonten zu erleichtern gibt es das Tool [https://gitli.stratum0.org/stratum0/jverein-beitragshelfer jverein-beitragshelfer]. Um dieses Tool einzusezten sind folgende Schritte notwendig:
 +
* Durchführen des Abrechnungslauf.
 +
* Import der neuen Buchungen vom Giro-Konto ins Hibiscus und ins JVerein.
 +
* JVerein schließen.
 +
* jverein-beitragshelfer:allocate.py ausführen.
 +
** Dieses Tool benötigt den H2SqlServer. Um es möglichst einfach zu Starten wird das Script ./s0v-finanz/allocate.sh eingesetzt.
 +
** Dieses Tool verwendet in ./s0v-finanz/allow.csv abgelegte Muster zur Zuordnung der Buchungen zu den Mitgliedern. Diese Datei ist ist Teil des Repos.
 +
** Das Tool ordnet möglichst viele Buchungen anhand der Muster zu.
 +
* JVerein öffnen und verbleibende Buchungen von Hand zuordnen.
 +
 
 +
===Buchungen===
 +
{{Todo|Buchungsbegriff}}
 +
{{Todo|Dokumentation einer Buchung (notwendige und optionale Angaben, Belegnummer, UB-Nummer)}}
 
{{Todo|Umbuchen zwischen Konten}}
 
{{Todo|Umbuchen zwischen Konten}}
 
[[Kategorie:Dokumentation]][[Kategorie:Verein]]
 
[[Kategorie:Dokumentation]][[Kategorie:Verein]]
 +
 +
=== Mitgliederverwaltung ===
 +
In der JVerein-Navigation unter Start → JVerein → Mitglieder.
 +
 +
==== Neues Mitglied anlegen ====
 +
Der Button "Neu" ist etwas versteckt rechts unten auf der Seite.
 +
* Als "Adressierungszusatz" darf ein Nickname eingegeben werden, um die Mitglieder zuordnen zu können.
 +
* In JVerein ist es leider nicht möglich, ein ausgetretenes Mitglied wieder aufzunehmen, also mehr als ein Eintritts- oder Austrittsdatum einzustellen. Fürs Archiv sollte der alte Datensatz aber bestehen bleiben. In diesem Fall den alten Mitgliedsdatensatz ändern (z.B. "Nachname" auf "Nachname/1" ändern), um die Datensätze unterscheiden zu können. (Für ausgetretene Mitglieder werden eh keine Abrechnungsdaten/-mails mehr erzeugt, sodass niemand außer uns die Änderung im Nachnamen zu Gesicht bekommt :P)
 +
** Danach kann man das umbenannte Mitglied einfach per Rechtsklick duplizieren und wieder als neuen Datensatz einpflegen.
 +
* Das Geschlecht wird offiziell nicht erhoben, ist aber ein Pflichtfeld, sollte auf "ohne Angabe" gesetzt werden.
 +
* Auf dem Reiter "Mitgliedsbeitrag" die entsprechende Kategorie einstellen, oder einen individuellen Beitrag eingeben. Siehe [[#Mitgliedsbeitrag]] für mehr Infos.
 +
* Eintrittsdatum ist das Datum des Antrags, z.B. Date-Header in der E-Mail, oder das Anfangsdatum der Mitgliedschaft, wenn das vom Mitglied anders gewünscht wurde.
 +
* Alle anderen Registerseiten können so gelassen werden, werden nicht benötigt.
 +
* Dann Mitglied speichern.
 +
 +
Falls diesen Monat noch kein Abrechnungslauf stattgefunden hat, ist der Prozess beendet (Indikator: haben andere Mitglieder schon Sollbuchungen für diesen Monat auf ihren Mitgliedskonten?). Andernfalls muss noch der erste Mitgliedsbeitrag manuell als Sollbuchung hinzugefügt werden:
 +
* Dazu das Mitglied bearbeiten (Doppelklick in der Liste)
 +
* Auf dem Reiter "Mitgliedskonto" mit Rechtsklick eine neue Buchung mit dem Mitgliedsbeitrag hinzufügen:
 +
** das Eintrittsdatum einstellen
 +
** Verwendungszweck nach dem Schema ''Mitgliedsbeitrag MM.YYYY''
 +
** entsprechenden Betrag setzen
 +
** Buchungsart ''1000 - (E) IdB: Mitgliedsbeitrag''
 +
 +
==== Mitgliedschaft beenden ====
 +
* Kündigungsdatum ist nicht unbedingt nötig, ich trage dort aber immer das Datum aus der entsprechenden E-Mail o.ä. ein, damit sie später unter Umständen besser auffindbar ist.
 +
* Austrittsdatum ist immer der letzte Tag eines Monats.
 +
* Falls Beitragserlass gewährt wurde, eine entsprechende Sollbuchung erstellen, sodass das Konto ausgeglichen ist.
 +
 +
Weiteres Vorgehen:
 +
* [[Schlüssel]]gewalt entziehen ([[StratumKey]]-SSH-Zugang, Fahrradkeller, sonstige Schlüssel, inkl. Pfandrückgabe)

Aktuelle Version vom 28. April 2021, 15:29 Uhr

Schatzkarte
Beschreibung: Eine Übersicht über die Buchführung des Schatzmeisters für den Verein.
Kontakt: Schatzmeister
Status: aktiv (Was heißt das?)

Ziel dieser Seite

Ziel dieser Seite ist die Dokumentation der Struktur der Buchführung für den Verein. Die Dokumentation soll dabei zum Einen einen Überblick über die Aktivitäten im Hintergrund geben und zum Anderen als Anleitung für zukünftige Schatzmeister und Kassenprüfer gelten.

Diese Seite soll aber keine Einführung in JVerein sein. Das ist auf deren Webseite aktueller.

Arbeitsumgebung

JVerein

Als Buchhaltung kommt JVerein zum Einsatz. Prinzipiell unterstützt JVerein den Einsatz eines SQL-Servers im Netzwerk als Backend. Um allerdings Änderungen an der Datenbank ebenfals Versionieren zu können, setzen wir JVerein mit einer lokalen Datenbank ein.

Versionverwaltung

Alle finanz-relevanten Daten liegen in einem git. In dem Repository werden dabei rücksicktslos auch Binärdateien eingecheckt. Es gibt ein zentral gehostetes Repository, über das die Arbeitskopien synchron gehalten werden.

Das Repo hat folgende Struktur:

./s0v-finanz
   |- .jameica            Arbeitsverzeichnis von JVerein. 
   |- 2012                Buchführung und Belege für 2011 und 2012.
        |- Buchfuehrung2012.ods    Buchführung des Vereins bis Ende 2012. Dient nur noch als Referenz.
                                   Die Daten wurden ins JVerein übernommen.
        |- Belege                  Verzeichnis mit digitalen Kopien der Buchungsbelege
   |- 2013
        |- Belege                  Verzeichnis mit digitalen Kopien der Buchungsbelege
        |- Jahresbericht           Verzeichnis mit dem Jahresbericht des Schatzmeisters
        |- Prüfung                 Verzeichnis mit Unterlagen zur Kassenprüfung
   |- Auswertungen                 Auswertungen der Datenbank, z.B. Mitgliedskontenauszüge
   |- Vorlagen                     Vorlagen rund um das Schatzmeistern

Die Struktur des Ordners 2013 wiederholt sich für alle weiteren Jahre.

Locking

Bei der Versionierung von Binärdateien (Jverein-Datenbank) muss sichergestellt werden, dass nicht aus Versehen zwei Vorstandsentitäten gleichzeitig am Datenbestand arbeiten – ansonsten müsste man beide Änderungen auf Binärebene miteinander vereinen, und das will wirklich niemand. Deshalb wird mit Wikipedia-W.svgLocking gearbeitet, wofür das gitolite auf theodem Unterstützung mitbringt.

  • Vor Beginn der Arbeit wird das Skript ./lock.sh ausgeführt, das die entsprechenden Dateien sperrt und gleichzeitig auch neue Git-Revisionen holt.
  • Dann kann JVerein benutzt und Git-Commits erstellt werden.
  • Nach Beginn der Arbeit wird das Skript ./unlock.sh benutzt, um die neuen Revisionen auf den Server zu pushen und das Repo wieder zu entsperren.
    • Falls dieser Schritt vergessen wird, bekommt der nächste Benutzer beim Locking eine Fehlermeldung:
      FATAL: '.jameica/jverein/h2db/jverein.h2.db' locked by 'rohieb' since Sun Apr 23 17:23:46 2017
      In diesem Fall den entsprechenden Benutzer treten, oder dem Schatzmeister Bescheid sagen, um das Lock per Admin-Zugriff zu überschreiben. (Relevante Doku dazu)

Erweiterte Toollandschaft

Talk von Emantor dazu: Das Stratum 0 Finanzautomatisierungssystem

Um das Jverein als zentrales Tool sind im Laufe der Zeit weitere Tools als Helfer entstanden:

  • jverein-regressionstests
    • Test-suite, die in einem Post-Commit Hook des Git-Hosts durchgeführt wird.
    • Mit den Tests sollen regelmäßig bei den Kassenprüfung auftretende Fehler vor der Kassenprüfung gefunden werden.
  • H2SqlServer
    • Stellt eine Socket-Schnittstelle auf die H2SQL-Datenbank JVereins zur Verfügung. Wird von weiteren Tools genutzt, um Änderungen und Auswertungen an der Datenbank durchführen zu können.
  • python3-jverein
    • Client-Library für Python, die direkt mit dem H2Sql Server sprechen kann.
    • Hierüber lassen sich auch Mitgliedskonten abfragen
  • jverein-zuweundungsbescheinigung
    • Erstellt aus der Datenbank automatisiert Zuwendungsbescheinigungen für Mitgliedsbeiträge als PDF.
    • Enthält auch ein Latex-Template für die Zuwendungsbescheinigungen.
    • Wenn eine Adresse in der Datenbank hinterlegt wurde, wird diese verwendet.
  • finanz-helper
    • Sammlung von mehreren kleinen Tools.
    • Erstellen von Buchungsbelegen für folgende Fälle:
      • Bar-Einzahlung in ein internes Konto
      • Umbuchung zwischen internen Konten
    • Senden aller Mitgliedskontoauszüge aus einem Ordner an das jeweilige Mitglied
  • jverein-beitragshelfer
    • Tool zum automatisierten Zuordnen von eingegangenen Buchungen zu den entsprechenden Mitgliedern.
  • DEPRECATED jverein-guthabenstat
    • Tool zum Erstellen einer tageweisen Guthabenstatistik über alle Konten.
    • Der Export kann anschließend z.B. im Finanzbericht eingesetzt werden.
    • Sollte irgendwann einmal durch einen ReWrite ersetzt werden.
  • DEPRECATED jverein-member-reports
    • Tool zum Erstellen der Mitgliedskontoauszüge
    • Sollte irgendwann einmal durch einen ReWrite ersetzt werden.
  • DEPRECATED jverein-finance-report
    • Tool zum Erstellen von Finanz-Statistiken über den Verein.
    • Sollte irgendwann einmal durch einen ReWrite ersetzt werden.

Operatives

Regelmäßige Aufgaben

Die hier gelisteten Aufgaben sind in eine MUSS und SOLL Kategorie geordnet. SOLL Aufgaben erleichtern die gesamte Buchführung, MUSS Aufgaben sollten in jedem Fall regelmäßig durchgeführt werden. Dafür eignet sich gut das Vorstandstreffen am Anfang des Monats.

Monatlich

MUSS:

  • Kassen zählen

SOLL:

  • Spendendosen leeren
  • Matekasse nachführen
  • Verbrauchsmaterial nachführen
  • Belege einscannen/drucken
  • Belege im git einchecken

Jährlich

MUSS:

  • Jahresbericht erstellen

Konten im JVerein

Für den Verein werden im JVerein mehrere Konten mit unterschiedlichen Aufgaben abgebildet. Ein Konto kann dabei z.B. sein: Das Girokonto, die Barkasse, etc. Jedes Konto kann dabei in Unterkonten gegliedert sein.

Es gilt dabei folgendes:

  • Ein (Haupt-) Konto ist dabei jeweils die Kasse bzw. das Konto in dem das Geld wirklich liegt. Hauptkonten haben als Kontonummer eine Zahl.
  • Interne (Haupt-) Konten haben immer eine dreistellige Nummer. Externe (z.B. das Giro) haben wahrscheinlich eine längere.
  • Unterkonten sind eine Segmentierung eines Hauptkontos. Dabei wird eine Menge Geld in einem Haupt-Konto für einen speziellen Zweck reserviert.
  • Unterkonten werden durch Anhängen des Suffix "-$N" gebildet. Dabei ist $N der fortlaufende Index der Unterkonten des Hauptkontos.
  • Die Summe der Beträge in einem Haupt- und seiner Unterkonten entspricht der Menge an Geld die tatsächlich in dieser Ablage vorhanden ist.
  • Jedes Konto trägt am Anfang seines Namens einen Buchstaben als Kennung. Dieser Buchstabe wird bei der Bildung der Belegnummer verwendet.

Bei Erstellung des Artikels vorhandene Konten:

100             (B) Barkasse Stratum0
100-1           (D) 3D-Drucker Filamentspenden
100-2           (P) Pfand für Physische Schlüssel 
100-3           (F) Spenden for Plotter-Material
100-4           (S) Spenden für Material Stickmaschine
101             (V) Erstattungskasse Verbrauchsmaterial
102             (M) Matekasse
200024917       (G) Girokonto des Vereins
200*-1          (R) Rückstellungen Giro

Wird Geld zwischen Konten verschoben, muss im JVerein eine Umbuchung zwischen den Konten stattfinden. Dies gilt auch, wenn eine Umbuchung zwischen Haupt- und Unterkonto stattfindet, z.B. wenn Geld aus einem Konto mit Zweckbindung in das zugehörige Hauptkonto verschoben wird.

Konto: Barkasse

Konto, dass nicht zweckgebundenes Geld enthält.

Konto: 3D-Drucker Filamentspenden

Konto mit zweckgebundenem Geld aus der 3D-Druck Spendenbox

Konto: Pfand für Physische Schlüssel

Konto mit für ausgegebene Schlüssel eingenommenes Pfand. Geld ist nicht für operatives Geschäft verfügbar, da es bei Rückgabe des Schlüssels ebenfalls zurückgegeben werden muss. Für die Dokumentation der Schlüsselübergabe gibt es ein Template in:

./s0v-dokumente/vorlagen/Schluesselquittung.odt

Konto: Spenden for Plotter-Material

Konto mit zweckgebundenem Geld aus der Plotter Spendenbox.

Konto: Spenden für Material Stickmaschine

Konto mit zweckgebundenem Geld aus der Stickmaschinen Spendenbox.

Konto: Erstattungskasse Verbrauchsmaterial

Kasse, die im Space steht und es Mitgliedern erlaubt sich Verbrauchsmaterial direkt und ohne Antrag an den Vorstand selber zu erstatten. Dies soll Mitglieder motivieren notwendiges Verbrauchsmaterial selbständig zu beschaffen und das Geld dafür unbürokratisch zurück zu bekommen. Die Kasse wird i.d.R. mit 20 bis 50€ "aufgeladen", wenn die Einlage zu gering geworden ist.

In dieser Kasse ist durch die Mitglieder ein Kassenbuch zu führen, dass alle Geldbewegungen abbildet.

Konto: Matekasse

Kasse des Space-Kiosk für Getränke und Süßkram.

In dieser Kasse ist durch die Mitglieder ein Kassenbuch zu führen, dass alle Geldbewegungen abbildet.

Konto: Girokonto

Girokonto. Konto, dass nicht zweckgebundenes Geld enthält.

Konto: Rückstellungen Giro

Auf diesem Konto sind Gelder für zu erwartende Sonderausgaben besonders allokiert.


TO DO: Virtuelle Konten

Buchungsklassen und Buchungsarten

Die Buchungsklassen und Buchungsarten dienen der Gruppierung der Gewinn-und-Verlust-Rechnung des Vereins.

Buchungsarten werden in Buchungsklassen gruppiert. Innerhalb Buchungsklassen selber werden danach auch wieder Ein- und Ausgaben gruppiert.

Die Buchungsklassen haben dabei folgende Struktur:

  • 1000er-Klassen: Einnahmen des Vereins
  • 2000er-Klassen: Ausgaben des Vereins
  • 3000er-Klassen: Umbuchungen zwischen Vereinskonten

Innerhalb dieser Klassen können somit einzelne Buchungsklassen für bestimmte Zwecke definiert werden:

1000 Einnahmen
 |- 1001 Mitgliedsbeitrage
 |- 1002 Spenden
2000 Ausgaben
 |- 2001 Verein
 |- 2002 Space
3000 Umbuchungen
 |- 3000 Umbuchungen

Die Strukturierung in Buchungsklassen und Buchungsarten sollte so feingliedrig gewählt werden, dass sie übersichtlich Darstellt, welche (finanziellen) Aktivitäten im Verein stattgefunden haben. Diese Struktur wird sowohl für den Finanz-Jahresbericht, als auch für die Steuererklärung gegenüber dem Finanazamt herangezogen.

Mitgliedsbeitrag

JVerein führt für jedes Mitglied ein Mitgliedskonto. Auf diesem werden die fälligen Beiträge (SOLL-Buchungen) (anhand der Beitragsklassen bzw. der Abrechnungsläufe, sowie besonders angelegter Fälligkeiten) und die gezahlten Mitgliedsbeiträge (IST-Buchungen) gegenüber gestellt.

Ein Mitgliedskonto ist im JVerein allerdings kein echtes Konto mit Buchungsvorfällen, sondern eine Liste von SOLL-Buchungen. An jede SOLL-Buchung kann anschließend genau eine IST-Buchung angehangen werden. JVerein geht also, davon aus, jedes Mitglied jede Fälligkeit mit genau einer Buchung begleicht - was natürlich im Stratum 0 nicht der Fall ist. Das führt an manchen Stellen zu interessantem Verhalten der Software. Wir hängen Mitgliedsbeiträge nicht an die SOLL-Buchungen an. Eine Buchung auf ein Mitgliedskonto bei der gleichzeitig eine SOLL- und eine IST-Buchung in einer Buchung erfolgt wird verwendet um Spenden einem Mitglied zuzuordnen, damit diese bei der automatischen Erstellung von Zuwendungsbescheinigungen auch dem Mitglieds zugeordnet werden.

Im Stratum 0 ist Mitgliedsbeitrag monatlich fällig. Daher wird für jeden Monat ein Abrechnungslauf durchgeführt und somit SOLL-Buchungen auf allen Mitgliedskonten erzeugt.

Es können individuelle ermäßigte Mitgliedsbeiträge vergeben werden. Gemäß Beitragsordnung laufen die nach einem Jahr aus. Um das gewährleisten zu können muss im JVerein bei einem Mitglied wo ein individuelle Beitrag festgelegt ist dies über eine Wiedervorlage mit Datum bis zu dem der Beiträg gültig ist hinterlegt werden.

Mitgliedsbeiträge gehen dem Verein nur durch Überweisungsgutschriften, sowie Bar-Einzahlungen zu. Lastschrift wird nicht angeboten.

Beitragsklassen

Im JVerein können Beitragsklassen als Presets für den fälligen Mitgliedsbeitrag je Abrechnungszeitraum angelegt werden. Hierfür sind typischerweise Vollzahler und ermäßigte Zahler definiert. Diese Presets können allerdings für jedes Mitglied individuell überschrieben werden.

Zahlt ein Mitglied einen durch ein Preset abgedeckten Mitgliedsbeitrag, so sollte auch dieses Preset verwendet werden.

Zahlt ein Mitglied einen anderen Beitrag, so kann ein individueller Beitrag das Preset überschreiben. Individuelle Beiträge sind z.B. für Mitglieder mit individuellem Beitrag und Fördermitglieder üblich.

Falls ein Mitglied einen Ermäßigungsantrag stellt, gilt dieser nur für ein Jahr. Dafür kann in der Mitgliederverwaltung beim Bearbeiten eines Mitglieds auf dem Reiter "Mitgliedschaft" eine zukünftige Beitragsgruppe erstellt werden, die von JVerein automatisch ab einem bestimmten Datum gesetzt wird.

Abrechnungslauf durchführen

Beim durchführen eines Abrechnungslauf sind folgende Schritte zu beachten:

  • Als Stichtag für die Abrechung sollte der letzte des Monats angegeben werden. Somit werden auch Mitglieder erfasst, die im Laufe des Monats eingetreten sind (und für die auch Mitgliedsbeitrag für einen ganzen Monat fällig wird).
  • JVerein möchte umbedingt angegebene SEPA-Fälligkeiten haben. Da kann man den vorgeschlagenen Wert akzeptieren.
  • Abrechnungsziel ist "Alle".
  • Freitext der Abrechnung ist "Mitgliedsbeitrag MM.YYYY".
  • Nach einem Klick auf den "Make it so"-Button muss man die von JVerein generierten XML-Dateien speichern. Diese werden im Weiteren nicht benötigt - ohne diesen Schritt führt JVerien die Abrechnung allerdings nicht durch.

Zuordnung der monatlichen IST-Buchungen

Um das Zuordnen der monatlich eingehenden Mitgliedsbeiträge auf die Mitgliedskonten zu erleichtern gibt es das Tool jverein-beitragshelfer. Um dieses Tool einzusezten sind folgende Schritte notwendig:

  • Durchführen des Abrechnungslauf.
  • Import der neuen Buchungen vom Giro-Konto ins Hibiscus und ins JVerein.
  • JVerein schließen.
  • jverein-beitragshelfer:allocate.py ausführen.
    • Dieses Tool benötigt den H2SqlServer. Um es möglichst einfach zu Starten wird das Script ./s0v-finanz/allocate.sh eingesetzt.
    • Dieses Tool verwendet in ./s0v-finanz/allow.csv abgelegte Muster zur Zuordnung der Buchungen zu den Mitgliedern. Diese Datei ist ist Teil des Repos.
    • Das Tool ordnet möglichst viele Buchungen anhand der Muster zu.
  • JVerein öffnen und verbleibende Buchungen von Hand zuordnen.

Buchungen

TO DO: Buchungsbegriff
TO DO: Dokumentation einer Buchung (notwendige und optionale Angaben, Belegnummer, UB-Nummer)
TO DO: Umbuchen zwischen Konten

Mitgliederverwaltung

In der JVerein-Navigation unter Start → JVerein → Mitglieder.

Neues Mitglied anlegen

Der Button "Neu" ist etwas versteckt rechts unten auf der Seite.

  • Als "Adressierungszusatz" darf ein Nickname eingegeben werden, um die Mitglieder zuordnen zu können.
  • In JVerein ist es leider nicht möglich, ein ausgetretenes Mitglied wieder aufzunehmen, also mehr als ein Eintritts- oder Austrittsdatum einzustellen. Fürs Archiv sollte der alte Datensatz aber bestehen bleiben. In diesem Fall den alten Mitgliedsdatensatz ändern (z.B. "Nachname" auf "Nachname/1" ändern), um die Datensätze unterscheiden zu können. (Für ausgetretene Mitglieder werden eh keine Abrechnungsdaten/-mails mehr erzeugt, sodass niemand außer uns die Änderung im Nachnamen zu Gesicht bekommt :P)
    • Danach kann man das umbenannte Mitglied einfach per Rechtsklick duplizieren und wieder als neuen Datensatz einpflegen.
  • Das Geschlecht wird offiziell nicht erhoben, ist aber ein Pflichtfeld, sollte auf "ohne Angabe" gesetzt werden.
  • Auf dem Reiter "Mitgliedsbeitrag" die entsprechende Kategorie einstellen, oder einen individuellen Beitrag eingeben. Siehe #Mitgliedsbeitrag für mehr Infos.
  • Eintrittsdatum ist das Datum des Antrags, z.B. Date-Header in der E-Mail, oder das Anfangsdatum der Mitgliedschaft, wenn das vom Mitglied anders gewünscht wurde.
  • Alle anderen Registerseiten können so gelassen werden, werden nicht benötigt.
  • Dann Mitglied speichern.

Falls diesen Monat noch kein Abrechnungslauf stattgefunden hat, ist der Prozess beendet (Indikator: haben andere Mitglieder schon Sollbuchungen für diesen Monat auf ihren Mitgliedskonten?). Andernfalls muss noch der erste Mitgliedsbeitrag manuell als Sollbuchung hinzugefügt werden:

  • Dazu das Mitglied bearbeiten (Doppelklick in der Liste)
  • Auf dem Reiter "Mitgliedskonto" mit Rechtsklick eine neue Buchung mit dem Mitgliedsbeitrag hinzufügen:
    • das Eintrittsdatum einstellen
    • Verwendungszweck nach dem Schema Mitgliedsbeitrag MM.YYYY
    • entsprechenden Betrag setzen
    • Buchungsart 1000 - (E) IdB: Mitgliedsbeitrag

Mitgliedschaft beenden

  • Kündigungsdatum ist nicht unbedingt nötig, ich trage dort aber immer das Datum aus der entsprechenden E-Mail o.ä. ein, damit sie später unter Umständen besser auffindbar ist.
  • Austrittsdatum ist immer der letzte Tag eines Monats.
  • Falls Beitragserlass gewährt wurde, eine entsprechende Sollbuchung erstellen, sodass das Konto ausgeglichen ist.

Weiteres Vorgehen: