use utf8;
use warnings; no warnings "redefine";
use strict;
use Fehler qw(report_fehler);
use Loader qw(line_in list_arechnungen add_arechnung edit_arechnung
	valid_arechnung edit_rechsteps log_view);
use Dbase::Help qw(DoSelect DoFn);

# Flag: 1: Return mit einer Rechnung
#       2: Hauptmenu-Features
#       4: '-' wird akzeptiert

sub edit_arechnungen($;$$) {
	my($id,$flag,$kn) = @_;

	my $act;
	# $act = "run";

	rech: while(1) {
		if(defined $act and $act eq "run") {
			$act = "l";
		} else {
			$act = line_in "$kn Rechnung >",($flag&1)?0:4; last if $act eq "";
		}
		if($act eq "?") {
			print <<'END';
l    auflisten
a    hinzufügen
END
			print <<'END' if $flag & 4;
-    keine Rechnung
END
			print <<'END' if $flag & 2;
ds   Dienste/Schritte (kundenspezifisch)
END
			if($flag & 1) {
				print <<'END';
###  Rechnung aufrufen
?### Rechnung editieren

END
			} else {
				print <<'END';
###  Rechnung editieren

END
			}
			next;
		}
		if($act eq "-") {
			return $act if $flag & 4;
			print "???\n";
			next;
		}
		if($act eq "l") {
			my $hdr = list_arechnungen($id,1,$kn);
			print "(leer)\n" unless $hdr;
			next;
		}
		if($act eq "H") { log_view($kn,"rechnungen"); next; }
		if($act eq "ds") { edit_rechsteps(2,$kn,$id); next; }
		if($act eq "a") {
			$act = add_arechnung($id,$kn,1);
			return $act if $flag & 1 and $act;
			next;
		}
		my $force = ($act =~ s/^\?//) && $flag&1;
		if($act =~ s/^R?(\d+)$/$1/i) { 
			next unless valid_arechnung($act, not $force);
			return $act if $flag & 1 and not $force;
			edit_arechnung($act,$id,$kn);
			next;
		}
		print "Aktion '$act' unbekannt.\n";
		next; fehler: report_fehler(4);
	}
	undef;
}

1;
