use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in list_recheinheiten log_view add_recheinheit
	edit_recheinheit valid_recheinheit);
use Fehler qw(report_fehler);
use Dbase::Help qw(DoFn qquote);

# Flag: 1: Return nach Status
#       2: Hauptmenu-Features
#       4: '-' akzeptieren

sub edit_recheinheiten ($$;$$) {
	my ($sid,$typ,$flag,$kn) = @_;
	$flag=0 unless defined $flag;

	while(1) {
		my $act = line_in "$kn Schritt >",($flag&1)?0:4; return undef if $act eq "";
		if($act eq "?") {
			print <<'END';
l      auflisten
END
			print <<'END' if $flag & 2;
a      hinzufügen
END
			print <<'END' if $flag & 1;
?NAME  Schritt editieren
NAME   Schritt aufrufen
END
			print <<'END' unless $flag & 1;
NAME   Schritt editieren
END
			print "\n";
			next;
		}
		if($act eq "l") { list_recheinheiten($sid,$typ,$kn); next; }
		if($act eq "H") { log_view($kn,"recheinheit"); next; }
		if($act eq "-") {
			return $act if $flag & 4;
			print "???\n";
			next;
		}
		if($act eq "a" and $flag & 2) { 
			my $ret = add_recheinheit($sid,$typ,$kn);
			return $ret if $flag & 1 and $ret > 0;
			next;
		}
		my $force = ($act =~s/^\?//);
		if($act =~ /^\S+$/) { 
			my $id;
			if($act =~ /^\d+$/) {
				$id = $act;
			} else {
				$id = DoFn("select id from recheinheit where rechstep=$sid and typ=${\qquote $typ} and name=${\qquote $act}");
			}
			if($id) {
				next unless valid_recheinheit($id,1);
				return $id if $flag & 1 and not $force;
				edit_recheinheit($id,$kn,$sid);
			}
			next;
		}
		print "Aktion '$act' kenne ich nicht.\n";
		next; fehler: report_fehler(4);
	}
	undef;
}
1;
