use utf8;
use warnings; no warnings "redefine";
use strict;
use Fehler qw(ffehler fehler);
use Loader qw(select_descr log_update set_acct_assoc_ktarif);
use Dbase::Help qw(DoFn Do);
use Dbase::Globals qw(get_descr);

sub set_acct_assoc_info($$;$) {
	my($hash,$seq,$kn) = @_;
	my($id,$oai)=DoFn("select id from acctassoc where `hash`=$hash and seq=$seq");

	my $ai = select_descr("acctinfo",128,undef,"Accounting", is_dienst(DoFn("select dienst from acct where hash=$hash and seq=$seq"),"nic") ? "domain,!hide" : "!hide");
	return undef unless defined $ai;

	unless($id) {
		print "...angelegt.\n";

		ffehler {
			log_update("acct","hash",$hash,"seq",$seq,undef,"acctinfo","*");
			$id=Do("insert into acctassoc set `hash`=$hash, seq=$seq, acctinfo=$ai");
			set_acct_assoc_ktarif($hash,$seq,$kn)
				or fehler "kein Tarif angegeben";
		} sub {
			print "...unvollständig.\n";
			Do("delete from acctassoc where id=$id") if $id;
			$id = undef;
		};
	} else {
		Do("update acctassoc set acctinfo=$ai where id=$id");
		log_update("acct","hash",$hash,"seq",$seq,undef,"acctinfo",undef,$oai?get_descr("acctinfo",$oai):"-");
	}

	return $id ? ($hash,$seq) : ();
}
1;
