Mitgliedsbeitrags Plugin 3.0 Doku

Mitgliedsbeitrag
Einleitung

Dieses Plugin für Admidio errechnet Mitgliedsbeiträge und speichert sie in der Admidio-Datenbank. Die ermittelten Werte können über das Admidio-Modul „Listen“ angezeigt und ausgewertet werden.
Ein Export einer Datenträgeraustauschdatei mit dazugehörigem Datenträgerbegleitzettel ist ebenso möglich.
Diese neue Version von Mitgliedsbeitrag wurde komplett überarbeitet. Bei den Vorgängerversionen wurden die Beiträge vorrangig nach dem Alter errechnet. Die Möglichkeit feste Beiträge zu berechnen war nur in begrenztem Umfang möglich. In der neuen Version von Mitgliedsbeitrag werden alle Beitrage anhand von Rollenzugehörigkeiten ermittelt. (Einer Rolle kann in Admidio ein Beitrag und ein Beitragszeitraum zugeordnet werden. Diese Einträge wertet die neue Version von Mitgliedsbeitrag aus.)
Um altersabhängige Beiträge, Familienbeiträge und Spartenbeiträge berechnen zu können, wurden drei verschieden Rollentypen festgelegt:
Altersgestaffelte Rollen (Beitragsberechnung abhängig vom Alter des Mitglieds)
Familienrollen (Beitragsberechnung für Familien)
Festbeitragsrollen (Beitragsberechnung für Sparten, Ehrenmitglieder, Jugendliche etc.)
Die gesamte Bedienung sowie die Konfiguration erfolgt über die Weboberfläche des Plugins.
Hinweis: Verweise in dieser Beschreibung auf bestimmte Menüpunkte des Plugins sind folgendermaßen dargestellt: →<Reiter>-<Menüpunkt>-<ggf. Einzelpunkt> (z.B. →Setup-Familienrollen-Präfix)
Installation

Wie allgemein für Plugins üblich muss die Zip-Datei lediglich in das adm_plugins Verzeichnis der Admidio Installation entpackt werden.

Folgende Zeilen sind in die Datei
\admidio\adm_themes\modern\my_body_bottom.php
einzufügen (z.B. nach dem Aufruf des Moduls organisation.php):
include(SERVER_PATH.“/adm_plugins/mitgliedsbeitrag/mitgliedsbeitrag.php“);
Der erste Aufruf:

Bei jedem Start prüft das Plugin ob die Versionsnummern in der config.ini und der version.php übereinstimmen. Bei Unterschiedlichkeit wird eine Setuproutine aufgerufen.
Im ersten Durchgang der Setuproutine wird die Datenbank auf fehlende Profilfelder und Kategorien überprüft.

Falls Profilfelder oder Kategorien fehlen, können sie über den Button „Weiter“ angelegt werden.

Nur wenn alle notwendigen Profilfelder vorhanden sind, kann zum zweiten Durchgang gewechselt werden.
Zweiter Durchgang: Soll-Ist-Vergleich

Der zweite Durchgang der Setuproutine ist nur ein Soll-Ist-Vergleich um aufzuzeigen, wie die notwendigen Kategorien und Profilfelder definiert sein sollten. Unterschiede werden fett hervorgehoben.
Es wäre z.B. möglich, daß bereits ein Profilfeld mit dem Namen „Kontonummer“ existiert, es jedoch nicht numerischen Datentyps ist. Notwendige Änderungen werden nicht durch die Setuproutine durchgeführt.
Funktionsweise

Das Plugin berechnet die Mitgliedsbeiträge anhand der Rollenzugehörigkeit eines Mitglieds. Ein Mitglied kann Angehöriger einer oder mehrerer Rollen sein. Die dabei ermittelten Beiträge werden aufsummiert. In welcher Kategorie sich diese Rollen befinden ist nicht von Bedeutung.
Für die Beitragsberechnung sind nur Rollen relevant, bei denen Beitrag und Beitragszeitraum definiert sind.
Der Beitrag einer Rolle ist immer ein Jahresbeitrag. Über den Beitragszeitraum einer Rolle wird die Funktion „anteilige Berechnung“ realisiert.
Beispiel:
Mitglied tritt zum 01.11. dem Verein bei
Beitrag der Rolle: 120 EUR
Beitragszeitraum der Rolle: Einmalig –> Mitgliedsbeitrag: 120 EUR
Beitragszeitraum der Rolle: Jährlich –> Mitgliedsbeitrag: 120 EUR
Beitragszeitraum der Rolle: Halbjährlich –> Mitgliedsbeitrag: 60 EUR
Beitragszeitraum der Rolle: Vierteljährlich –> Mitgliedsbeitrag: 30 EUR
Beitragszeitraum der Rolle: Monatlich –> Mitgliedsbeitrag: 20 EUR
Die verschiedenen Rollentypen

Altersgestaffelte Rollen

Für eine altersgestaffelte Beitragsermittlung muß für jeden Altersbereich eine entsprechende Rolle vorhanden werden. Dabei muß der gesamte Altersbereich (ohne Lücken) abgedeckt sein.
Der Rollenname ist von entscheidender Bedeutung, da darin der Altersbereich mit angegeben wird. Die relevanten Altersangaben müssen dazu von Trennzeichen (→ Setup-Altersgestaffelte Rollen-Trennzeichen) umschlossen sein. Mögliche Trennzeichen wären z.B. * oder # oder + oder - oder _ oder ! oder %.
Beispiele für Rollennamen mit dem Trennzeichen *:
Mitglieder zwischen *0* und *14* Jahren
Mitglieder von *15* bis *17* Jahren
Mitglieder *18* bis *99* Jahre
Ein neues Mitglied wird bei seiner Erstaufnahme in eine dieser altersgestaffelten Rollen aufgenommen (in welche ist nicht von Bedeutung). Über →Allgemein-Beitragsberechnung-Neuzuordnung wird eine Routine angestoßen, die alle Mitglieder von altersgestaffelten Rollen anhand ihres Alters neu auf die altersgestaffelten Rollen verteilt.
Nicht von Bedeutung ist, in welcher Kategorie sich diese Rollen befinden.
Familienrollen

Alle Familienrollen müssen mit einem fest definierten Präfix beginnen, z.B. „Fam.“ oder „Familie“(→ Setup-Familienrollen-Präfix).
Beiträge, die bei einer Familienrolle definiert sind, gelten für die gesamte Familie, nicht für jedes Einzelmitglied.
Wichtiger Hinweis: Auch wenn nicht mit Familienrollen gearbeitet wird, muss trotzdem ein Familienrollen-Präfix definiert sein, ansonsten interpretiert das Plugin alle Beitragsrollen als Familienrollen und berechnet die Beiträge falsch.
Beitrag, Beitragszeitraum und Beschreibung von Familienrollen können über eine Routine (→Setup-Familienrollen) zentral geändert werden.
Im Gegensatz zu den Vorgängerversion von Mitgliedsbeitrag müssen Familien nicht mehr innerhalb einer Kategorie zusammengefasst werden.
Besonderheit Zahlungspflichtiger
Bei Familienrollen wird das erste Mitglied, bei dem Kontodaten hinterlegt sind, als Zahlungspflichtiger bestimmt. Diesem Zahlungspflichtigen werden die Beiträge in die Datenbank geschrieben. Die Kontodaten sollten deshalb nur bei einem einzigen, erwachsenen Mitglied hinterlegt sein.
Sind bei keinem Familienmitglied Kontodaten hinterlegt, so wird ein Zahlungspflichtiger nach dem Zufallsprinzip bestimmt. Dies könnte unter Umständen auch ein minderjähriges Kleinkind sein.
Um diesem Sonderfall vorzubeugen, kann bei einer Familie ein Leiter bestimmt werden. Der Leiter ist in diesem Fall für das Programm der Zahlungspflichtige, unabhängig davon, ob bei Ihm Kontodaten hinterlegt sind oder nicht.
Festbeitragsrollen

Alle weiteren Rollen, bei denen ein Beitrag und ein Beitragszeitraum definiert sind fallen unter „Festbeitragsrollen“. Die Namen dieser Rollen und die Kategorien in denen sie sich befinden, sind nicht von Bedeutung. Sobald ein Mitglied Angehöriger einer oder auch mehrerer dieser Rollen ist, wird der Beitrag der Rolle in die Beitragsberechnung mit einbezogen.
Über Festbeitragsrollen können
beliebig viele Spartenbeiträge
Beiträge für Jugendliche
Beiträge für Schüler
Beiträge für Senioren usw
berechnet werden.
Export

Als einzige Exportfunktion bietet das Plugin die Möglichkeit eine Datenträgeraustauschdatei (dtaus0.txt) mit dazugehörigem Begleitzettel zu erstellen.
Alle weiteren Listen muss sich jeder Nutzer selbständig über “Eigene Listen” generieren.
Marker für "Bezahlt"

Wenn der Mitgliedsbeitrag bezahlt wurde, kann dies in der Datenbank vermerkt werden (→Allgemein-Zahlungen).
Eine Neuberechnung von Mitgliedsbeiträgen erfolgt nur für diejenigen Mitglieder, bei denen kein „Bezahlt Datum“ gesetzt ist.
Ein zentrales Zurücksetzen dieses Markers ist über →Setup-Reset möglich.
Bedienung

Das Plugin wird über ein Accordion-Menü (ähnl. Admidio-Organisationseinstellungen) gesteuert.
Über die Menüpunkte des Reiters Allgemein wird das Plugin verwaltet. Hier wird die Beitragsberechnung gestartet, der Export und verschiedene Analysen durchgeführt.
Alle Grundeinstellungen sind über die Menüpunkte des Reiters Setup erreichbar.
Jeder Menüpunkt ist zudem mit einem kurzen Hilfetext versehen.
Das Setup-Menü



Reset



Über Reset können alle Beitragsdaten der Mitglieder in der Datenbank gelöscht werden. Dies sollte in der Regel vor einem neuen Abrechnungsjahr geschehen.
Beitragseinstellungen



Über Beitragseinstellungen können allgemeine Einstellungen getätigt werden.
Altersgestaffelte Rollen



Einstellungen für die altersgestaffelten Rollen.
Familienrollen



Einstellungen für die Familienrollen.
DTA-Export



Die Kontodaten des Empfängers für den automatischen Bankeinzug.
Rollenprüfung





Einstellungen für die Rollenprüfung
Pluginfreigabe



Einstellungen, wer das Plugin aufrufen darf.
Plugininformationen



Allgemeine Plugininformationen.
Das Allgemein-Menü



Beitragsberechnung



Über Beitragsberechnung werden Mitglieder der altersgestaffelten Rollen neu zugeordnet und die Neuberechnung der Mitgliedsbeiträge durchgeführt.
Beitragsanalyse



Die Beitragsanalyse dient als schneller Überblick über die vorraussichtlichen Mitgliedsbeiträge.
Zahlungen



Über Zahlungen kann ein Bezahlt-Datum in die Datenbank geschrieben werden.
DTA-Export



Über DTA-Export werden die Datenträgeraustauschdatei und der Begleitzettel erstellt.
Rollenprüfung





Diverse Prüfungen von Beitragsrollen.
Rollenübersicht



Die Rollenübersicht liefert ein Übersicht über alle Beitragsrollen und deren Anzahl an Mitgliedern.
Wie fange ich an/Die ersten Schritte

Sicherung der Admidio-Datenbank anlegen
Mitgliedsbeitrag zum ersten Mal starten; dabei werden alle fehlende Profilfelder angelegt.
Festlegen, mit welchen Rollen man arbeiten will.
Die Rollen konfigurieren
Wenn mit altersgestaffelten Rollen gearbeitet wird:
Die Rollen gemäß der beschriebenen Nameskonvention anlegen und dabei beachten, dass keine Lücken vorhanden sind (z.B. „Alter -0- bis -17-“ oder „Alter -18- bis -99-“) Sollte ein Mitglied dabei älter als 99 Jahre sein, wird bei → Allgemein-Beitragsberechnung-Neuzuordnung eine Fehlermeldung ausgegeben.
Beitrag und Beitragszeitraum dieser Rollen festlegen (Beschreibung kann, muss aber nicht angegeben werden)
in → Setup-Altersgestaffelte Rollen einen Stichtag und das verwendete Trennzeichen definieren
über → Allgemein-Rollenübersicht prüfen, ob alle altersgestaffelten Rollen erkannt und angezeigt werden
alle Mitglieder, die in diese altersgestaffelten Rollen sollen, zu einer Rolle hinzufügen
über → Allgemein-Beitragsberechnung-Neuzuordnung alle Mitglieder (entsprechend ihres Alters) neu zuordnen.
Info: Aufgrund des Algorithmus werden zuerst alle alten Rollenmitgliedschaften gelöscht und anschließend neue gesetzt. Kann hierbei ein Mitglied keiner altersgestaffelten Rolle zugeordnet werden, bricht das Programm genau bei diesem Mitglied mit einer Fehlermeldung ab. Alle noch nicht zugeordneten Mitglieder werden nicht mehr abgearbeitet.
Info: Mitglieder, die nach dem Stichtag geboren sind dürfen nicht in eine altersgestaffelte Rolle, da sie für das Programm noch nicht existieren. Diese Mitglieder deshalb entweder in einer Familie oder in einer extra Festbeitragsrolle unterbringen.
Wenn mit Familienrollen gearbeitetet wird:
Alle Familienrollen anlegen und dabei beachten, dass sie mit demselben Präfix beginnen. (z.B. Familie Meier, Familie Huber oder Fam. Meier Fam. Huber)
in → Setup-Familienrollen das verwendete Präfix, den Beitrag und den Beitragszeitraum definieren (Beschreibung kann, muss aber nicht angegeben werden) und speichern.
über → Allgemein- Rollenübersicht prüfen, ob alle Familienrollen erkannt und angezeigt werden
Den Familienrollen Mitglieder zuordnen
Wenn mit Festbeitragsrollen gearbeitetet wird:
Alle Festbeitragsrollen anlegen und Mitglieder zuordnen
über → Allgemein- Rollenübersicht prüfen, ob alle Rollen erkannt und angezeigt werden
→ Allgemein-Rollenprüfung starten und Fehler korrigieren
Die config.ini

Die Einstellungen in der config.ini sind in mehrere Gruppen gegliedert. Jeder Gruppenname ist in eckige Klammern gesetzt, wobei die Gruppennamen (bis auf wenige Ausnahmen) den Abschnitten im Setup-Menü entsprechen.
Kursive Angaben entsprechen den Bezeichnungen im Setup-Menü.
Folgende Gruppen sind vorhanden:

[Pluginfreigabe]
[Plugininformationen]
[Beitrag]
[Altersrollen]
[Familienrollen]
[DTA-Export]
[Rollenpruefung]
Die Gruppe [Pluginfreigabe]

Beschreibung:
Rollenauswahl der Rollen, die das Plugin aufrufen dürfen. Für jede freigegebene Rolle existiert eine eigene Zeile (Syntax: freigabe[] = <rol_id>)
Beispiel:
[Pluginfreigabe]
freigabe[] = 1
freigabe[] = 122
→ Alle Mitglieder der Rollen mit der rol_id 1 und der rol_id 122 dürfen das Plugin aufrufen.
Die Gruppe [Plugininformationen]

Beschreibung:
Version (plgin_mb_version), Stand (plgin_mb_stand) und Name des Plugins (plgin_mb_name). Anhand dieser Informationen stellt das Plugin fest, ob ein Update vorliegt und die Setuproutine aufgerufen werden muss.
Beispiel:
[Plugininformationen]
plgin_mb_version = 3.0.0
plgin_mb_stand = 21.06.2012
plgin_mb_name = Mitgliedsbeitrag
Die Gruppe [Beitrag]

Beschreibung:
Hier sind die Werte Präfix (beitrag_prefix), Suffix (beitrag_suffix), Beiträge abrunden (beitrag_abrunden), Mindestberechnungsbetrag (beitrag_mindestbetrag) und Anteilige Beitragsberechnung (beitrag_anteilig) für die Beitragseinstellungen gespeichert.
Die Parameter beitrag_abrunden und beitrag_anteilig sind logische Werte (1 entspricht JA, < leer> entspricht NEIN).
Beispiel:
beitrag_prefix = Mitgliedsbeitrag 2012
beitrag_suffix = -ant.-
beitrag_abrunden =
beitrag_mindestbetrag = 1
beitrag_anteilig = 1
Die Gruppe [Altersrollen]

Beschreibung:
In dieser Gruppe sind der Stichtag (altersrollen_stichtag) und das Trennzeichen (altersrollen_token) für Altersgestaffelte Rollen definiert.
Beispiel:
altersrollen_stichtag = 01.01.2012
altersrollen_token = -
Die Gruppe [DTA-Export]

Beschreibung:
In dieser Gruppe sind Kontonummer (target_ktonr), Bankleitzahl (target_blz), Bank (target_bank), Kontoinhaber (target_inhaber) und DTA-Dateiname (dta_dateiname) für den DTA-Export definiert.
Beispiel:
target_ktonr = 12345678
target_blz = 72050101
target_bank = Sparkasse Musterstadt
target_inhaber = Verein ABC
dta_dateiname = dtaus0.txt
Die Gruppe [Familienrollen]

Beschreibung:
In dieser Gruppe sind Präfix (familienrollen_prefix), Beitrag (familienrollen_beitrag), Beitragszeitraum (familienrollen_zeitraum) und Beschreibung (familienrollen_beschreibung) von Familienrollen definiert. Mögliche Werte für den Beitragszeitraum sind 12 (=monatlich), 4 (=vierteljährlich), 2 (=halbjährlich), 1 (=jährlich), -1 (=einmalig) oder – (= kein Beitragszeitraum)
Beispiel:
familienrollen_prefix = Fam.
familienrollen_beitrag = 100
familienrollen_zeitraum = 12
familienrollen_beschreibung = Familienbeitrag
Die Gruppe [Rollenpruefung]

Beschreibung:
In dieser Gruppe befinden sich die Definitionen Altersgrenze (familienrollen_bis_alter), Mindestanzahl (familienrollen_min_member), Erwachsene Min (familienrollen_min18_member), Erwachsene Max (familienrollen_max18_member), Rollenmitgliedschaften (Pflicht) und Rollenmitgliedschaften (Ausschluss) der Rollenprüfung.
Die Rollenmitgliedschaften (Pflicht):
Die Parameter altersrollenpflicht und familienrollenpflicht sind logische Werte (1 entspricht JA, < leer> entspricht NEIN).
Für jede Pflichtmitgliedschaft in einer Festbeitragsrolle existiert eine eigene Zeile (Syntax: fixrollenpflicht[] = <rol_id>)
Die Rollenmitgliedschaften (Ausschluss):
Der Parameter altersrollenfamilienrollen ist ein logischer Wert (1 entspricht JA, < leer> entspricht NEIN; Beispiel: „altersrollenfamilienrollen = 1“ bedeutet Altersgestaffelte Rollen und Familienrollen schließen sich gegenseitig aus).
Für jeden Ausschluss einer Familienrolle zu einer Festbeitragsrolle bzw. Altersgestaffelten Rolle zu einer Festbeitragsrolle existiert eine eigen Zeile ((Syntax: familienrollenfix[] = <rol_id> bzw. altersrollenfix[] = <rol_id>)
Beispiel:
familienrollen_bis_alter = 60
familienrollen_min_member = 2
familienrollen_min18_member = 1
familienrollen_max18_member = 2
altersrollenpflicht =
familienrollenpflicht = 1
fixrollenpflicht[] = 102
fixrollenpflicht[] = 103
altersrollenfamilienrollen =
familienrollenfix[] = 102
familienrollenfix[] = 103
altersrollenfix[] = 102
altersrollenfix[] = 109
Beispiel einer config.ini

[Pluginfreigabe]
freigabe[] = 1
freigabe[] = 122
[Plugininformationen]
plgin_mb_version = 3.0.0
plgin_mb_stand = 21.06.2012
plgin_mb_name = Mitgliedsbeitrag
[Beitrag]
beitrag_prefix = Mitgliedsbeitrag 2012
beitrag_suffix = -ant.-
beitrag_abrunden =
beitrag_mindestbetrag = 1
beitrag_anteilig =
[Altersrollen]
altersrollen_stichtag = 01.01.2012
altersrollen_token = -
[DTA-Export]
target_ktonr = 12345678
target_blz = 72050101
target_bank = Sparkasse Musterstadt
target_inhaber = Verein ABC
dta_dateiname = dtaus0.txt
[Familienrollen]
familienrollen_prefix = Fam.
familienrollen_beitrag = 100
familienrollen_zeitraum = 12
familienrollen_beschreibung = Familienbeitrag
[Rollenpruefung]
familienrollen_bis_alter = 60
familienrollen_min_member = 2
familienrollen_min18_member = 1
familienrollen_max18_member = 2
altersrollenfamilienrollen =
altersrollenpflicht =
familienrollenpflicht = 1
fixrollenpflicht[] = 102
fixrollenpflicht[] = 103
familienrollenfix[] = 102
familienrollenfix[] = 103
altersrollenfix[] = 102
altersrollenfix[] = 109