use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(Do DoFn quote);
use Fehler qw(problem);
use Loader qw(
  current_user
  edit_hardware
  edit_kunden
  line_in
  log_update
  set_hardware_hardware_id
  set_hardware_info
  set_hardware_ivnr
  set_hardware_lieferant
  set_hardware_name
  set_hardware_seriennr
  set_hardware_standort
  set_hardware_eigentuemer
  valid_kunde );

sub add_kunde_hardware($;$$) {
	my ( $kunde, $kn, $template ) = @_;

	defined( $kunde = edit_kunden( 1, '' ) ) or return unless $kunde;
	return unless valid_kunde($kunde);

	my( $_name, $_standort, $_lieferant, $_eigentuemer ) =
	  DoFn("SELECT name, standort, lieferant, eigentuemer FROM hardware WHERE id = $template")
	  if defined $template;

	defined( my $name = set_hardware_name undef, $kn, $_name ) or return;
	defined( my $hardware_id = set_hardware_hardware_id undef, $kn ) or return;
	defined( my $ivnr = set_hardware_ivnr undef, $kn ) or return;
	my $seriennr = set_hardware_seriennr undef, $kn;
	defined(
		my $standort = set_hardware_standort(
			undef, $kn, $kunde, $_standort || current_user()
		)
	) or return;
	my $lieferant = set_hardware_lieferant undef, $kn, $_lieferant;
	$lieferant = 'NULL' unless defined $lieferant;
	defined( my $eigentuemer = set_hardware_eigentuemer undef, $kn, $kunde, $_eigentuemer )
	  or return;
	my $id = Do <<_;
		INSERT INTO hardware
		SET	kunde      =$kunde,
			name       =$name,
			hardware_id=$hardware_id,
			ivnr       =$ivnr,
			seriennr   =$seriennr,
			standort   =$standort,
			lieferant  =$lieferant,
			eigentuemer=$eigentuemer,
			beginn     =UNIX_TIMESTAMP(NOW())
_
	log_update hardware => id => $id, undef, '*';
	log_update kunde => id => $kunde, undef, 'hardware','*', undef, $id;
	Do "UPDATE kunde SET geaendert = UNIX_TIMESTAMP(NOW()) WHERE id = $kunde";
	edit_hardware $id, $kn, $kunde;
}

1;
