=head1 list_perso

C<list_perso( Person [Prompt] )

Zeigt die Personaldaten einer Person an.

=cut

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

use Dbase::Help qw(DoFn isotime DoSelect isodate isotime);
use Dbase::Globals qw(mpersinfo nice_intervall);
use Fehler qw(problem);
use Loader qw(line_printer);

sub list_perso($$) {
	my($pers,$kn) = @_; 
	line_printer;

	DoSelect {
		my($timestamp,$personr,$abschluss,$urlaub,$resturlaub,$ueber,$uelimit,$letzter,$jahr,$vor,$tagstunden,$beg,$end,$anfmonat,$anfueber) = @_;

		my $diffsum;
		if($anfmonat) {
			$diffsum = DoFn("select sum(diff) from persomonat where person=$pers and monat >= $anfmonat");
		} else {
			$diffsum = DoFn("select sum(diff) from persomonat where person=$pers");
		}
		$diffsum += $anfueber if defined $anfueber;

		print $Db::pr_fh "ID          : $pers\n";
		print $Db::pr_fh "Timestamp   : ".isotime($timestamp)."\n";
		print $Db::pr_fh "Personalnr  : $personr\n" if $personr;
		print $Db::pr_fh "MA seit     : ".isotime($beg)."\n" if $beg;
		print $Db::pr_fh "MA bis      : ".isotime($end)."\n" if $end; 
		print $Db::pr_fh "Abt.Leiter  : ".mpersinfo($vor)."\n" if $vor;
		print $Db::pr_fh "Abschluss   : ".isodate($abschluss)."\n" if $abschluss;
		if($urlaub) {
			my $tg = sprintf "%g",$urlaub/24/3600; $tg =~ s/\s+$//;
			print $Db::pr_fh "Urlaub      : $tg Tage\n";
		}
		if($resturlaub) {
			my $tg = sprintf "%g",$resturlaub/24/3600; $tg =~ s/\s+$//;
			print $Db::pr_fh "Resturlaub  : $tg Tage\n";
		}
		print $Db::pr_fh "Überstunden : ".nice_intervall($ueber,2)." (abgerechnet)\n" if $ueber;
		print $Db::pr_fh "Überstunden : ".nice_intervall($diffsum,2)." (seit Startzeit)\n";
		print $Db::pr_fh "Überstunden : ".nice_intervall($uelimit,2)." (max insgesamt)\n" if defined $uelimit;
		printf $Db::pr_fh "Berechnung  : bis %d-%02d\n",int($letzter/100),$letzter%100 if $letzter;
		if($jahr) {
			my $tg = sprintf "%g",$jahr/24/3600; $tg =~ s/\s+$//;
			print $Db::pr_fh "Jahresurlaub: $tg Tage\n";
		}
		printf $Db::pr_fh "Stunden/Tag : %5.3f Stunden\n",$tagstunden/1000 if defined $tagstunden;

		printf $Db::pr_fh "Ber.Zählung : ab %d-%02d\n",int($anfmonat/100),$anfmonat%100 if $anfmonat;
		printf $Db::pr_fh "Ber.Übertrag: ".nice_intervall($anfueber,2)."\n" if $anfueber;
	} "select timestamp,personr,abschluss,urlaub,resturlaub,ueberstunde,ueberstundenlimit,letzter,jahresurlaub,vorgesetzter,tagstunden,beginn,ende,anfangsmonat,anfangsueber from perso where person = $pers"
		or problem "Personaleintrag zu '$pers' unbekannt";
}

1;
