use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in log_update strip_kn warn_arbeit
		delete_acct list_acct set_acct_dienst set_acct_ziel set_acct_datum
		set_acct_quelle set_acct_pakete set_acct_bytes set_acct_kunde
		log_view set_acct_text set_acct_assoc_info set_acct_assoc_ktarif
		delete_acctassoc);
use Fehler qw(report_fehler);
use Dbase::Help qw(DoFn Do DoTime isotime);

sub edit_acct($$$;$$) {
	my($hash,$seq,$id,$kn,$ndienst) = @_;

	my $cnt = DoFn("select count(*) from acct where `hash`=$hash and seq=$seq");
	if($cnt > 1) {
		print "Diese ID ist nicht eindeutig. Bitte den Guru fragen... Sorry.\n";
		return undef;
	} elsif($cnt == 0) {
		print "*** Nicht gefunden -- neu angelegt.\n";
		log_update("acct","hash",$hash,"seq",$seq,undef,"*");
	    my($jj,$mm,$tt) = isotime(DoTime);
	    $mm += 100*$jj;
		if(defined $ndienst) {
			$ndienst=", dienst=$ndienst";
		} else {
			$ndienst="";
		}

		Do("insert into acct set `hash`=$hash, seq=$seq, kunde=$id, jjmm=$mm, tt=$tt $ndienst");
	} else {
		my $rk = DoFn("select kunde from acct where `hash`=$hash and seq=$seq");
    	print <<END if $rk != 0 and $id != 0 and $id != $rk;

*** Vorsicht: Du bearbeitest gerade Kunde #$id.
              Dieser Eintrag gehört aber zu Kunde #$rk!

END
	}

	$kn = strip_kn($kn)."Acct_$hash-$seq";
	my $work = warn_arbeit("acct","$hash,$seq","*",$kn);

	acctit: while(1) {
		my $act = line_in "$kn >",4; last if $act eq "";
		if($act eq '?') {
			print <<'END';
l   auflisten

d   Dienst ändern                 z   Ziel ändern
x   Datum ändern                  q   Quelle ändern
p   Datenpakete/Bestellungen      b   Bytes/Einheiten
K   Kunde ändern                  t   Zusatztext ändern

Tarife:
ta  Accountingdaten               tt  Kundentarif

del Datensatz löschen
dt  Assoziation mit Kundentarif entfernen
END
			next;
		}
		if($act eq "del") { return undef if delete_acct($hash,$seq); next; }
		if($act eq "l") { list_acct($hash,$seq,$kn); next; }
		if($act eq "d") { set_acct_dienst($hash,$seq,$kn); next; }
		if($act eq "z") { set_acct_ziel($hash,$seq,$kn); next; }
		if($act eq "x") { set_acct_datum($hash,$seq,$kn); next; }
		if($act eq "q") { set_acct_quelle($hash,$seq,$kn); next; }
		if($act eq "p") { set_acct_pakete($hash,$seq,$kn); next; }
		if($act eq "b") { set_acct_bytes($hash,$seq,$kn); next; }
		if($act eq "K") { set_acct_kunde($hash,$seq,$kn); next; }
		if($act eq "H") { log_view($kn,"acct"); next; }
		if($act eq "t") { set_acct_text($hash,$seq,$kn); next; }
		if($act eq "ta") { set_acct_assoc_info($hash,$seq,$kn); next; }
		if($act eq "tt") { set_acct_assoc_ktarif($hash,$seq,$kn); next; }
		if($act eq "dt") { delete_acctassoc($hash,$seq,$kn); next; }
		print "Aktion '$act' kenne ich nicht. Liste mit '?'.\n";
		next; fehler: report_fehler(4);
	}
	($hash,$seq);
}
1;
