use utf8;
use warnings; no warnings "redefine";
use strict;
use Fehler qw(problem);
use Loader qw(line_printer);
use Dbase::Help qw(isotime DoSelect DoT DoFn DoTime);
use Dbase::Globals qw(flag_names get_descr info_descr mpersinfo name_kunde);

sub list_kunde($;$$) {
	my($id,$kn,$flag) = @_;
	line_printer;

	DoSelect {
		my (
			$timestamp, $name,     $kund,        $resell,
			$beginn,    $ende,     $ap_vertrieb, $ap_technik,
			$zuletzt,   $berechne, $chg,         $kprio,
			$flags,     $pw,       $konto,       $stnr,
			$zziel,     $sprache,  $haupt,       $adminc,
			$billc,     $mail_ip,
		) = @_;
		print $Db::pr_fh "ID       : $id\n";
		print $Db::pr_fh "Timestamp: ".isotime($timestamp)."\n";
		print $Db::pr_fh "Kunde    : $name\n";
		print $Db::pr_fh "USt-ID-Nr: $stnr\n" if defined $stnr;
		print $Db::pr_fh "Beginn   : ".isotime($beginn)."\n" if $beginn;
		print $Db::pr_fh "Ende     : ".isotime($ende)."\n" if $ende;
		printf$Db::pr_fh "Hauptpers: #%5d:%s\n", $haupt, mpersinfo($haupt) if $haupt;
		printf$Db::pr_fh "AdminC   : #%5d:%s\n", $adminc, mpersinfo($adminc) if $adminc;
		printf$Db::pr_fh "BillC    : #%5d:%s\n", $billc, mpersinfo($billc) if $billc;
		printf$Db::pr_fh "Vertr.-AP: #%5d:%s\n", $ap_vertrieb, mpersinfo($ap_vertrieb) if $ap_vertrieb;
		printf$Db::pr_fh "TechnikAP: #%5d:%s\n", $ap_technik,  mpersinfo($ap_technik) if $ap_technik;
		print $Db::pr_fh "Änderung : ".isotime($chg)."\n" if $chg;
		print $Db::pr_fh "Rechnung : $zuletzt\n" if $zuletzt;
		print $Db::pr_fh "berechne : ".get_descr("intervall",$berechne)."\n" if $berechne;
		print $Db::pr_fh "Priorität: ".get_descr("kprio",$kprio)."\n" if defined $kprio;
		print $Db::pr_fh 'Passwort : '.get_descr("passwort",$pw)."\n" if defined $pw;
		print $Db::pr_fh "ZahlungsZ: $zziel Tage\n" if $zziel;
		print $Db::pr_fh "Flags    : ".flag_names($flags,"kunde")."\n";
		print $Db::pr_fh "BuchKonto: $konto\n" if $konto;
		print $Db::pr_fh "Überkunde: #$kund ".name_kunde($kund)."\n" if $kund;
		print $Db::pr_fh "Reseller : #$resell:".name_kunde($resell)."\n" if $resell;
		if ( defined $sprache ) {
			my $info = info_descr sprache => $sprache;
			print $Db::pr_fh 'Sprache  : ' . get_descr( sprache => $sprache, 1 ) . ( defined $info && " - $info" ) . "\n";
		}
		print $Db::pr_fh "Mail-IP  : *.$mail_ip\n" if defined $mail_ip;
		if ( my $cnt = DoFn("SELECT COUNT(*) FROM mailrules WHERE kunde = $id") ) {
			print $Db::pr_fh "Mailrules: $cnt Eintr" . ( $cnt == 1 ? 'ag' : 'äge' ) . "\n";
		}

		DoSelect {
			my($rid,$rart) = @_;
			print $Db::pr_fh "Reseller : ".get_descr("reseller",$rart)."\n";
		} "select id,art from reseller where kunde=$id";

		my $res = DoT("select id,name,ende from kunde where kunde = $id");
		if(ref $res) {
			my $time = DoTime;
			print $Db::pr_fh "Unterknd : ";
			my $arr;
			my $ended = 0;
			while($arr = shift @$res) {
				my($idi,$nami,$endi) = @$arr;
				if($flag & 1 or not $endi or $endi > $time) {
					print $Db::pr_fh "#$idi $nami";
					print $Db::pr_fh ", " if @$res or $ended;
				} else {
					$ended++;
				}
			}
			print $Db::pr_fh "($ended beendete)" if $ended;
			print $Db::pr_fh "\n";
		}
	} <<_ or problem "Kunde '$id' unbekannt";
	SELECT timestamp,
	       name,
	       kunde,
	       reseller,
	       beginn,
	       ende,
	       ap_vertrieb,
	       ap_technik,
	       zuletzt,
	       berechne,
	       geaendert,
	       kprio,
	       flags,
	       pwklasse,
	       erloeskonto,
	       steuernr,
	       zahlung,
	       sprache,
	       hauptperson,
	       adminc,
	       billc,
	       mail_ip
	FROM   kunde
	WHERE  id = $id
_
}

1;
