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

sub set_hardware_verantwortlich($;$$$) {
	my ( $idi, $kn, $kunde, $template ) = @_;
	my $old;
	if ( defined $idi ) {
		if ( defined $kunde ) {
			$old = DoFn("SELECT verantwortlich FROM hardware WHERE id = $idi");
		}
		else {
			( $kunde, $old ) =
			  DoFn(
				"SELECT kunde, verantwortlich FROM hardware WHERE id = $idi");
		}
	}
	defined(
		my $new = edit_personen(
			$kunde, 1 | 4 | 128,
			$kn, undef, '(Verantwortlichen auswählen!)', $template
		)
	  )
	  or return undef;
	$new = undef if $new eq '-';
	return $new unless defined $idi;
	return if defined $old ? defined $new && $old == $new : !defined $new;
	log_update(
		hardware =>
		  id     => $idi,
		undef,
		defined $old
		? (
			verantwortlich   =>
			  verantwortlich => undef,
			$old, kkpersinfo( $old, 2 )
		  )
		: ( verantwortlich => undef, '-' )
	);
	$new = 'NULL' unless defined $new;
	Do("UPDATE hardware SET verantwortlich=$new WHERE id=$idi");
}

1;
