use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in line_printer log_update valid_kunde log_view);
use Fehler qw(report_fehler);
use Dbase::Globals qw(name_kunde);
use Dbase::Help qw(DoFn Do);

sub edit_konto($;$) {
	my($id,$kn) = @_;
	return unless valid_kunde($id,1);
	$kn = "Kunde $id:" .name_kunde($id) if $kn eq "";
	
	my $act = "run";
	while(1) {
		if(defined $act and $act eq "run") {
			$act = "l";
		} else {
			$act = line_in "$kn Konto >",4; last if $act eq "";
		}
		if($act eq "?") {
			print <<'END';
l  auflisten
a  anlegen/ändern
d  löschen
END
			next;
		}
		if($act eq "l") {
			my($blz,$name,$kontonr,$bank) = DoFn("select blz,name,kontonr,bank from konten where kunde = $id");
			if(defined $kontonr) {
				line_printer;
				printf $Db::pr_fh "%-15s %s\n", $kontonr, $name;
				printf $Db::pr_fh "%-15s %s\n", $blz    , $bank;
			} else {
				print "- kein Eintrag.\n";
			}
			next;
		}
		if($act eq "a") {
			my $ax;
			my($blz,$name,$kontonr,$bank) = DoFn("select blz,name,kontonr,bank from konten where kunde = $id");
			$ax = line_in "Kontoinhaber: "; next if $ax eq "";
			$name = $ax if $ax ne "-";
			my $found = defined $kontonr;

			rko1: {
				$ax = line_in "Konto: "; next if $ax eq "";
				$kontonr = $ax if $ax ne "-";
				if($kontonr !~ /^\d+$/) {
					print "Du hast es immer noch nicht begriffen. Schäm dich.\n";
					goto rko1;
				}
			}

			$ax = line_in "Bank: "; next if $ax eq "";
			$bank = $ax if $ax ne "-";

			rko2: {
				$ax = line_in "BLZ: "; next if $ax eq "";
				$blz = $ax if $ax ne "-";
				if($blz !~ /^\d+$/) {
					print "Du hast es immer noch nicht begriffen. Schäm dich.\n";
					goto rko2;
				}
			}

			if($found) {
				log_update("konten","kunde",$id,undef,"blz","name","bank","kontonr");
				Do("update konten set blz = '$blz', name = '$name', bank = '$bank', kontonr = '$kontonr' where kunde = $id");
			} else {
				log_update("konten","kunde",$id,undef,"*");
				log_update("kunde","id",$id,undef,"konto","*");
				Do("insert into konten set kunde=$id, blz='$blz', name='$name', bank='$bank', kontonr='$kontonr'");
			}

			next;
		}
		if($act eq "H") { log_view($kn,"konten","kunde",$id); next; }
		if($act eq "d" or $act eq "del") {
			log_update("konten","kunde",$id,undef,"-");
			log_update("kunde","id",$id,undef,"konto","-");
			Do("delete from konten where kunde = $id");
			next;
		}

		print "Aktion '$act' kenne ich nicht. Liste mit '?'.\n";
		next; fehler: report_fehler(4);
	}
	undef;
}
1;
