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

use Fehler qw(warnung);
use Dbase::Globals qw(bignum find_descr);
use Dbase::Help qw(DoSelect);
use Loader qw(check_perm export_acct_arechnung export_fibunet strip_kn);

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

	return unless check_perm("rechnung");

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

	my $mflg = "";
	unless($flag & 4) {
		my $buchf = bignum(1)<<find_descr("rstatus","buchen");
		my $gebf = bignum(1)<<find_descr("rstatus","gebucht");
		$mflg = "and (flags & $buchf) and not (flags & $gebf)";
	}

	my $tm = time;
	export_fibunet( sub {
		my $ntm = time;
		if($tm != $ntm) {
			$tm = $ntm;
			print STDERR "\r Kunde: $id                \r";
		}

		if($mrnr) {
			$mrnr = "and rnr >= $mrnr";
		} else {
			$mrnr = "";
		}
		DoSelect {
			my($rnr) = @_;
			export_acct_arechnung($rnr,$flag,$kn);
		} "select rnr from rechnungen where kunde=$id and storniert is NULL $mrnr $mflg ";
		"";
	}, "buche Kunde #$id",$flag,$kn );
}

1;
