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

use Loader qw(
	copy_stundenliste
	delete_stundenliste
	flip_stundenliste_back
	line_in line_printer list_stundenliste log_view
	maile_stunden
	set_stundenliste_art
	set_stundenliste_delay
	set_stundenliste_info
	set_stundenliste_kunde
	set_stundenliste_person
	set_stundenliste_zeitraum
	set_stundenliste_ziel
	set_stundenliste_zuletzt
	strip_kn
	valid_person valid_stundenliste
	warn_arbeit warn_person
  );
use Fehler qw(report_fehler);
use Dbase::Help qw(DoFn);
use Dbase::Globals qw(kpersinfo);

sub edit_stundenliste($;$$) {
	my($id,$pers,$kn) = @_;

	return unless valid_stundenliste($id);
	if($pers) {
		return unless valid_person($pers,1);
	} else {
		$pers = DoFn("select person from stundenliste where id = $id");
	}

	$kn = strip_kn($kn)."Benachrichtigung_$id";
	my $work = warn_arbeit("stundenliste",$id,"*",$kn);
	warn_person("stundenliste",$id,$pers);

	while(1) {
		my $act = line_in "$kn >",4; last if $act eq "";
		if($act eq "?") {
			print <<'END';
l   auflisten
p   Ziel (wohin soll die Mail?)
n   Intervall (alle N Tage)        d   Datum (Start des Zeitraums)
v   Verzögerung (Tage nach Ende)   a   Art (welche Liste?)
k   Kunde                          i   Infotext

m   generieren und mailen          mf  generieren und anzeigen (kein DB-Update)
M   mailen (alte Liste)            MF  anzeigen (alte Liste)
r   einen Zeitraum zurückgehen

dup Eintrag duplizieren (auf andere Person)
del Datensatz löschen              P   Person (wessen Stunden?) ändern 
END
			next;
		}
		if($act eq "p") { set_stundenliste_ziel($id,$kn); next; }
		if($act eq "P") { return if set_stundenliste_person($id,$kn); next; }
		if($act eq "n") { set_stundenliste_zeitraum($id,$kn); next; }
		if($act eq "d") { set_stundenliste_zuletzt($id,$kn); next; }
		if($act eq "v") { set_stundenliste_delay($id,$kn); next; }
		if($act eq "a") { set_stundenliste_art($id,$kn); next; }
		if($act eq "i") { set_stundenliste_info($id,$kn); next; }
		if($act eq "r") { flip_stundenliste_back($id,$kn); next; }
		if($act eq "k") { set_stundenliste_kunde($id,$kn); next; }
		if($act eq "l") { list_stundenliste($id,$kn); next; }
		if($act eq "H") { log_view($kn,"stundenliste","id",$id); next; }
		if($act eq "m" or $act eq "M") {
			maile_stunden($id, 16 | (($act eq "M") ? 2|8 : 0));
			next; }
		if($act eq "mf" or $act eq "MF") {
			maile_stunden($id,(($act eq "MF")?2:0)|4|8|1);
			next;
		}
		if($act eq "dup") { copy_stundenliste($id,$kn); return undef; }
		if($act eq "del") { delete_stundenliste($id,$kn); return undef; }
		print "Aktion '$act' unbekannt.\n";
		next; fehler: report_fehler(4);
	}
	$id;
}

1;
