use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(log_update);
use Dbase::Help qw(Do DoFn);
use Dbase::Globals qw(kkpersinfo);

sub set_domain_from($$$;$) {
	my($idi,$kn,$domain,$flag) = @_;

	unless($domain =~ /^\d+$/) {
		my $dom = DoFn("select id from domainkunde where domain = '$domain' and ende is NULL ");
		unless($dom) {
			print STDERR "Domain '$domain' nicht bekannt!\n";
			return undef;
		}
		$domain = $dom;
	}
	my $nch;

	foreach my $who('owner','adminc','techc','zonec','billc') {
		# o: alt, in zu verändernder Domain
		# n: neu, in bekannter Domain
		my $npers = DoFn("select $who from domainkunde where id = $domain");
		my $opers = DoFn("select $who from domainkunde where id = $idi");
		unless($npers) {
			if($opers) {
				print "$who...bereits gesetzt ($opers in $domain).\n";
			} else {
				print "$who...nicht gesetzt.\n";
			}
			next;
		}
		next if $opers and $opers == $npers;
		if($opers and not $flag & 1) {
			print "$who...bereits gesetzt.\n";
			next;
		}
		print "Setze $who...".kkpersinfo($npers)."\n";

		log_update("domainkunde","id",$idi,undef,$who, undef,$opers);
		Do("update domainkunde set $who=$npers where id=$idi");
		$nch++;
	}

	foreach my $who('nserver') {
		# o: alt, in zu verändernder Domain
		# n: neu, in bekannter Domain
		my $ndat = DoFn("select $who from domainkunde where id = $domain");
		my $odat = DoFn("select $who from domainkunde where id = $idi");
		unless($ndat) {
			if($odat) {
				print "$who...bereits gesetzt ($odat in $domain).\n";
			} else {
				print "$who...nicht gesetzt.\n";
			}
			next;
		}
		next if $odat and $odat == $ndat;
		if($odat and not $flag & 1) {
			print "$who...bereits gesetzt.\n";
			next;
		}
		print "Setze $who...# $ndat\n";

		log_update("domainkunde","id",$idi,undef,$who, undef,$odat);
		Do("update domainkunde set $who=$ndat where id=$idi");
		$nch++;
	}

	if($nch) {
		my $kk = DoFn("select kunde from domainkunde where id=$idi");
		Do("update kunde set geaendert=UNIX_TIMESTAMP(NOW()) where id=$kk");
	}

	$nch;
}
1;
