use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(Do qquote DoFn);
use Dbase::Globals qw(content);
use Fehler qw(problem);
use Loader qw(line_in log_update);

sub set_hardware_ivnr($;$) {
	my ( $idi, $kn ) = @_;
	content( my $ivnr =
		  line_in 'InventarNr.' . ( !defined $idi && ' (optional)' ) . ': ' )
	  or return defined $idi ? () : 'NULL';
	if ( $ivnr eq '-' ) {
		$ivnr = 'NULL';
	}
	elsif ( $ivnr !~ /^(?:9?\d{7}|5555\d{4})\z/ ) {
		return problem("Das ist keine gültige Inventarnummer, vgl. RT#387504.");
	} else {
		$ivnr = qquote $ivnr;
		if ( my($id,$name) = DoFn "SELECT id, name FROM hardware WHERE ivnr = $ivnr" ) {
			return problem qq(Diese Inventarnummer ist bereits bei Hardware #$id ("$name") vergeben.);
		}
	}
	return $ivnr unless defined $idi;
	log_update hardware => id => $idi, undef, 'ivnr', undef,
		DoFn("select ivnr from hardware WHERE id=$idi");
	Do "UPDATE hardware SET ivnr=$ivnr WHERE id=$idi";
}

1;
