use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in log_update edit_tarifklasse select_descr
	set_tarifklasse_laufzeit
	set_tarifklasse_verlaengern
	set_tarifklasse_kuendigung
	);
use Dbase::Help qw(Do DoFn qquote);
use Dbase::Globals qw(def_or_minus);
use Fehler qw(problem fehler ffehler);

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

	my $nam = line_in "Name: "; return undef if $nam eq "";
	my $kid=$kunde;
	my $ksel;

	my($tnid) = DoFn("select id from tarifname where name=${\qquote $nam}");
	$tnid = Do("insert into tarifname set name=${\qquote $nam}") unless $tnid;

	my $tkid;
	if($kunde) {
		return problem "Den gibt es für diesen Kunden schon!",$nam
			if DoFn("select count(*) from tarifklasse where kunde=$kunde and tarifname=$tnid");
#		return problem "Dazu gibt es noch keine allgemeinen Tarife"
#			unless DoFn("select count(*) from tarifklasse where kunde is null and tarifname=$tnid");
		$tkid=Do("insert into tarifklasse set tarifname=$tnid, kunde=$kunde");
	} else {
		return problem "Den gibt es schon!",$nam
			if DoFn("select count(*) from tarifklasse where kunde is null and tarifname=$tnid");
		$tkid=Do("insert into tarifklasse set tarifname=$tnid, kunde=NULL");

		my $doit = 0;
		ffehler {
			return undef unless defined set_tarifklasse_laufzeit($tkid);
			return undef unless defined set_tarifklasse_verlaengern($tkid);
			return undef unless defined set_tarifklasse_kuendigung($tkid);
			$doit = 1;
		} sub {
			Do("delete from tarifklasse where id=$tkid");
			fehler();
		};
		unless($doit) {
			Do("delete from tarifklasse where id=$tkid");
			return undef;
		}
	}
	log_update("tarifklasse","id",$tkid,undef,"name","kunde","*",undef,$nam,def_or_minus($kunde));
	return edit_tarifklasse($tkid,2,$kn,$kid);
}
1;
