Rollenabhängige Mitgliedsbeiträge

Hast du Probleme oder Fragen bei der Einrichtung bestimmter Plugins ? Diese kannst du hier loswerden.
Antworten
hausi
Beiträge: 30
Registriert: 24. Sep 2011, 21:00

Rollenabhängige Mitgliedsbeiträge

Beitrag von hausi »

Erst mal Danke für die überarbeitete Version des Mitgliedbetragsmoduls.
Hätte noch 2 Fragen/Anregungen:

1. Bei den einzelnen Rollen kann ja direkt in der Rollenverwaltung ein Beitrag und ein Beitragszeitraum eingetragen werden. Sehe ich das richtig, dass diese Werte beim aktuellen Plugin Mitgliedsbeitrag nicht mehr berücksichtigt werden?

2. Uns würde eine rollenbezogene Betragsermittlung unabhängig vom Alter genügen. Wie lässt sich so etwas abbilden? Könnte mir einen Konfiguration wie folgt vorstellen:

Code: Alles auswählen

$beitrag_beitraege_einzel[0]['rolle'] = "Aktivmitglied";
$beitrag_beitraege_einzel[0]['betrag'] = 550000;
$beitrag_beitraege_einzel[0]['text'] = "Betrag Aktivmitglied";
 
$beitrag_beitraege_einzel[1]['rolle'] = "Passivmitglied";
$beitrag_beitraege_einzel[1]['betrag'] = 250000;
$beitrag_beitraege_einzel[1]['text'] = "Beitrag Passivmitglied";
 
$beitrag_beitraege_einzel[2]['rolle'] = "Junioren";
$beitrag_beitraege_einzel[2]['betrag'] = 150000;
$beitrag_beitraege_einzel[2]['text'] = "Beitrag Junioren";
hausi
Beiträge: 30
Registriert: 24. Sep 2011, 21:00

Beitrag von hausi »

Kann mir wirklich niemand weiterhelfen?
rmb
Plugin-Developer
Beiträge: 632
Registriert: 10. Mai 2011, 19:56
Wohnort: 86856

Beitrag von rmb »

Hallo hausi,

zu Deiner Frage1: Das ist richtig. Die Werte Beitrag und Beitragszeitraum, die in der Rollenverwaltung eingetragen werden können, werden nicht vom Plugin verwendet. Mitgliedsbeitrag verwendet nur Werte aus der config.php.

zu Deiner Frage2: Derzeit gibt es nur eine Variable (--> $beitrag_ermaessigt['kategorie']) in der ein Mitgliedsbeitrag unabhängig vom Alter definiert werden kann. Vielleicht kann man die restlichen Variablen ( --> $beitrag_sparte['kategorie'] usw ) so geschickt festlegen, dass daraus quasi eine rollenbezogene Beitragsermittlung entsteht. Ich versuche es mal zu konfigurieren.

Gruß

rmb
rmb
Plugin-Developer
Beiträge: 632
Registriert: 10. Mai 2011, 19:56
Wohnort: 86856

Beitrag von rmb »

Eine rollenbezogene Beitragsermittlung wie in Deinem Fall kann unter bestimmten Voraussetzungen mit dem Plugin umgesetzt werden.

Zur Problemlösung habe ich aber zuerst eine andere Betrachtung angesetzt:
  • Alle Mitglieder sind immer Passivmitglieder und müssen einen bestimmten Grundbetrag bezahlen (250000).
  • Aktivmitglieder sind Passivmitglieder, die einen Zusatzbeitrag bezahlen müssen (+300000).
  • Junioren sind davon herausgelöst und entrichten einen separaten Juniorenbeitrag (150000).
Zur Konfiguration:
1. In admidio zwei neue Kategorien erstellen:
  • Mitgliedsbeitrag Junioren
  • Mitgliedsbeitrag Aktivmitglied
Die Rollennamen innerhalb dieser Kategorien sind nicht von Bedeutung, dafür folgendes:
  • alle Junioren müssen einer Rolle innerhalb der Kategorie "Mitgliedsbeitrag Junioren" zugeordnet sein
  • alle Aktivmitglieder müssen einer Rolle innerhalb der Kategorie "Mitgliedsbeitrag Aktivmitglied" zugeordnet sein
Alle Passivmitglieder sind Mitglieder der Rolle "Mitglied".

2. Jetzt die config.php in den unten aufgeführten Zeilen anpassen.

Code: Alles auswählen

$beitrag_beitraege_einzel[0]['alter'] = -1;
$beitrag_beitraege_einzel[0]['betrag'] = 250000;
$beitrag_beitraege_einzel[0]['text'] = "Grundbeitrag";

// wenn Alter > 14 und <= 18, dann ist der Mitgliedsbeitrag = 25 EUR
//$beitrag_beitraege_einzel[1]['alter'] = 14;
//$beitrag_beitraege_einzel[1]['betrag'] = 250000;
//$beitrag_beitraege_einzel[1]['text'] = "Jugendliche";

// wenn Alter > 18 und <= 60, dann ist der Mitgliedsbeitrag = 55 EUR
//$beitrag_beitraege_einzel[2]['alter'] = 18;
//$beitrag_beitraege_einzel[2]['betrag'] = 550000;
//$beitrag_beitraege_einzel[2]['text'] = "Erwachsene";

// wenn Alter > 60, dann ist der Mitgliedsbeitrag = 30 EUR
//$beitrag_beitraege_einzel[3]['alter'] = 60;
//$beitrag_beitraege_einzel[3]['betrag'] = 300000;
//$beitrag_beitraege_einzel[3]['text'] = "Senioren";

//Schueler- und Studentenbeitrag (=ermeassigter Beitrag)
$beitrag_ermaessigt['betrag'] = 150000; 

// alle Mitglieder dieser Kategorie entrichten einen ermaessigten Beitrag
$beitrag_ermaessigt['kategorie'] = "Mitgliedsbeitrag Junioren";
$beitrag_ermaessigt['text'] = "Junioren";

// Spartenbeitrag
$beitrag_sparte['betrag'] = 300000;

// alle Mitglieder dieser Kategorie entrichten einen Spartenbeitrag
$beitrag_sparte['kategorie'] = "Mitgliedsbeitrag Aktivmitglied";

$beitrag_sparte['text'] = "Zusatzbeitrag Aktivmitglied"; 
Bei mir hat diese Konfiguration genau die von Dir gewünschten Ergebnisse geliefert.

Gruß

rmb
hausi
Beiträge: 30
Registriert: 24. Sep 2011, 21:00

Beitrag von hausi »

Hallo rnb,

Danke erstmals für Deine Bemühungen. Habe mir in der Zwischenzeit mal den Code des Plugin Mitgliedsbeitrag angeschaut und einen relativ einfachen Weg gefunden, der meine Bedürfnisse im wesentlichen abdeckt.

Alle gemachten Anpassungen sind nachfolgend für das Mitgliedsplugin mit der Version 2.2.1 dokumentiert.

Die config.php um folgenden Eintrag ergänzen:

Code: Alles auswählen

// Alle Mitglieder dieser Kategorie zahlen einen festen Jahresbeitrag
// Die effektiven Beiträge werden von den jeweiligen Rollen der Kategorie
// aus der DB ermittelt.
// Alle anderen konfigurierten Beiträge werden nicht berücksichtigt!!!
// Falls die anderen Konfigurationen berücksichtigt werden sollen, darf
// hier keine Kategorie eingetragen werden. 
$beitrag_fix['kategorie'] = "Mitgliedsbeitrag";
In der Datei mitgliedsbeitrag_show.php müssen die nachfolgenden Ergänzungen vorgenommen werden.

Nach Zeile 250 folgendes einfügen:

Code: Alles auswählen

$beitragfix = befuelle_array($g_db, $beitrag_fix['kategorie']) ;  
Nach Zeile 313 folgendes einfügen (diese Ergänzung bewirkt, dass man bei Konten, bei denen das Mitglied der Kontoinhaber ist, keinen Kontoinhaber angeben muss. Mit dem bisherigen Code wird für solche Mitglieder immer eine Rechnung erstellt):

Code: Alles auswählen

	if ($members[$member]['Kontonummer'] <> NULL)
    {  	
		if ($members[$member]['Kontoinhaber'] == NULL)
		{  	
			$members[$member]['Kontoinhaber'] = $members[$member]['Vorname']." ".$members[$member]['Nachname'];
		}
	}
Vor Zeile 424 folgendes einfügen:

Code: Alles auswählen

	if ($beitrag_fix['kategorie'] == "")
	{
Nach Zeile 428 folgendes einfügen:

Code: Alles auswählen

	} 
	else
	{
    	berechne_fixbeitrag($members,$member,$beitragfix,$current_year,$beitrag_sparte,$member,$memberdata,$beitrag_abrunden);
	}
Nach Zeile 879 folgendes einfügen:

Code: Alles auswählen

function berechne_fixbeitrag(&$dom_array,$sub_array_key,$beitragfix,$current_year,$beitrag_sparte,$member_key,$member_data,$beitrag_abrunden)
{
	//ist das Mitglied einer Fixbeitrag-Rolle
    if($member_key == $beitragfix[$member_key]['mem_usr_id'])
    {   
        $fixbeitrag = $beitragfix[$member_key]['beitrag'];
        $text = $beitragfix[$member_key]['text'];

        //Beitrag abrunden
        if ($beitrag_abrunden == 1)
        {
            $fixbeitrag = floor($fixbeitrag/10000)*10000;
        }
                        
        // Addition und Text schreiben, nur wenn temporärer Beitrag != 0 
        if ($fixbeitrag != 0)
        {    
            $dom_array[$sub_array_key]['Beitrag']  = $fixbeitrag;
            $dom_array[$sub_array_key]['Beitragstext']  = $dom_array[$sub_array_key]['Beitragstext']." ".$text." ".number_format($fixbeitrag/10000.0,2,",", ".")." EUR";
        }      
        if ($member_data['Kontoinhaber'] <> NULL)
        {  	
         		if ($member_data['Kontoinhaber'] <> $member_data['Vorname']." ".$member_data['Nachname'])
						{  	
							$dom_array[$sub_array_key]['Beitragstext']  = $dom_array[$sub_array_key]['Beitragstext']." ".$member_data['Vorname']." ".$member_data['Nachname'];
						}
    		} 
		}
}
Zeile 969 ersetzen mit:

Code: Alles auswählen

	$sql = 'SELECT rol.rol_name, rol.rol_id, rol.rol_cost
Nach Zeile 978 folgendes einfügen:

Code: Alles auswählen

		$hilfsarray[$row['rol_id']]['beitrag'] = $row['rol_cost'];
Zeile 973 ersetzen mit:

Code: Alles auswählen

			$hauptarray[$row['mem_usr_id']]['mem_usr_id']= $row['mem_usr_id']; 
			$hauptarray[$row['mem_usr_id']]['text'] = $hilfsarray[$hilfsid]['name'];
			$hauptarray[$row['mem_usr_id']]['beitrag'] = $hilfsarray[$hilfsid]['beitrag'] * 10000;
Alle Zeilennummern beziehen sich auf die originale Zeilennummer in der Datei mitgliedsbeitrag_show.php in der Version 2.2.1.
Vielleicht kann dies ja in irgendeiner Form in das Plugin einfliessen.

Bei Fragen stehe ich gerne klärend zur Verfügung.

Gruss hausi
rmb
Plugin-Developer
Beiträge: 632
Registriert: 10. Mai 2011, 19:56
Wohnort: 86856

Beitrag von rmb »

Hallo hausi,

ich überarbeite derzeit das Plugin Mitgliedsbeitrag, damit es unter admidio 2.3 lauffähig ist.

Dabei werde ich auch versuchen, Deine Überlegungen einfließen zu lassen.

Gruß

rmb
Antworten