use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in log_update);
use Dbase::Help qw(Do DoFn DoSelect DoSeq);
use Dbase::Globals qw(aufzaehlung kpersinfo name_kunde);
use Fehler qw(warnung);

sub set_person_userid($;$) {
	my($pers,$kn) = @_;
	my($ouid) = DoFn("select uid from person where id=$pers");

	my $user = line_in "UserID      : ";
	return undef if $user =~ /^\s+$/;
	if($user eq "?") {
		$user = DoSeq("uid");
		print "UserID      : $user\n" if $user;
	}
	if($user eq "-") {
		log_update("person","id",$pers,undef,"uid","-",undef,$ouid);
		Do("update person set uid=NULL where id=$pers");
		0;
	} elsif($user =~ /^\d+$/) {
		{
			my @other;
			DoSelect {
				my ( $person, $kunde ) = @_;
				push @other, "#$person:" . kpersinfo($person). " (Kunde #$kunde:" . name_kunde($kunde) . ')';
			} "SELECT id, kunde FROM person WHERE uid = $user";
			warnung 'Diese User-ID ha' . ( @other == 1 ? 't' : 'ben' ) . ' auch schon ' . aufzaehlung(@other) . '.'
			  if @other;
		}
		if($ouid) {
			log_update("person","id",$pers,undef,"uid",undef,$ouid);
		} else {
			log_update("person","id",$pers,undef,"uid","*");
		}
		Do("update person set uid=$user where id=$pers");
		$user;
	} else {
		print "UserIDs sind numerisch..!\n";
		undef;
	}
}

1;
