use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoFn);
use Dbase::Globals qw(content);
use Fehler qw(problem report_fehler);
use Loader qw( delete_wartungsvertrag_zuordnung edit_person
  line_in list_wartungsvertrag_zuordnung
  set_wartungsvertrag_zuordnung_datum strip_kn
  warn_arbeit warn_kunde );

sub edit_wartungsvertrag_zuordnung($$;$$) {
	my ( $typ, $idi, $kn, $kunde ) = @_;
	return problem "\u$typ-Wartungsvertrag #$idi nicht gefunden."
	  unless DoFn "SELECT 1 FROM wartungsvertrag_$typ WHERE id = $idi";
	$kn = strip_kn($kn) . "\u$typ-Wartungsvertrag_$idi";
	warn_arbeit "wartungsvertrag_$typ" => $idi, '*', $kunde;
	warn_kunde "wartungsvertrag_$typ" => $idi, $kunde if defined $kunde;
	while ( content( my $act = line_in "$kn >", 4 ) ) {
		if ( $act eq '?' ) {
			print <<'_';
l   anzeigen
b   Laufzeit-Beginn neu festlegen
e   Laufzeit-Ende   neu festlegen
del Objekt komplett aus Datenbank löschen (wegen Fehleingabe)
a   zum Ansprechpartner-Personenobjekt
_
			next;
		}
		if ( $act eq 'a' ) {
			if ( my $person = DoFn <<_ ) {
	SELECT wartungsvertrag.ansprechpartner
	FROM   wartungsvertrag, wartungsvertrag_$typ
	WHERE  wartungsvertrag_$typ.id              = $idi
	   AND wartungsvertrag_$typ.wartungsvertrag = wartungsvertrag.id
_
				edit_person $person, undef, $kn;
			} else {
				problem 'Es ist kein Ansprechpartner eingetragen.';
			}
			next;
		}
		if ( $act eq 'l' ) { list_wartungsvertrag_zuordnung $typ, $idi, $kn; next; }
		if ( $act eq 'b' ) { set_wartungsvertrag_zuordnung_datum $typ, $idi, 'beginn', $kn; next; }
		if ( $act eq 'e' ) { set_wartungsvertrag_zuordnung_datum $typ, $idi, 'ende', $kn; next; }
		if ( $act eq 'del' ) { delete_wartungsvertrag_zuordnung $typ, $idi, $kn; return; }
		print "Aktion '$act' unbekannt.\n";
		next;
		fehler: report_fehler(4);
	}
	$idi;
}

1;
