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

sub set_hardware_eigentuemer($;$$$) {
	my ( $idi, $kn, $kunde, $template ) = @_;
	my $old;
	if ( defined $idi ) {
		if ( defined $kunde ) {
			$old = DoFn "SELECT eigentuemer FROM hardware WHERE id = $idi";
		}
		else {
			( $kunde, $old ) =
			  DoFn "SELECT kunde, eigentuemer FROM hardware WHERE id = $idi";
		}
	}
	defined(
		my $new = edit_personen $kunde,
		1 + 128,
		$kn, undef, '(Eigentümer auswählen!)', $template
	  )
	  or return undef;
	warnung <<_ if $new == $kunde && DoFn("SELECT kunde FROM person WHERE id=$new") != $kunde;
Wahrscheinlich ist das, was Du da grade als Eigentümer angegeben hast,
falsch. Bitte beachte, dass das Eigentümer-Feld eine Referenz auf ein
Personen- und nicht auf ein Kunden-Objekt darstellt. Vgl. auch RT#218991.
_
	return $new unless defined $idi;
	return if defined $old ? defined $new && $old == $new : !defined $new;
	log_update hardware => id => $idi, undef, 'eigentuemer','eigentuemer',
		undef,$old,kkpersinfo($old,2);
	Do "UPDATE hardware SET eigentuemer=$new WHERE id=$idi";
	Do "UPDATE kunde SET geaendert=UNIX_TIMESTAMP(NOW()) WHERE id=$kunde";
}

1;
