use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoFn Do isodate DoTime);
use Fehler qw(problem);
use Dbase::Globals qw(find_descr add_acct find_dienst);
use Loader qw(line_in domain_reg select_descr);
use Cf qw($DEFAULTKLASSE $WDESCR);

## flag&1: Erstellzeitpunkt verwenden
## flag&2: Infotext: $ai (Deskriptor "acctinfo")

sub acct_domain_gebuehr($$;$$$) {
	my($idi,$kn,$flag,$ai,$kt) = @_;
	$flag=0 unless defined $flag;

	my ($id,$tm,$domain,$ktarif) = DoFn("select kunde,beginn,domain,ktarif from domainkunde where id = $idi");

	my $dien;
	domain_reg($idi,\$dien);
	return problem "Zu dieser Domain finde ich keinen Dienst!" unless $dien;

	$ktarif=$kt if not $ktarif;

	if($flag & 1) {
		return problem "Keine Zeit bekannt\n"
			if $tm == 0;
	} else {
		$tm = DoTime;
	}
	if ($flag & 2) {
		return problem "Die Domain hat noch keinen Tarif" unless $ktarif;
		$ai = select_descr("acctinfo",4|128,undef,"Domain-Accounting","domain,!hide") unless defined $ai;
		return undef unless defined $ai;
		$ai=undef if $ai eq "-";
	} else {
		$ai=undef;
	}

	my($year,$mon,$mday)=isodate($tm);
	$year = $year * 100 + $mon;

	my $quelle = find_descr("quelle",$WDESCR) || 0;

	my $key;
	
	if ($dien == find_dienst "nic-us") {
		$key = find_descr("ziel","welt");
	} elsif(DoFn("select domain from domainkunde where id = $idi") =~ /\..*\./) {
		$key = find_descr("ziel",$DEFAULTKLASSE);
	} else {
		$key = find_descr("ziel","deutsch");
	}

	# Flag 2: lege auf jeden Fall einen neuen Datensatz an
	my($nh,$ns) = add_acct($id,$dien,$key,$year,$mday,$quelle,1,1,$domain, 2);
	Do("update acctassoc set tarifkunde=$ktarif, acctinfo=$ai where `hash`=$nh and seq=$ns") if $ai;
	
	wantarray ? ($nh,$ns) : 1;
}
1;
