use utf8;
use warnings; no warnings "redefine";
use strict;

use Loader qw(
	add_rechstep
	delete_dienst
	edit_rechstep
	edit_umrechnung
	line_in
	list_dienst
	log_view
	set_dienst_info
	set_dienst_name
	set_dienst_rechnungstext
	strip_kn
	valid_dienst
	warn_arbeit
  );
use Fehler qw(report_fehler);
use Dbase::Help qw(DoFn Do);

sub edit_dienst($;$) {
	my($id,$kn) = @_;
	return unless defined valid_dienst($id);
	my $okn = strip_kn($kn);
	my $dname = DoFn("select name from dienst where id = $id");

	$kn = $okn."Dienst_$id:$dname";
	my $work = warn_arbeit("dienst",$id,"*",$kn);

	while(1) {
		my $act = line_in "$kn >",4; last if $act eq "";
		if($act eq '?') {
			print <<'END';
l   auflisten
n   Name ändern              i   Infotext ändern
r   Rechnungstext ändern
u   Umrechnung ändern        b   Berechnung ändern

del Dienst löschen

END
			next;
		}
		if($act eq "del") { return undef if delete_dienst($id); next; }
		if($act eq "H") { log_view($kn,"dienst","id",$id); next; }
		if($act eq "l") { list_dienst($id,$kn); next; }
		if($act eq "i") { set_dienst_info($id,$kn); next; }
		if($act eq 'r') { set_dienst_rechnungstext($id); next; }
		if($act eq "b") {
			my $sid = DoFn("select id from rechstep where dienst=$id and kunde is null");
			if(defined $sid) {
            	edit_rechstep($sid,$kn);
			} else {
				print "kein Berechnungsschritt bekannt -- neu anlegen ..:\n";
				add_rechstep($kn,0,$id);
			}
			next;
		}

		if($act eq "n") { set_dienst_name($id,$kn);
			$dname = DoFn("select name from dienst where id = $id");
			$kn = $okn."Dienst_$id:$dname";
			next;
		}
		if($act eq "u") {
			unless(DoFn("select count(*) from tarifeq where dienst=$id")) {
				Do("insert into tarifeq set dienst=$id, faktor=100,isrec='j'");
			}
			edit_umrechnung($id, $okn);
			next;
		}
		print "Aktion '$act' kenne ich nicht. Liste mit '?'.\n";
		next; fehler: report_fehler(4);
	}
	$id;
}
1;
