=head1 rename_tarifklasse

Benennt einen Tarif komplett um.

=head2 Argumente

=over 4

=item $tari

ID eines Tarifs, der umbenannt werden soll.

=item $kn

Standard.

=back

=head2 Ergebnis

Nix.

=cut

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

sub rename_tarifklasse($;$) {
	my($tkid,$kn) = @_;

	my $name = line_in "Neuer Name: "; return undef if $name eq "";
	return problem "Name '$name' geht nicht" if $name eq "*" or $name eq "-";
	my $tnid = DoFn("select id from tarifname where name=${\qquote $name}");

	my($otnid,$kunde) = DoFn("select tarifname,kunde from tarifklasse where id=$tkid");
	my $oname = DoFn("select name from tarifname where id=$otnid");

	unless($kunde) { # Tarif komplett umbenennen
		return problem "Einen Tarif dieses Namens gibt es schon!" if $tnid;
		Do("update tarifname set name=${\qquote $name} where id=$otnid");
		return 0;
	}

	# nur den Spezialtarif für diesen Kunden umbenennen
	if($tnid) {
		return problem "Der Kunde hat bereits diesen Spezialtarif"
			if DoFn("select id from tarifklasse where tarifname=$tnid and kunde=$kunde");
	} else {
		$tnid = Do("insert into tarifname set name=${\qquote $name}");
	}
	Do("update tarifklasse set tarifname=$tnid where id=$tkid");

	Do("update person set tarifname=$tnid where tarifname=$otnid and kunde=$kunde");
	Do("update domainkunde set tarifname=$tnid where tarifname=$otnid and kunde=$kunde");
	Do("update tarifkunde set tarifname=$tnid where tarifname=$otnid and kunde=$kunde");

	$tnid;
}
1;
