=head1 edit_zustands

Editiere die Zustandstabellen eines Typs, Teil 2.

=head2 Argumente

=over 4

=item $typ

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

=item $von

Aktueller Zustand der Domain / des Handles.

=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 Fehler qw(fehler report_fehler);
use Dbase::Globals qw(get_descr);
use Dbase::Help qw(DoFn Do);
use Loader qw(select_descr list_zustands edit_zustand);

sub edit_zustands($$;$$$) {
	my($typ,$von,$flag,$kn,$tkn) = @_;
	$tkn = ucfirst($typ) unless defined $tkn;
	$flag=0 unless defined $flag;

	my $vname = get_descr("${typ}status",$von);
	my $vn = ($flag&1) ? "Event" : "Status";
	my $vvn = ($flag&1) ? "Status" : "Event";
	my $vn1 = ($flag&1) ? "?:" : "";
	my $vn2 = ($flag&1) ? "" : ":?";
	my $rs="'b'";

	while(1) {
		my $act = select_descr("${typ}status",1+131072+128+256+32768,<<END,"$kn ${tkn}zustand $vn1$von/$vname$vn2 $vvn","!hide");
l    auflisten
NAME anlegen / editieren
!    Reseller-Feld einstellen (momentan: $rs)

Bekannte ${tkn}zustände:
END
		last if not defined $act or $act eq "";
		if($act == -4) {
			$rs = select_descr("zsreseller",2,undef,"Reseller","!hide");
			next;
		}
		if($act == -1) { list_zustands($typ,$von,$flag,$kn,$tkn); next; }

		my $id = DoFn("select id from ${typ}zustand where ".(($flag&1) ? "von=$act and erkannt=$von" : "von=$von and erkannt=$act")." and reseller=$rs");
		unless($id) {
			$id = Do("insert into ${typ}zustand set ".(($flag&1)?"von=$act, erkannt=$von":"von=$von, erkannt=$act").", reseller=$rs");
			fehler "Problem beim Anlegen" unless $id;
			print "...neu angelegt.\n";
		}
		edit_zustand($typ,$id,$kn,$tkn);
		next; fehler: report_fehler(4);
	}
	undef;
}
1;
