=head1 edit_zustand

Editiere einen Zustandstabellendatensatz.

=head2 Argumente

=over 4

=item $typ

Name der Zustandstabelle ("domain", "handle")

=item $id

ID des Eintrags.

=item $kn

Standard-Prompttext.

=item $tkn

Textform des Tabellennamens ("Domain").

Default: C<ucfirst($typ)>.

=back

=head2 Ergebnis

Nix.

=cut

use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in strip_kn log_view list_zustand set_zustand_nach
	set_zustand_ticketstatus set_zustand_flags set_zustand_status
	set_zustand_acctinfo
	delete_zustand warn_arbeit set_zustand_reseller valid_zustand);
use Fehler qw(report_fehler warnung);
use Dbase::Help qw(DoFn);
use Dbase::Globals qw(get_descr);

sub edit_zustand ($$;$$) {
	my($typ,$id,$kn,$tkn) = @_;
	$tkn = ucfirst($typ) unless defined $tkn;

	return unless valid_zustand($typ,$id,0,$kn);

	my $work = warn_arbeit("${typ}zustand",$id,"*",$kn);
	my($von,$mail) = DoFn("select von,erkannt from ${typ}zustand where id=$id");
	my $tvon = get_descr("${typ}status",$von);
	my $tmail = get_descr("${typ}status",$mail);
	$kn = strip_kn($kn)."${tkn}zustand_$von/$tvon:$mail/$tmail";

	zustand: while(1) {
		my $act = line_in "$kn >",4; print "\n",last if $act eq "";
		if($act eq "?") {
			print <<END;
l    auflisten
t    Zielstatus (ticket)          s   Zielstatus ($tkn)
f    Flags (aka Aktionen)         r   Reseller-Status
i    Infotext (für das Statusfeld des Tickets)
a    Accounting-Text (für die Rechnung; triggert einen Accountingdatensatz)

del  löschen
END
			next;
		}
		if($act eq "H") { log_view("${typ}zustand","von",$von,"mail",$mail); next; }
		if($act eq "l") { list_zustand($typ,$id,$kn,$tkn); next; }
		if($act eq "s") { set_zustand_nach($typ,$id,$kn); next; }
		if($act eq "t") { set_zustand_ticketstatus($typ,$id,$kn); next; }
		if($act eq "f") { set_zustand_flags($typ,$id,$kn); next; }
		if($act eq "r") { set_zustand_reseller($typ,$id,$kn); next; }
		if($act eq "i") { set_zustand_status($typ,$id,$kn); next; }
		if($act eq "a") { set_zustand_acctinfo($typ,$id,$kn); next; }
		if($act eq "del") { return unless delete_zustand($typ,$id,$kn); next; }

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