use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoFn);
use Fehler qw(problem warnung);
use Loader qw(strip_kn);

sub valid_fnbatch($;$$) {
	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,"Fnbatch '$id' gibt es nicht."
	unless DoFn("select count(*) from fnbatch where id=$id");

	if($flag & 16) {
		my $stat = DoFn("select status from fnbatch where id = $id");
		return problem "Batch-Job #$id ist noch in Bearbeitung" if $stat <= 2;
	}

	if($flag & 8) {
		$flag &= ~8;
	} else {
		$kn = strip_kn($kn)."Fnbatch_$id";
	}

	unless($flag & 1) {
	}

	if ($flag & 4) {
		DoSelect {
			my($buchen,$mandant,$status,$art,$daten) = @_;
			$err++,problem $kn,"Keine Buchungsdaten gesetzt" if $buchen == 0;
			$err++,problem $kn,"Kein Mandant gesetzt" if $mandant == 0;
			$err++,problem $kn,"Kein Status gesetzt" if $status == 0;
			$err++,problem $kn,"Keine Art gesetzt" if $art eq "";
			$err++,problem $kn,"Keine Daten gesetzt" if $daten eq "";
		} "select buchen,mandant,status,art,daten from fnbatch where id=$id";
	}

	$err ? undef : $id;
}
1;
