Lifetime-Beitragssoll von Vereinsmitgliedern automatisch berechnen
Hallo zusammen,
ich möchte mit ninox gern eine Mitgliederverwaltung inkl. kleiner Buchaltung für meinen Verein aufbauen. Um einen schnellen Überblick über Beitragsrückstände zu bekommen, möchte ich Beitragssoll und -haben jedes Mitglieds gegenüberstellen. Also eine Art Lifetime-Soll und Lifetime-Haben.
Folgende Probleme versuche ich dabei seit einiger Zeit zu lösen:
1. dürfen Beitragsänderungen nicht rückwirkend Schulden im Lifetime-Soll erzeugen
2. soll mit Eintreten des 18. Geburtstages zum nächsten Monat der monatliche Beitragssatz automatisch von "ermäßigt" auf "voll" springen
3. es sei denn, dem Mitglied ist ein Sonderstatus wie "frei" oder "ermäßigt" zugeordnet
Und 4. wie bekomme ich es hin, dass ich dafür nicht händisch jeden Monat 70 Rechnungenschreiben muss?
Die Vorlage "Rechnungen", beinhaltet schon vieles, was ich brauchen kann, inkl. einer "Bremse", sodass alte Rechnungen nicht aktualisiert werden, wenn sich der Preis z. B. eines Artikels ändert. Das ist gut.
Ich möchte aber gerne erreichen, dass sich der Lifetime-Soll eines Mitglieds automatisch jeden Monat um den entsprechenden Beitrgassatz erhöht.
Muss mich vorab entschuldigen, bin in diesen Dingen keine Leuchte und habe mich gefühlt schon durch das ganze Handbuch und die Beiträge hier gelesen - mehrfach :-}. Daher weiß ich z. B., dass es keine Funktion gibt, die den Prozess "Beitragssoll automatisch erhöhen" an jedem 1. eines Monats auslösen kann.
Ein Trigger soll helfen, irgendwie fehlen mir dafür aber die nötigen Synapsen und das ist leider ein "Killerkriterium" für den Einsatz von ninox an dieser Stelle. Insofern wäre ich für den einen oder anderen Rat wirklich sehr dankbar.
Mit herzlichem Dank vorab und Gruß
Christiane
16 Antworten
-
Hallo Christiane, das müsste alles hinzubekommen sein. Allerdings sehe ich einen Widerspruch zwischen den Punkten 2. und 3.: Beitragssatz automatisch von 'ermäßigt' auf 'voll', es sei denn Beitragssatz = 'ermäßigt'?
Davon abgesehen: Soll die "Lifetime"-Berechnung bei Null beginnen oder sollen dazu Daten aus der Vergangenheit herangezogen werden? Falls letzteres: Auf welche Weise (Datenimport, Anfangssaldo)?
-
Hallo Copytexter,
vielen Dank für die Antwort.
Zum Widerspruch zwischen 2 und 3: ja sorry, gleicher Begriff für nur fast gleiche Dinge. Bei uns ist es so, dass Schüler über 18 Jahre oder Härtefälle den ermäßigten Beitrgassatz zugestanden bekommen können und Vorstandsmitglieder in ihrer Amtszeit beitragsfrei sind. Das sind aber Sonderstatus und die möchte ich bisher dem System über eine Checkbox oder so mitteilen, damit sich die automatische Berechnung anpasst. So nach dem Motto: wenn Häkchen bei ermäßigt (oder Sonderermäßigt), ziehe den ermäßigten Beitragssatz oder wenn Häkchen bei frei, ziehe den freien Beitragssatz (also 0,-) sonst berechne nach Alter. Die Beitragssätze "voll", "ermäßigt" und "frei" wollte ich in eine separate Tabelle tun, die bei einer "globalen" Beitragserhöhung (also nicht persönlicher Zustand) angepasst wird.
Für die Lifetime-Berechnung wollte ich einen Übertrag aus der Vergangenheit einbeziehen. Nur ein Wert als Anfangssaldo. Ob ich den importiere oder händisch einfüge weiß ich noch nicht. Wenn es am sinnvollsten ist, die csv mit einer entsprechenden Spalte zu versehen, würde ich das darin vorbereiten. Das wäre kein Ding. Später in ninox neu angelegte Mitglieder müssten hier dann natürlich eine 0,- zu stehen haben.
-
Also, wenn ich es richtig verstanden habe, dann gibt es prinzipiell nur drei Beitragssätze: "Normal", "Ermäßigt" und "Frei".
Die automatische Erkennung des Altersübergangs von 17 auf 18 mit entsprechender Anpassung des Beitrag ließe sich wohl am besten mit einem Funktionsfeld lösen. Schon mal ein erster Ansatz zu den Punkten 2 und 3:
Eine Tabelle 'Beitragssätze' mit den Feldern 'Bezeichnung' (Text) sowie 'Beitrag' (Zahl) und drei Datensätzen für "Normal", "Ermäßigt" und "Frei" nebst den dazugehörigen Beträgen.
Und die Tabelle 'Mitglieder' mit (mindestens) diesen Feldern:
Name (Text)
Geburtsdatum (Datum)
Beitragssatz (Auswahl: "Normal", "Ermäßigt", "Frei")Aktueller Beitrag (Berechnung), mit folgendem Code:
if text(Beitragssatz) = "Frei" then
first(select 'Beitragssätze' where Bezeichnung = "Frei").Beitrag
else
if text(Beitragssatz) = "Ermäßigt" or age(Geburtsdatum) < 18 then
first(select 'Beitragssätze' where Bezeichnung = "Ermäßigt").Beitrag
else
first(select 'Beitragssätze' where Bezeichnung = "Normal").Beitrag
end
end
Problem: Der Beitrag wird damit sofort aktualisiert, nicht erst zum nächsten Monat. Wobei sich aber sowieso die Frage stellt, ob letzteres immer stimmen würde, z. B. bei einer manuellen Änderung des Beitragssatzes. Den Zeitpunkt, ab dem der neue Beitrag gilt, müsste man also wohl in jedem Fall gesondert festhalten, sowie auch den bisherigen Beitrag, damit man ggf. im laufenden Monat noch korrekt abrechnen kann. Mit Funktionsfeldern kann man aber keine anderen Datenfelder manipulieren - hm ...
Dazu habe ich ad hoc keine brauchbare Idee. Aber vielleicht denke ich auch gerade mal wieder zu kompliziert und jemand anderem fällt etwas viel Besseres dazu ein (oder zu den anderen Punkten). Ansonsten werde ich mir übers Wochenende auch noch mal Gedanken machen.
-
^^ mal so ein Einwurf von mir: Das von Copytexter mit dem derzeit gültigen Beitrag gefüllten Funktionsfeld könnte man doch heranziehen, um in einer mit dem Mitglied verknüpften Tabelle (z.B. Beiträge) per Skript den Beitrags-Soll für noch nicht erhobene Monate zu generieren und somit das Soll des Mitglieds zu erhöhen. Zahlungen, Vorträge und sonstige Bewegungen im Mitgliedskonto könnte man in einer separaten, ebenfalls verknüpften Tabelle als Ist erfassen und mit der Tabelle "Beiträge" saldieren.
Vollautomatisch zum Monatsersten wird das nicht funktionieren - man könnte aber in einer Art Portal ein Skript hinterlegen, in dem
a) Ein Array aus den Mitgliedern gebildet
b) das Mitglieder-Array in einer Schleife durchlaufen wird
c) in dieser Schleife in der Tabelle Beiträge ein neuer fälliger Beitrag erstellt wird, sofern der letzte dort vorgefundene nicht aus dem aktuellen Monat stammt.
Das Skript müsste halt monatlich einmal per Befehlsschaltfläche angestossen werden...
Ein fertiges Skript bekomm' ich um die Uhrzeit nicht mehr hin, vielleicht ist aber wenigstens der Ansatz hilfreich ;-)
lg, Torsten
-
Moin Torsten, danke für den Input. An Extra-Tabellen für die Beitragsrechnungen (Punkt 4) hatte ich natürlich auch gedacht. Auf die Idee, diese auch zur Ermittlung des vorherigen Beitrags heranzuziehen, bin ich allerdings nicht gekommen. Könnte klappen, allerdings fällt es mir momentan auch schwer, das im Detail durchzuspielen. Wenn du das vielleicht noch ein bisschen konkretisieren könntest?
Als ein grundlegendes Problem sehe ich den Zeitfaktor. Werden die Beitragsrechnungen immer zum selben Zeitpunkt erstellt? Kann es vorkommen, dass eine manuelle Änderung des Beitragsstatus erst in dem Monat erfasst wird, in dem sie auch schon gilt? Diese Eventualitäten müsste man ja alle berücksichtigen. Dazu wäre auch noch Input von Christiane hilfreich.
Oder man verzichtet auf das Funktionsfeld und ermittelt den aktuellen Beitrag "auf Knopfdruck" erst mit der monatlichen Erstellung der Beitragsrechnungen. Mit dem Code der Schaltfläche ließe sich ja auch das Datum abfragen und entsprechende Werte in Felder schreiben. Ein fertiges Script habe ich zwar auch noch nicht, aber
ich werde mir mal Gedanken dazu machen. -
Der vorherige Beitrag interessiert mich ja eigentlich bei der Berechnung gar nicht - wenn ich den aktuellen Monat abrechnen will ist erstmal nur der aktuell gültige Beitrag interessant - und den kann ich dem von Dir konstruierten Funktionsfeld entnehmen.
Wird die Beitragsberechnung getriggert, muss das Script einfach nachschauen, ob's zu dem Mitglied für den aktuellen Monat bereits einen Datensatz in der Tabelle "Beiträge" gibt. Ist dem nicht so, erstellt das Script eben einen mit dem aktuellen Beitrag aus dem Funktionsfeld.
However, das alles setzt voraus, dass zumindest einmal im Monat eine Befehlsschaltfläche ausgelöst wird - von wirklichem Automatismus sind wir also noch ein gutes Stück entfernt.
lg, Torsten
-
Hallo Torsten und Copytexter,
erst mal vielen Dank für den Input. Ich werde mir über das Geschriebene und die Eventualitäten Gedanken machen. Das kann aber ein paar Tage dauern, da der Verein nur mein Hobby ist und im Moment kaum Zeit dafür. Zwei Dinge aber schon jetzt: a) Es sind tatsächlich immer nur die 3 Beitragssätze FREI, ERMÄSSIGT und VOLL. b) Was Torsten zum Schluss schreibt, ist bisher auch mein Wissensstand. Die Datenbank ist ja zur Erleichterung gedacht und das wäre nicht der Fall, wenn man daran denken muss, 1 x / Monat einen Knopf zu drücken.
Wie gesagt, ich werde mir das so bald wie möglich zu Gemüte führen. Bis dahin noch mal Dank und Gruß
Christiane
-
Hallo Christiane,
ja, man muss daran denken - aber Ninox kann einen dabei durchaus unterstützen. Denkbar wäre z.B. die besagte Befehlschaltfläche nur dann sichtbar zu machen, wenn es Mitglieder ohne Beitragsberechnung für den aktuellen Monat gibt, also etwas zu tun ist.
Wie auch immer - ich denke viel komfortabler wirst Du's sonst auch nicht gelöst bekommen...
lg, Torsten
-
Hallo Christiane, wie versprochen habe ich mir über's Wochenende mal Gedanken zu deinen Fragen bzw. Anforderungen gemacht. Also Lifetime-Salden, die Zuordnung der verschiedenen Beitragssätze sowie die automatisierte Erstellung der monatlichen Beitragsrechnungen. Das Ergebnis zu erklären wäre zu aufwändig, deshalb habe ich dir die komplette Datenbank zum Download auf einen Dropbox-Server gelegt:
https://www.dropbox.com/s/ratbeaegfxzwqf5/Verein_Christiane.ninox?dl=0
Es gibt natürlich noch viele lose Enden, die du mit dem entsprechenden Detailwissen selbst verknüpfen müsstest, aber rein technisch funktioniert die Lösung erst mal und erfüllt alle genannten Anforderungen. Wobei meine Testmöglichkeiten mangels relevanter Daten natürlich begrenzt waren. Ich kann also keineswegs ausschließen, dass sich beim Testen mit "echten" Daten hier und da doch noch Probleme ergeben. Dann müsstest du dich halt noch mal melden.
Ich will ansonsten auch gar nicht viel dazu schreiben - Probieren geht über Studieren -, aber einen Punkt sollte ich doch noch erwähnen: Für die Unterscheidung zwischen "Ermäßigt" als Sonderstatus und "Ermäßigt" für die Unter-18-Jährigen war zwingend ein weiteres Kriterium erforderlich. Dazu habe ich einen Beitragssatz namens "Ermäßigt (U18)" erstellt, den man all jenen Mitgliedern zuordnen kann, die ausschließlich altersbedingt in den Genuss des reduzierten Beitrags kommen.
Und da du verständlicherweise auch nicht jeden Monat irgendwelche Butons drücken wolltest, um Prozesse anzustoßen, habe ich die Überprüfung des Alters in die Funktion zum Erstellen der Beitragsrechnungen integriert. Das muss man ja sowieso einmal im Monat machen. Bei allen anderen Änderungen des Beitragsstaus bin ich davon ausgegangen, dass sie sachliche Gründe haben und immer manuell im Stammsatz des betreffenden Mitglieds vorgenommen werden. Der Zeitpunkt der Gültigkeit ist dabei frei wählbar, so dass auch eine bereits feststehende Änderung, die aber erst in mehreren Monaten in Kraft tritt, bei nächster Gelegenheit frühzeitig erfasst werden kann.
-
Hey Copytexter!
Na, wenn das kein Anstoss ist, Ninox einzusetzen, dann weiß ich nicht... ;-D
Top!
lg, Torsten
-
Moin Torsten, danke für dein Fedback. War doch aufwändiger als gedacht. Bleibt zu hoffen, dass auch Christiane damit was anfangen kann.
-
Hallo Torsten und Copytexter,
viiiiielen Dank, ich werd's zumindest versuchen, bis meine Synapsen glühen. Sollten sie Gefahr laufen durchzubrennen, melde ich mich noch mal. Natürlich auch wenn es gepklappt hat. Egal wie, noch mal ganz großen Dank für die Mühen und Ratschläge.
Gruß Christiane
-
Hallo Zusammen,
das sieht sehr interessant aus, was Copytexter da erstellt hat. Kommt man irgendwie noch an die Datei, der Dropboxlink ist ja nicht mehr aktiv. Es würde mir bei meiner Erstellung durchaus paar Ideen geben und weiterhelfen.
Ganz Liebe Grüße aus Hamburg
-
Hallo Viktor, der Link müsste eigentlich wieder aktiv sein:
https://www.dropbox.com/s/ratbeaegfxzwqf5/Verein_Christiane.ninox?dl=0Viel sagen kann ich so ad hoc allerdings nicht mehr dazu. Die Anforderungen waren doch sehr speziell und das Ganze ist ja nun auch schon fast zwei Jahre her. Aber zum Selber-Reinwursteln stelle ich die Datenbank natürlich gerne zur Verfügung.
-
Hallo Copytexter,
hätte mich noch gemeldet, wenn es etwas zu melden gegeben hätte.
Wurde leider von anderen Dingen überrollt. Steht aber noch immer auf meiner ToDo-Liste, wohl aber die für Lebensuafgaben.
Gruß Christiane
-
Wow, das finde ich an dem Forum so genial! Wie schnell und hilfsbereit hier alle immer sind!
Vielen Lieben Dank an Copytexter
Ja ich wurstele mich da mal rein... ;-)
Content aside
- vor 4 JahrenZuletzt aktiv
- 16Antworten
- 3830Ansichten