use utf8;
use strict;

use warnings; no warnings qw(redefine);
use Dbase::Globals qw(name_kunde);
use Dbase::Help qw(DoFn DoTime isotime);
use Fehler qw(problem warnung);
use Loader qw(strip_kn valid_domains valid_personen);

sub valid_kunde($;$$) {
	my($id,$flag,$kn) = @_;
	$flag = 0 unless $flag;
	my $err;

	return problem $kn,"ID '$id' ist nicht numerisch!\n" unless $id =~ /^\d+$/;
	return problem $kn,"Kunde '$id' gibt es nicht."
		unless DoFn("select count(*) from kunde where id = $id");

	$kn = strip_kn($kn)."Kunde_$id";

	unless($flag & 1) {
		my($beginn,$ende,$uknd) = DoFn("select beginn,ende,kunde from kunde where id=$id");
		my $time = DoTime;
		warnung $kn,"Kunde ist bereits beendet (".isotime($ende).")" if $ende and $ende < $time;
		warnung $kn,"Kunde ist noch nicht gestartet (".isotime($beginn).")" if $beginn > $time;
		warnung $kn,"Kunde ist Unterkunde von #$uknd:".name_kunde($uknd) if $uknd;
	}
	if($flag & 4) {
		valid_auftraege($id,$flag,$kn);
		valid_domains($id,$flag,$kn);
		valid_personen($id,$flag,$kn);
	}

	$err ? undef : $id;
}

1;
