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

use Loader qw(
	add_persomonat
	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,$pers,$kn) = @_;
	return if $pers and not valid_person($pers);

	$pers ||= 0;

	my $mon = add_persomonat($pers,$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,$pers","*",$kn);

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

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,$pers,$kn); next; }
		if($act eq "s") { set_perso_monat_soll($monat,$pers,$kn); next; }
		if($act eq "i" and $pers) { set_perso_monat_ist($monat,$pers,$kn); next; }
		if($act eq "u" and $pers) { set_perso_monat_diff($monat,$pers,$kn); next; }
		if($act eq "ul" and $pers) { set_perso_monat_ueberstundenlimit($monat,$pers,$kn); next; }
		if($act eq "a" and $pers) { set_perso_monat_auszahl($monat,$pers,$kn); next; }
		if($act eq "del") { return unless delete_perso_monat($monat,$pers,$kn); next; }
		if($act eq "H") { log_view($kn,"persomonat","monat",$monat,"person",$pers||0); next; }

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

1;
