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

use Loader qw(
	delete_perso_monat
	line_in list_perso_monat log_view
	set_perso_monat_auszahl
	set_perso_monat_diff
	set_perso_monat_ist
	set_perso_monat_soll
	set_perso_monat_ueberstundenlimit
	strip_kn
	valid_person
	warn_arbeit
  );
use Fehler qw(report_fehler);

=head4 edit_person_monat

C<edit_person_monat( $monat $person [$prompt] )

Editiert die Daten einer Person für einen Monat.

=cut

sub edit_person_monat($$;$) {
	my($monat,$id,$kn) = @_;
	return unless (defined $id and $id eq "0") or valid_person($id);

	my $psel;
	if($id) {
		$psel="person=$id";
	} else {
		$psel="(person = 0 OR person is NULL)";
		$id=0;
	}
	my $mon = add_persomonat($id,$monat,1);
	print "...Datensatz neu angelegt.\n" if $mon;

	my($j,$m)=(int($monat/100),$monat%100);
	$kn = strip_kn($kn).sprintf "Monat %d-%02d",$j,$m;
	my $work = warn_arbeit("persomonat","$monat,$id","*",$kn);

	zeitkt: while(1) {
		my $act = line_in "$kn >",4; last if $act eq "";
		if($act eq "?") {
			print <<'END';
l   anzeigen
s   Sollzeit setzen
a   Auszahlung setzen
END
			print <<'END' if $id;

a   ausgezahlte Überstunden setzen
u   Überstunden setzen (passt auch die Person an)
ul  Überstundenlimit setzen
i   Istzeit setzen
END
			print <<'END';
del Datensatz löschen
END
			next;
		}
		if($act eq "l") { list_perso_monat($monat,$id,$kn); next; }
		if($act eq "s") { set_perso_monat_soll($monat,$id,$kn); next; }
		if($act eq "i") { set_perso_monat_ist($monat,$id,$kn); next; }
		if($act eq "u") { set_perso_monat_diff($monat,$id,$kn); next; }
		if($act eq "ul") { set_perso_monat_ueberstundenlimit($monat,$id,$kn); next; }
		if($act eq "a") { set_perso_monat_auszahl($monat,$id,$kn); next; }
		if($act eq "del") { return unless delete_perso_monat($monat,$id,$kn); next; }
		if($act eq "H") { log_view($kn,"persomonat","monat",$monat,"person",$id||0); next; }

		print "Aktion '$act' kenne ich nicht.\n";
		next; fehler: report_fehler(4);
	}
	undef;
}

1;
