package admin;

use template;
use pdat;
use kasse;

@ISA = qw ( template );

####################################################################
####         Konstruktor der Kundenklasse
####         Argumente  : -
####         Returnwert : -
####################################################################
sub init {
	my $that = shift;
	my $class = ref($that) || $that;
	my $self = template->init(@_);
	bless $self, $class;	
	$self->{knr}      = shift;
	$self->{query}    = shift;
	$self->{kpass}     = "";
	$self->{pass}     = "";
	$self->{template} = 0;
	$self->{sprache}  = 0;
	$self->{name}     = "";
	$self->{firma}    = "";	
	$self->{nnname} ="";
	return $self;
}

####################################################################
####         Datenbanklader der Kundenklasse
####         Argumente  : knr
####         Returnwert : -
####################################################################
sub load {
	my $self = shift;	
	$self->log(4,"Entering: kunde:load");
	# Kunde aus der Datenbank laden
	my $sql = "select pass, name, firma, template, sprache from kunden where knr=$self->{knr}";
	($self->{kpass}, $self->{name}, $self->{firma}, $self->{template}, $self->{sprache}) = $self->sqlselect($sql);
	if (! defined $self->{knr}) {$self->log(2,"Kunde ist nicht vorhanden");$self->exit;}
	$self->loadtmp;
	return $self;
}

####################################################################
####         macht den Teilnehmer zum "Zombi"
####         Argumente  : 
####         Returnwert : 
####################################################################
sub delete {
	my $self = shift;
	$self->log(4,"Entering: pdat:delete");
	# Überprüfen, ob Teilnehmer existiert
	$sql = "select pin from benutzer where pin=$self->{id}";
	
	($self->{pin}) = $self->sqlselect($sql);
	
	if (! defined $self->{pin}){
		$self->{warntext}="Teilnehmer existiert nicht!";
		return $self->{warntext};
		}
		
	# Überprüfen, ob das Konto nicht leer ist
	my $sql = "select sum(betrag) from kasse where pin=$self->{id}";
	
	($self->{betrag}) = $self->sqlselect($sql);
	
	if ((! defined $self->{betrag}) || ($self->{betrag} < 500)  ) 
	{
		
		if (! defined $self->{betrag}){ $self->{betrag}=0; }

		my $summe=$self->{betrag};

		#$sql  = "delete from ergebnis where pin=$self->{id}";
		#$self->sqldo($sql);
		$sql  = "delete from kasse where pin=$self->{id}";
		$self->sqldo($sql);
		$sql  = "delete from umfidpin where pin=$self->{id}";
		$self->sqldo($sql);
		$sql  = "delete from kriterien where pin=$self->{id}";
		$self->sqldo($sql);
		$sql  = "delete from benutzer where pin=$self->{id}";
		$self->sqldo($sql);
		$self->{warntext}="Der Teilnehmer $self->{id} ist gelöscht worden!<BR>Kontostand ".sprintf("%0.2f", $summe / 100)." Euro&nbsp;/ ".sprintf("%0.2f", $summe *0.0195583)." DM";
		return $self->{warntext};
		}
	else{
		my $summe=$self->{betrag};
		 $self->log(4,"Entering: pdat: $dm");
		$self->{warntext}="Teilnehmer $self->{id} kann nicht gelöscht werden.<BR>Kontostand ".sprintf("%0.2f", $summe / 100)." Euro&nbsp;/ ".sprintf("%0.2f", $summe *0.0195583)." DM";
		return $self->{warntext};
		}
}
##############################################################
######
######	Löscht den Teilnehmer trotzdem > 5 Euro Betrag..
######
######
##############################################################

sub delete5EUR {
        my $self = shift;
        $self->log(4,"Entering: pdat:delete5EUR");
        # Überprüfen, ob Teilnehmer existiert
        $sql = "select pin from benutzer where pin=$self->{id}";

        ($self->{pin}) = $self->sqlselect($sql);

        if (! defined $self->{pin}){
                $self->{warntext}="Teilnehmer existiert nicht!";
                return $self->{warntext};
                }

        # Überprüfen, ob das Konto nicht leer ist
        my $sql = "select sum(betrag) from kasse where pin=$self->{id}";

        ($self->{betrag}) = $self->sqlselect($sql);

                if (! defined $self->{betrag}){ $self->{betrag}=0; }

                my $summe=$self->{betrag};

                #$sql  = "delete from ergebnis where pin=$self->{id}";
                #$self->sqldo($sql);
				$sql  = "delete from kasse where pin=$self->{id}";
                $self->sqldo($sql);
                $sql  = "delete from umfidpin where pin=$self->{id}";
                $self->sqldo($sql);
                $sql  = "delete from kriterien where pin=$self->{id}";
                $self->sqldo($sql);
                $sql  = "delete from benutzer where pin=$self->{id}";
                $self->sqldo($sql);
                $self->{warntext}="Der Teilnehmer $self->{id} ist gelöscht worden!<BR>Kontostand ".sprintf("%0.2f", $summe / 100)."
Euro&nbsp;/ ".sprintf("%0.2f", $summe *0.0195583)." DM";
                return $self->{warntext};
          
}

####################################################################
####         Administrationsmaske
####         Argumente  : Emergency und Logtext
####         Returnwert : -
####################################################################
sub htmladmin{
		
		my $self = shift;
		$self->{id}=$baseq::VARS{knr};
		$self->{kpass}=$baseq::VARS{pass}=$baseq::VARS{kpass};
		$baseq::VARS{umfid}=0;
		$self->log(4,"Entering: pdat:htmladmin");
	        $self->loadtmp;
		$self->{buttonwidth}=40;
		my $TITLE=$self->trans("TI22b");
		$self->log(4,$self->{warntext});
		$baseq::VARS{pin}="";
		$HTML="<DIV ALIGN='CENTER'>\n<TABLE WIDTH=80%>\n".
			$self->TR([ $self->sfont($self->trans("HI22").":"),
			$self->sfont($self->{name}." bei ".$self->{firma}),
			$self->sfont(pdat->getdate) ])."\n</TABLE>\n</DIV>\<BR>".
			"<DIV ALIGN='CENTER'><TABLE width=80% BORDER='1' BORDERCOLOR='#CCCCCC'>\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU24",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU50",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU42",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU41",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU30a",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU51",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU45",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU58a",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU48",50)."</P>"])."\n".
            "<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
            $self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU61",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".	
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU53",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".
			$self->TR(["<P ALIGN='CENTER'>".$self->SM("bbut","BU11",50)."</P>"])."\n".
			"<TR><TD WIDTH='100%' bgcolor='#E6E6E6' HEIGHT='29'>&nbsp;</td>\n".	
			"</TABLE></DIV>\n<BR><HR>\n";
			$self->{helpkontext}="admin"; 
			$self->printhtml($TITLE,$HTML);
			$self->exit;
			
}

####################################################################
####         Abruf von Teilnehmerdaten von Administrator
####         Argumente  : Emergency und Logtext
####         Returnwert : -
####################################################################
sub htmlanzeig{

		my $self = shift;
		$self->loadtmp;
		$self->{knr} = $baseq::VARS{knr};
		$self->{id} = $baseq::VARS{pin}+0;
		$self->{buttonwidth}=21;
		$self->log(4,"Entering: pdat:getbearb-abrufen");
		my $TITLE=$self->qfont("<B>".$self->trans("TI22"));
		$self->log(4,$self->{warntext});
		$HTML= $self->qfont("<P ALIGN='CENTER'>".$self->trans("BU42")."</P>");
		$HTML.="<TABLE width=80%>\n".
		$self->TR([ $self->sfont("<B>".$self->trans("HI100").": "),$self->sfont($self->TF("npin","",10)),$self->SM("bbut","BU43")]).
		$self->TR([ $self->sfont("<B>".$self->trans("HI62").": "),$self->sfont($self->TF("nmail","",50)),$self->SM("bbut","BU43")]).
		$self->TR([ $self->sfont("<B>".$self->trans("HI110").": "),$self->sfont($self->TF("nnname","",50)),$self->SM("bbut","BU34")]).
		"</TABLE>\n<BR><HR>\n".
		$self->SMrow( ["bbut","bbut"] , ["BU47","BU11"] );
		$HTML.="<HR>";
		return $HTML;

}

####################################################################
####         Gibt die Maske zum Löschen von Teilnehmer aus
####         Argumente  : Emergency und Logtext
####         Returnwert : -
####################################################################
sub htmlloesch{

		my $self = shift;
		$self->loadtmp;
		$self->{buttonwidth}=21;
		$self->log(4,"Entering: pdat:getbearb-löschen");
		my $TITLE=$self->trans("BU41");
		$self->log(4,$self->{warntext});
		$HTML= $self->qfont("<P ALIGN='CENTER'>".$self->trans("BU41")."</P>");
		$HTML.="\n<TABLE width=50%>\n".
		$self->TR([ $self->sfont("<B>".$self->trans("HI100").": "),$self->sfont($self->TF("pin","",10))]).
		$self->TR([ $self->sfont("<B>".$self->trans("HI62").": "),$self->sfont($self->TF("nmail","",50))]).
		"</TABLE>\n<BR><HR>\n".
		$self->SMrow( ["bbut","bbut"] , ["BU40","BU41a"] ).
		$self->SMrow( ["bbut","bbut"] , ["BU47","BU11"] );
		$self->printhtml($TITLE,$HTML);
		$self->exit;
}
####################################################################
####         Abruf von Teilnehmerdaten von Administrator
####         Argumente  : Emergency und Logtext
####         Returnwert : -
####################################################################
sub htmldoppelte{

		my $self = shift;
		$self->loadtmp;
		$self->{id} = $baseq::VARS{pin}+0;
		$self->{buttonwidth}=21;
		$self->log(4,"Entering: pdat:getbearb-doppelte");
		my $TITLE=$self->trans("TI22");
		$self->log(4,$self->{warntext});
		$HTML= $self->qfont("<P ALIGN='CENTER'>".$self->trans("BU48")."</P>");
		$HTML.="<TABLE width=80%>\n".
		$self->TR([ $self->sfont("<B>".$self->trans("HI101").": "),$self->sfont($self->TF("npin1","",10))]).
		$self->TR([ $self->sfont("<B>".$self->trans("HI102").": "),$self->sfont($self->TF("npin2","",10))]).
		"</TABLE>\n<BR><HR>\n".
		$self->SMrow( ["bbut","bbut","bbut"] , ["BU49","BU47","BU11"] );
		$HTML.="<HR>";
		#################

		$HTML.= $self->afont("<P ALIGN='CENTER'><B>Teilnehmer mit einer mehrfachvorkommenden eMail-Adresse und ohne eMail-Adresse</P>");
		$HTML.="<TABLE width=80% BORDER=1 CELLSPACING=1>\n".
		$self->TR([  $self->sfont("<B>Nummer</B>"),$self->sfont("<B>".$self->trans("HI62")."</B>"),$self->sfont("<B>".$self->trans("HI64")."</B>"),
		$self->sfont("<B>".$self->trans("HI55")."</B>"),$self->sfont("<B>".$self->trans("HI56")."</B>"),
		$self->sfont("<B>".$self->trans("HI57")."</B>"),$self->sfont("<B>".$self->trans("HI53a")."</B>") ]);

		@liste=();
		my $sql="SELECT email FROM benutzer As Tmp GROUP BY email HAVING Count(*)>1 ORDER BY email";
		my $sth= $self->sqlprepare($sql);
		my $n=0;
		my $nummer=$n2=1;
		while (@liste=$sth->fetchrow_array) {
				
				$hasn[$n]->{lmail}=$liste[0];
				$self->log(4,"Entering: pdat:doppelte :".$liste);

				my $sql1="SELECT email, tel, anrede, vname, nname, pin FROM benutzer WHERE email='$hasn[$n]->{lmail}'";			
				my $nsth=$self->sqlprepare($sql1);
				while(@nliste=$nsth->fetchrow_array){

							$email[$n2]=$nliste[0]; $tel[$n2]=$nliste[1]; $anrede[$n2]=$nliste[2]; $vname[$n2]=$nliste[3]; $nname[$n2]=$nliste[4];$pin[$n2]=$nliste[5];
							$nummer=$n2;
							if ($email[$n2] eq "") {$email[$n2]="&nbsp;"}

							$HTML.=$self->TR([ $self->sfont($nummer), $self->sfont($email[$n2]),$self->sfont($tel[$n2]),
											$self->sfont($baseq::HF[$anrede[$n2]]),$self->sfont($vname[$n2]),
											$self->sfont($nname[$n2]),$self->sfont($pin[$n2]) ]);
							
							$n2++;
							}
							$n++;
		}

		$HTML.="</TABLE>\n<BR><HR>\n";

		
		return $HTML;

}

####################################################################
####         Telnehmer -PIN-Nummer für den Kontoauszug festlegen
####         Argumente  : PIN-Nummer
####         Returnwert : -
####################################################################
sub htmlvorauszug{

		my $self = shift;
		$self->loadtmp;
		$self->{buttonwidth}=21;
		$self->log(4,"Entering: pdat: -htmlvorauszug");
		my $TITLE=$self->trans("BU51");
		$self->log(4,$self->{warntext});
		$HTML= $self->qfont("<P ALIGN='CENTER'>".$self->trans("BU51")."</P>");
		$HTML.="\n<TABLE width=50%>\n".
		$self->TR([ $self->sfont("<B>".$self->trans("HI100").": "),$self->sfont($self->TF("pin","",10))]).
		"</TABLE>\n<BR><HR>\n".
		$self->SMrow( ["bbut","bbut","bbut"] , ["BU52","BU47","BU11"] );
		$self->printhtml($TITLE,$HTML);
		$self->exit;
}

####################################################################
####         Telnehmer -PIN-Nummer für den Kontoauszug festlegen
####         Argumente  : PIN-Nummer
####         Returnwert : -
####################################################################
sub htmlauszug{

		my $self = shift;
		$self->loadtmp;
		$self->{buttonwidth}=21;
		$self->log(4,"Entering: pdat: -htmlauszug");
		my $TITLE=$self->trans("HI101").$baseq::VARS{pin};
		$self->log(4,$self->{warntext});
		$HTML= $self->sfont("<P ALIGN='LEFT'>".$self->trans("TI24")."</P>");

		#Persönliche angaben aus pdat-modul

		$benutzer=pdat->init($self,$baseq::VARS{pin});
		$benutzer->load;
		$HTML.="<TABLE WIDTH=80%><TR><TD WIDTH=20%>&nbsp;</TD><TD>&nbsp;<\TD></TR>".
		$self->TR([ $self->sfont("<FONT COLOR='#CC3300'>".$self->trans("HI53a")."</FONT>\n"),$self->sfont("<FONT COLOR='#CC3300'>".$benutzer->{id}."</FONT>\n") ]).
		$self->TR([ $self->sfont($benutzer->{vname}) ])."\n".
		$self->TR([ $self->sfont($benutzer->{nname}) ])."\n".
		$self->TR([ $self->sfont($benutzer->{strasse}) ])."\n".
		$self->TR([ $self->sfont($benutzer->{plz}." ".$self->sfont($benutzer->{nl})),$self->sfont($benutzer->{stadt}) ])."\n".
		$self->TR([ "<HR>","<HR>" ])."\n".
		$self->TR([$self->sfont($baseq::LO[$benutzer->{lohnart}])  ])."\n";
		if ($benutzer->{lohnart} == 1) {
		$HTML.=$self->TR([ $self->sfont($self->trans("HI84")),$self->sfont($benutzer->{bank}) ])."\n".
					$self->TR([ $self->sfont($self->trans("HI85")),$self->sfont($benutzer->{blz}) ])."\n".
					$self->TR([ $self->sfont($self->trans("HI86")),$self->sfont($benutzer->{kontonr}) ])."\n";
		}
		$HTML.=$self->TR([ "<HR>","<HR>" ])."\n"."</TABLE>\n<BR>\n";
			
			
		#Kontostand aus kasse-modul
			
		$kasse=kasse->init($benutzer->{id});			
		$HTML.=$kasse->kontohtml($benutzer->{id})."<HR>\n";				
			#$self->SMrow( ["bbut","bbut"] , ["BU47","BU11"] );
		$self->printhtml($TITLE,$HTML);
		$self->exit;
}


####################################################################
####         Telnehmer -Altersgruppen-Zugehörigket neueberechnen
####         Argumente  : PIN-Nummer, gdat
####         Returnwert : -Nur Erfolgsmeldung!!
####################################################################
sub gebclusnnew{

                my $self = shift;
		my $cnt=0;
		$self->log(4,"Entering: pdat: Altersgruppen- Neuberechnung");
		$sql="select pin,gdat from benutzer";
    		$sth=$self->sqlprepare($sql);
    		while(($gpin, $gdat)=$sth->fetchrow_array){
			$cnt++;
                        	#Kontrolle1:
                        	#$self->log(4,"Entering: pin, gdat,count :$gpin,$gdat,$cnt}");
           		my $gebjahr = (split (/-/ , $gdat))[0];
				#Kontrolle2:
				#$self->log(4,"Entering: gebjahr: $gebjahr}");
			$gebclusn=pdat->gebcl($gebjahr);
				#Kontrolle3:
				$self->log(4,"Entering: pin:$gpin, gdat:$gdat, gebjahr:$gebjahr, gebclusn:$gebclusn, count:$cnt");
	   		$sql = "update benutzer set gebclusn=$gebclusn where pin=$gpin";
	   		$self->sqldo($sql);
		}
	
                $self->{warntext}="Altersclusterung ist aktualisiert worden<BR>Anzahl aktualisierten Datensätzen: $cnt";
		$self->loadtmp;
		$self->printhtml($self->{warntext},$self->htmladmin);
		$self->exit;
}

####################################################################
####         Schreibt mit SSH in die .qmail-alle (alle@automail.prorata.de) datei...
####         oder holt die Anzahl der eingetragenen
####         Argumente  : einzutragender String
####         Returnwert : Zeilen in Automail
####################################################################
sub automailalle {
     my $self=shift; 
	 my $AUTOMAIL=".qmail-alle"; my $HOST="proxy"; my $ssh="/usr/local/bin/ssh";
     my $OUT="|$ssh -l automail $HOST \"tee $AUTOMAIL >/dev/null\"";
     my $IN ="$ssh -l automail $HOST \"cat $AUTOMAIL|wc -l\" |";
     my $tring=shift;
	 $self->log(2,"Entering: automailalle: ");
     if ($tring eq ""){
		$self->log(2,"Entering: automailalle: if-schleife");
        open (FILE, $IN);
        $num=<FILE>;
        close FILE;
        chomp $num;
        $num=~s/\s//g;
        return $num;
     }
     else {
		$self->log(2,"Entering: automailalle: else-schleife");
		#Auf selbem Server! chmod 666 .qmail-test
		#open (FILE, ">/var/qmail/alias/.qmail-test") or $self->log(4,"Opening: $OUT- KANNNICHT!!");
        open (FILE, $OUT);
        $self->log(4,"Opening: $OUT");
        print FILE $tring;
        close FILE;
     }
}

####################################################################
####         selectiert alle emails adressen aus der DB
####		  checkt sie nach gültigkeit und übergibt die gute nach alleautomail
####         gibt aust die Anzahl der eingetragenen
####         Argumente  : einzutragender String
####         Returnwert : Zeilen in Automail
####################################################################

sub selectallemail {
     	my $self=shift; 
		$self->loadtmp;
		$self->{buttonwidth}=21;
		my $MAILS="";
		$self->log(2,"Entering: admin.pm -selectallemail");
		my $TITLE=$self->trans("BU30a");
		my $HTML= $self->qfont("<P ALIGN='CENTER'>".$self->trans("BU30a")."</P>");
		$HTML.=$self->SMrow( ["bbut","bbut"] , ["BU47","BU11"] );
		$HTML.="<HR><BR>\n<TABLE BORDER='1'><CENTER>";
		$HTML.="<tr><td colspan=2><b>Schlechte Adressen</b></td></tr>";
		$HTML.="<tr><td>PIN</td><td>eMail-Adresse</td></tr>";
		my $x=0;my $y=0;
		my $sql="select pin, email from benutzer";
		my $sth = $self->sqlprepare($sql);
		while (($pin,$email)=$sth->fetchrow_array() ) {

				if ($email=~/^[ \w\._-]*@[\w\.-]{2,}\.[a-z]{2,3}$/i) {
				#Gute Adressen
				$x++;
				#$self->log(4,"Entering: selectallemail - gute adresse: $email");
				$MAILS.=$email."\n";		
				}
				else {
				#Schlechte Adressen
				 $y++;
				 #$self->log(4,"Entering: selectallemail - schlechte adresse: $email, $pin");
				 $HTML.="<tr><td>".$pin."</td><td>".$email."</td></tr>";				
				}
         }
		 $HTML.="<tr><td colspan=2>Anzahl Adressen, die NICHT eingetragen wurden: $y</td></tr>";
		 $HTML.="<tr><td colspan=2>Anzahl eingetragenen Adressen: ".$x."</td></tr>";	
		 $HTML.="</CENTER></TABLE>";
		 $self->log(2,"\n Anzahl Guten Adressen: $x \n Anzahl schlechten Adressen: $y \n");
		 $self->log(2,"Entering: selectallemail - gehe weiter... ");
        $self->automailalle($MAILS);
		$self->printhtml($TITLE,$HTML);
		$self->exit;
}

####################################################################
####         Zufallsgenerator
####         Argumente  : PIN-Nummer
####         Returnwert : -
####################################################################
sub htmlzufallsgen{

		my $self = shift;
		$self->loadtmp;
		$self->{buttonwidth}=21;
		$self->log(4,"Entering: pdat: -htmlvorauszug");
		my $TITLE=$self->trans("BU53");
		$self->log(4,$self->{warntext});
		$HTML= $self->qfont("<P ALIGN='CENTER'>".$self->trans("BU53")."</P>");
		$HTML.="\n<TABLE width=50%>\n".
		$self->TR([ $self->sfont("<B>".$self->trans("HI104").": "),$self->sfont($self->TF("zahl1","",10))]).
		$self->TR([ $self->sfont("<B>".$self->trans("HI105").": "),$self->sfont($self->TF("zahl2","",10))]).
		"</TABLE>\n<BR><HR>\n".
		$self->SMrow( ["bbut","bbut","bbut"] , ["BU54","BU47","BU11"] );
		$self->printhtml($TITLE,$HTML);
		$self->exit;
}

####################################################################
####         Werbeprämien
####         Argumente  : PIN-Nummer
####         Returnwert : -
####################################################################
sub htmlwerbepraem{

		my $self = shift;
		$self->loadtmp;
		$self->{buttonwidth}=21;
		$self->log(4,"Entering: pdat: -htmlwerbepraemien");
		my $TITLE=$self->trans("BU61");
		$self->log(4,$self->{warntext});
		$HTML= $self->qfont("<P ALIGN='CENTER'>".$self->trans("BU61")."</P>");
		$HTML.=$self->SMrow( ["bbut","bbut"] , ["BU47","BU11"] );
		$HTML.="<HR><BR>\n<TABLE BORDER='1'><CENTER>";
		$HTML.=$self->TR([ $self->sfont("PIN "),$self->sfont("Anzahl angeworbener Teilnehmer"),$self->sfont("SOLL in EURO"),$self->sfont("HABEN in EURO")]);
		
		#Die Teilnehmer, die geworben haben
		my $sql="select distinct werbpin from benutzer where werbpin>0 order by werbpin";
		my $sth= $self->sqlprepare($sql);
		my $total=0;
		while (@WPINS=$sth->fetchrow_array) {
			$total++;
			$kasse=kasse->init($self);
			my $werbpin=$WPINS[0];
			my ($count,$sollbetrag) = $kasse->werbebetrag($werbpin);

		#Haben in der Kasse
		 $sql1="select betrag from kasse where pin=$werbpin and umfid=1";
		my $habenbetrag=$self->sqlselect($sql1);
		
		$self->log(4,"habenbetrag = ".$habenbetrag." sollbetrag = ".($sollbetrag*100));

		if ($habenbetrag != ($sollbetrag*100)) {
				$sql1= "update kasse set betrag=($sollbetrag*100) where umfid=1 and pin=$werbpin";
				$self->sqldo($sql1);
				$habenbetrag =$sollbetrag*100;
		}

		
		$HTML.=$self->TR([ $self->sfont($werbpin),$self->sfont("<CENTER>".$count."</CENTER>"),$self->sfont(sprintf("%0.2f",($sollbetrag))),$self->sfont(sprintf("%0.2f",($habenbetrag/100)))]);
		}
		
		$HTML.="</CENTER></TABLE><BR>".$self->qfont("Insgesamt")."<BR><BR>\n<TABLE BORDER='1'><CENTER>";
		$HTML.=$self->TR([ $self->sfont("Anzahl PIN "),$self->sfont("Anzahl angeworbener Teilnehmer"),$self->sfont("SOLL in EURO"),$self->sfont("HABEN in EURO")]);

		#Count PINs insgesamt
		my $sql2="select count(pin) from benutzer where werbpin>0";
		my $countins=$self->sqlselect($sql2);
		
		#Haben in der Kasse insgesamt
		 $sql1="select sum(betrag) from kasse where umfid=1";
		my $habeninsgesamt=$self->sqlselect($sql1);

		#SOLL insgesamt
		my $sollinsgesamt=$countins*1.5;

		if ($habeninsgesamt != ($sollinsgesamt*100)) {
			$sql1="delete from kasse where pin=0";
			$self->sqldo($sql1);
			$habeninsgesamt = $sollinsgesamt*100;
		}

		$HTML.=$self->TR([$self->sfont("<CENTER>".$total."</CENTER>"),$self->sfont("<CENTER>".$countins."</CENTER>"),$self->sfont(sprintf("%0.2f",($sollinsgesamt))),$self->sfont(sprintf("%0.2f",($habeninsgesamt/100)))]);		
		$HTML.="</CENTER></TABLE><HR>";
		$self->printhtml($TITLE,$HTML);
		$self->exit;
}


####################################################################
####         Gibt die Standardmaske aus
####         Argumente  : Emergency und Logtext
####         Returnwert : -
####################################################################
sub getbearb {
	my $self = shift;
	my ($knr, $pin, $trans);
	#my ($knr, $pin, $pass, $trans);
	$self->log(4,"Entering: admin:getbearb");

	#Zurück zur Administrationsmaske

	if ($baseq::VARS{bbut} eq $self->trans("BU47") || $baseq::VARS{ibut} eq $self->trans("BU47")) {
		$self->{knr} = $baseq::VARS{knr};
		$self->load;
		$self->htmladmin;
	}

	#Button Hilfe
	if ($baseq::VARS{bbut} eq $self->trans("BU24") ){
	$self->{knr} = $baseq::VARS{knr};
	$self->loadtmp;
	$self->hilfe;}


	#Button Online-Panel Statistik
	if ($baseq::VARS{bbut} eq $self->trans("BU50") ){
	$self->{knr} = $baseq::VARS{knr};
		my $HTML="";
		$stats=pdat->init($self);
		$HTML.=$stats->statistik."<HR>\n".
		$self->SMrow( ["bbut","bbut"] , ["BU47","BU11"] );
		$self->loadtmp;
		$self->printhtml($self->trans("TI23"),$HTML);
		$self->exit;
	}

	#Button Emails eintragen in alle@automail.prorata.de
	if ($baseq::VARS{bbut} eq $self->trans("BU30a") ){
		$self->log(2,"Entering: admin.pm - Button selectallemail");
		$self->{knr} = $baseq::VARS{knr};
		$self->loadtmp;
		$self->selectallemail;
	}

	#Teilnehmerdaten - Maske Doppelte

	if ($baseq::VARS{bbut} eq $self->trans("BU48")) {
		$self->{knr} = $baseq::VARS{knr};
		my $HTML="";
		$HTML.=$self->htmldoppelte;
		$self->printhtml($self->trans("TI22"),$HTML);
		$self->exit;
	}

		#Werbeprämien kontrollieren

	if ($baseq::VARS{bbut} eq $self->trans("BU61")) {
		my $HTML="";
		$HTML.=$self->htmlwerbepraem;
		$self->printhtml($self->trans("BU61"),$HTML);
		$self->exit;
	}
	
	#Teilnehmerdaten - Doppeltvorhandene Teilnehmer bearbeiten

	if ($baseq::VARS{bbut} eq $self->trans("BU49")) {
		
		if ($baseq::VARS{npin1} == 0 || $baseq::VARS{npin2} ==0) {
			$self->log(2,"Beide PINs müssen angegeben werden");
			$self->{warntext}="Beide PINs müssen angegeben werden";
		}
		else{
			my $sql = "select sum(betrag) from kasse where pin=$baseq::VARS{npin1}";
			($self->{sum}) = $self->sqlselect($sql);
			if (!defined $self->{sum}) {
			$self->{warntext}="Es gibt nichts zu Übertragen";
			$self->log(2,"Es gibt nichts zu Übertragen");
			} 

			my $sql = "select betrag,umfid from kasse where pin=$baseq::VARS{npin1} order by umfid";
			my $sth= $self->sqlprepare($sql);
			while ( @liste=$sth->fetchrow_array ) {
			$self->log(4,"Liste=".join ("--",@liste));
					#Auszahlungen übertragen
					if ($liste[1]==0) {
						$sql="update kasse set pin=$baseq::VARS{npin2}, changed=changed where pin=$baseq::VARS{npin1} and umfid=$liste[1]";
						$self->sqldo($sql);
						$self->{warntext}="Alle Daten der Teilnehmer PIN=$baseq::VARS{npin1} sind auf Teilnehmer PIN=$baseq::VARS{npin2} übertragen worden<BR>Teilnehmer PIN=$baseq::VARS{npin1} muß noch gelöscht werden.";
					}

					#Hat der Teilnehmer an dieselbe Umfrage teilgenommen?
					$sql="select betrag from kasse where pin=$baseq::VARS{npin2} and umfid=$liste[1]";
					my $nbetrag=$self->sqldo($sql);
					$self->log(2,"nbetrag - $nbetrag, umfid - $liste[1], pin -$baseq::VARS{npin2}");
					if (!defined $nbetrag || $nbetrag == "") {
						$sql="update ergebnis set pin=$baseq::VARS{npin2}, changed=changed where pin=$baseq::VARS{npin1} and umfid=$liste[1]";
						$self->sqldo($sql);
						$sql="update kasse set pin=$baseq::VARS{npin2}, changed=changed where pin=$baseq::VARS{npin1} and umfid=$liste[1]";
						$self->sqldo($sql);
						$self->{warntext}="Alle Daten der Teilnehmer PIN=$baseq::VARS{npin1} sind auf Teilnehmer PIN=$baseq::VARS{npin2} übertragen worden<BR>Teilnehmer PIN=$baseq::VARS{npin1} muß noch gelöscht werden.";
					}
					#Wenn der Betrag kleiner ist - >kleineren löschen 
					if ($nbetrag < $liste[0]) {
						$sql="delete from ergebnis where pin=$baseq::VARS{npin2} and umfid=$liste[0]";
						$self->sqldo($sql);
						$sql="delete from kasse where pin=$baseq::VARS{npin2} and umfid=$liste[0]";
						$self->sqldo($sql);
						$sql="update ergebnis set pin=$baseq::VARS{npin2}, changed=changed where pin=$baseq::VARS{npin1}";
						$self->sqldo($sql);
						$sql="update kasse set pin=$baseq::VARS{npin2}, changed=changed where pin=$baseq::VARS{npin1}";
						$self->sqldo($sql);
						$self->{warntext}="Alle Daten der Teilnehmer PIN=$baseq::VARS{npin1} sind auf Teilnehmer PIN=$baseq::VARS{npin2} übertragen worden<BR>Teilnehmer PIN=$baseq::VARS{npin1} muß noch gelöscht werden.";
					}
			}
		}

			my $HTML="";
			$HTML.=$self->htmldoppelte;
			$self->printhtml($self->trans("TI22"),$HTML);
			$self->exit;
		
	}

		
	#Teilnehmerdaten - Maske löschen

	if ($baseq::VARS{bbut} eq $self->trans("BU41")) {
		$self->loadtmp;
		$self->htmlloesch;
	}
##################################################	
##Teilnehmerdatenlöschen
#
#	if ($baseq::VARS{bbut} eq $self->trans("BU40")) {$self->log(4,$self->trans("BU40"));
#
#		$self->{id} = $baseq::VARS{pin}+0;
#		$self->{knr} = $baseq::VARS{knr};
#		$self->loadtmp;
#		$self->delete;
#		$self->htmlloesch;
#		$self->exit;
#	}
##################################################
		#Teilnehmerdatenlöschen

	if ($baseq::VARS{bbut} eq $self->trans("BU40")) {
		
		$self->log(2,$self->trans("BU40"));
		$self->log(2,"Teilnehmer pin = $baseq::VARS{pin}");
		$self->log(2,"Teilnehmer eMail = $baseq::VARS{nmail}");

		# Löschung nach eMail-Adresse:

		if ($baseq::VARS{pin} == 0 && $baseq::VARS{nmail} ne "") {
			$self->log(2,"Löschung nach eMail-Adresse: $baseq::VARS{nmail}");
			my $sql = "select pin from benutzer where email='$baseq::VARS{nmail}'";
			$baseq::VARS{pin}=$self->{pin}=$self->sqlselect($sql);
		}

		# Löschung nach PIN:

		if ($baseq::VARS{pin} != 0) {

						$self->log(2,"Löschung nach pin: $baseq::VARS{pin}");
						my $sql = "select pin from benutzer where pin=$baseq::VARS{pin}";
						$self->{pin} = $self->sqlselect($sql);

					if (! defined $self->{pin}){
						$self->log(2,"Teilnehmer  ist nicht vorhanden");
						$self->{warntext}="Teilnehmer PIN-$baseq::VARS{pin} ist nicht vorhanden";
						$self->loadtmp;
						$self->htmlloesch;
						$self->exit;
					}
				else{
						$self->log(2,"Teilnehmer  ist vorhanden: $baseq::VARS{pin}");
						$self->{id} = $self->{pin} = $baseq::VARS{pin}+0;
						$self->{knr} = $baseq::VARS{knr};
						$self->loadtmp;
						$self->delete;
						$self->htmlloesch;
						$self->exit;
				}
		}
	}


	# Teilnehmer mit dem Betrag über 5 Euro löschen..

	 

        if ($baseq::VARS{bbut} eq $self->trans("BU41a")) {$self->log(4,$self->trans("BU41a"));

                $self->{id} = $baseq::VARS{pin}+0;
                $self->{knr} = $baseq::VARS{knr};
                $self->loadtmp;
                $self->delete5EUR;
                $self->htmlloesch;
                $self->exit;
        }

	#Teilnehmerdaten für die Administration abrufen - leere Maske
	if ($baseq::VARS{bbut} eq $self->trans("BU42")) {
		$self->{knr} = $baseq::VARS{knr};
		my $HTML="";
		$HTML.=$self->htmlanzeig;
		$self->printhtml($self->trans("TI22"),$HTML);
		$self->exit;
	}

		
	#Teilnehmerdaten für die Administration abrufen - Button Ausführen
	if ($baseq::VARS{bbut} eq $self->trans("BU43")) {
		$TITEL=$self->trans("BU42");

		$self->{knr} = $baseq::VARS{knr};
		$baseq::VARS{pin}=$baseq::VARS{npin};
		$baseq::VARS{nnname}="";
		if ($baseq::VARS{npin} == 0 && $baseq::VARS{nmail} ne "") {
			my $sql = "select pin from benutzer where email='$baseq::VARS{nmail}'";
			$baseq::VARS{npin}=$self->{pin}=$self->sqlselect($sql);

		}
		if ($baseq::VARS{npin} != 0) {
			my $sql = "select pin from benutzer where pin=$baseq::VARS{npin}";
			$self->{pin} = $self->sqlselect($sql);

		}
		if (! defined $self->{pin}){
			$self->log(2,"Kunde ist nicht vorhanden");
			$self->{warntext}="Teilnehmer PIN-$baseq::VARS{npin} ist nicht vorhanden";
			my $HTML=$self->htmlanzeig;
			$self->printhtml($TITEL,$HTML);
			$self->exit;
			}
		else{
			$baseq::VARS{pin}=$baseq::VARS{npin};
			$benutzer=pdat->init($self, $baseq::VARS{npin});
			$benutzer->load;
			my $HTML=$self->htmlanzeig.$benutzer->htmlbearb;
			$self->printhtml($TITEL,$HTML);
			$self->exit;

			}

	}
	#Teilnehmerliste nach Name drucken
	if ($baseq::VARS{bbut} eq $self->trans("BU34")) {

			$self->{knr} = $baseq::VARS{knr};
			my $HTML=$self->htmlanzeig;

			my $sql="select pin,vname,nname,email from benutzer where nname='$baseq::VARS{nnname}'";
			my $sth= $self->sqlprepare($sql);

			$HTML.="<TABLE WIDTH='80%' BORDER=1>".$self->TR(["",$self->sfont("<B>".$self->trans("HI53a")."<\B>"),$self->sfont("<B>".$self->trans("HI56")."<\B>"),$self->sfont("<B>".$self->trans("HI57")."<\B>"),$self->sfont("<B>".$self->trans("HI62")."<\B>")]);

			while ( @L=$sth->fetchrow_array ) {
			$self->log(4,"Liste=".join ("--",@L));
			#$self->{npin}=$L[0];
			$HTML.=$self->TR(["<FORM><INPUT TYPE='hidden' NAME='knr'  VALUE=$self->{knr} ><INPUT TYPE='hidden' NAME='npin' VALUE=".$L[0].">".$self->SM("bbut","BU43"),$self->sfont($L[0]),$self->sfont($L[1]),$self->sfont($L[2]),$self->sfont($L[3])]);
			$HTML.="\n</FORM>";
			}
			$HTML.="</TABLE>";
			$baseq::VARS{nnname}="";
			$self->printhtml($TITEL,$HTML);
			$self->exit;

	}
	


	#Kontoauszug vorbereiten

	if ($baseq::VARS{bbut} eq $self->trans("BU51")) {

		$self->{knr} = $baseq::VARS{knr};
		my $HTML="";
		$HTML.=$self->htmlvorauszug;
		$self->printhtml($self->trans("BU51"),$HTML);
		$self->exit;
	}

	#Kontoauszug drucken

	if ($baseq::VARS{bbut} eq $self->trans("BU52")) {

		if ($baseq::VARS{pin} == 0) {
				$self->{warntext}="PIN-Nummer muß angegeben werden";	
				my $HTML=$self->htmlvorauszug;
				$self->printhtml($TITEL,$HTML);
				$self->exit;
		}

		my $sql = "select pin from benutzer where pin=$baseq::VARS{pin}";
		my $npin = $self->sqlselect($sql);

		if (defined $npin) {	
				my $HTML="";
				$HTML.=$self->htmlauszug;
				$self->printhtml($self->trans("BU51"),$HTML);
				$self->exit;
		}
		else {
			$self->{warntext}="Teilnehmer  PIN-Nummer ".$baseq::VARS{pin}." existiert nicht!";
			my $HTML=$self->htmlvorauszug;
			$self->printhtml($TITEL,$HTML);
			$self->exit;
			}
	}

	#Altersgruppe-Zugehörigket neuberechnen:
	#gebclusnnew
	if ($baseq::VARS{bbut} eq $self->trans("BU58a")) {
                $self->gebclusnnew;
                $self->exit;
        }


	
	#Beenden
	if ($baseq::VARS{bbut} eq $self->trans("BU11")) {
		my $exiturl='http://www.prorata.de';
		$self->redirect($exiturl);
		}


	#Speichern
	if ($baseq::VARS{bbut} eq $self->trans("BU1")) {

			$self->{knr} = $baseq::VARS{knr};
			$self->log(4,"Entering Speichern");
			$TITEL=$self->trans("BU42");
			$benutzer=pdat->init($self,$baseq::VARS{pin});
			$benutzer->getvars;
			$benutzer->store;
			$benutzer->load;
			my $HTML=$self->htmlanzeig.$benutzer->htmlbearb;
			$self->printhtml($TITEL,$HTML);
			$self->exit;

	}

	#Konto abrufen
	if ($baseq::VARS{bbut} eq $self->trans("BU35")) {
			$self->log(4,"Kontostand wird abgerufen");
			$self->{knr} = $baseq::VARS{knr};
			$self->{id}=$baseq::VARS{npin};
			$kasse=kasse->init($self);			
			$kasse->{warntext}=$kasse->trans("WA22");
			my $HTML=$self->htmlanzeig.
			$self->afont("<P ALIGN='CENTER'>".$self->trans("TI16")." Benutzer - $baseq::VARS{pin}</P>").
			$kasse->kontohtml($baseq::VARS{pin})."\n";
			$self->printhtml($self->trans("TI16")." Benutzer - $baseq::VARS{pin}",$HTML);
		    $self->exit;
	}

	#Kassenstand
	if ($baseq::VARS{bbut} eq $self->trans("BU45")) {


			my $sql  = "delete from kasse where pin=0";
			$self->sqldo($sql);
			$self->loadtmp;
			my $kasse = kasse->init($self,$baseq::VARS{knr},$baseq::VARS{kpass});
			my $HTML=$kasse->ingehtml;
			$kasse->printhtml($kasse->trans("TI16") , $HTML);
			$self->exit;
		}

	#Kassenstand aktualisieren, Auszahlen

	if ($baseq::VARS{ibut} eq $self->trans("BU27")) {
			
			$self ->loadtmp;
			my $kasse = kasse->init($self,$baseq::VARS{knr},$baseq::VARS{kpass},$baseq::VARS{ibetrag},$baseq::VARS{iauszahl},$baseq::VARS{ipin});
			$kasse->auszahlung($baseq::VARS{iauszahl},$baseq::VARS{ipin});
			$HTML.=$kasse->ingehtml;	
			$kasse->printhtml($kasse->trans("TI16") , $HTML);
			$self->exit;
	
	}

	#Button Zufallsgenerator-Maske aufrufen
	if ($baseq::VARS{bbut} eq $self->trans("BU53") ){
			$self->{knr} = $baseq::VARS{knr};
			$self->loadtmp;
			$self->printhtml($self->htmlzufallsgen);
			$self->exit;
	}


	#Button Zufallsgenerator--Generieren
	if ($baseq::VARS{bbut} eq $self->trans("BU54") ){
			$self->{knr} = $baseq::VARS{knr};
			$self->loadtmp;
			my $Zahl1=$baseq::VARS{zahl1};
			my $Zahl2=$baseq::VARS{zahl2};
			
			#1) my $Zahl = (int(rand()*$Zahl2))+$Zahl1;
			my $Zahl = int($Zahl1 + ($Zahl2 - $Zahl1 + 1) *rand());
			#3)my $Zahl = int(rand($Zahl1,$Zahl2));

			$self->log(4,"Entering:   localisation  admin.pl - Zufallsgeherator zahl1=$Zahl1");
			$self->log(4,"Entering:   localisation  admin.pl - Zufallsgeherator zahl2=$Zahl2");
			$self->log(4,"Entering:   localisation  admin.pl - Zufallsgeherator zahl=$Zahl");
			$self->{warntext}="Ausgewählte Zahl ist - $Zahl";
			$self->htmlzufallsgen;
			$self->exit;
	}

		#Kein Button: Login

		else {
		$self->{id}=$baseq::VARS{apin};
		$self->loadtmp;
		$baseq::VARS{knr}=$baseq::VARS{apin};
		$baseq::VARS{kpass}= crypt($baseq::VARS{apass},"xy");
		$self->log(4,"Entering: localisation admin.pl, knr = $baseq::VARS{knr}");		
		my $erg=$self->checkpass($baseq::VARS{knr}, $baseq::VARS{kpass} );
		$self->log(4,"Entering:   localisation  admin.pl erg= $erg");
		if ($erg==4) {
			$self->{knr}=$baseq::VARS{apin};
			$self->load;
			$self->printhtml($self->trans("TI22") , $self->htmladmin($baseq::VARS{pin}));
			$self->exit;}
		else {$self->login;$self->exit;}
		
		}

}
