use utf8;
use warnings; no warnings "redefine";
use strict;
use Fehler qw(problem);
use Dbase::Help qw(isodate Do DoSelect DoFn DoTime);

# Invariante: Urlaub(vorher)+Resturlaub(vorher)+Jahresurlaub(DB)
#   == Urlaub(nachher)+Resturlaub(nachher)

sub add_jahresurlaub() {
	my($jetzt) = isodate(DoTime);
	my $set = DoFn("select id from nextid where name = 'jahresurlaub'");
	if($set < $jetzt) {
		$set++;
		DoSelect {
			my($pers,$u,$ju) = @_;
			if($u < 0) {
				$ju += $u;
				$u = 0;
			}
			Do("update perso set resturlaub = $u, urlaub = $ju where person=$pers");
		} "select person,urlaub+resturlaub,jahresurlaub from perso";
		Do("update nextid set id = $set where name = 'jahresurlaub'");
		print "Jahresurlaub für $set geupdatet.\n";
		$set;
	} else {
		return problem "Update in $set war schon.\n";
	}
}
1;
