# dupliziert einen Tarif komplett

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

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

	my $newname = line_in "Neuer Name: ";
	return undef unless $newname;
    my($ntname) = DoFn("select id from tarifname where name=${\qquote $newname}") ||Do("insert into tarifname set name=${\qquote $newname}");
	print "Tarifname $otname => $ntname\n";

	my $ksel;

	if($kunde) {
		$ksel="kunde=$kunde"
	} else {
		$ksel="kunde is NULL";
		$kunde=undef;
	}

	my $otkl;
	$otkl = DoFn("select id from tarifklasse where tarifname=$otname and kunde=$kunde") if $kunde;
	$otkl = DoFn("select id from tarifklasse where tarifname=$otname and kunde is null") unless $otkl;

	my $ntkl = DoFn("select id from tarifklasse where tarifname=$ntname and $ksel") || DoCopy("tarifklasse", "id=$otkl", tarifname => $ntname, id => undef, kunde => $kunde);
	print "Tarifklasse $otkl => $ntkl\n";

	return problem "Diesen Tarif gibt es hier schon"
		if DoFn("select count(*) from tarif where klasse=$ntkl");

	my $res = DoCopy("tarif","klasse=$otkl", klasse=>$ntkl, id=>undef);
	print "$res Tarif@{[($res==1)?\"\":\"e\"]} umkopiert.\n";
}
1;
