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

# Flags:
## 1: Datum setzen
## 2: Kunde setzen

sub copy_tarif($;$$) {
	my($tari,$kn,$flag) = @_;
	$flag=0 unless defined $flag;
	my($ksel,$tkid);

	my($obeginn,$otkid,$okunde,$tnid,$dien,$min,$umin) = DoFn("select tarif.beginn,tarifklasse.id,tarifklasse.kunde,tarifklasse.tarifname, tarif.dienst,tarif.mini,tarif.unitmini from tarif,tarifklasse where tarif.id=$tari and tarifklasse.id=tarif.klasse")
		or return problem "Tarif #$tari nicht gefunden.\n";

	my($beginn,$kunde);
	if($flag & 1) {
		$beginn = select_date(1|4|256,"ab Zeitpunkt",undef,"-","dieser Monat");
		return undef unless defined $beginn;
		$beginn = select_date(1|4|2048) if $beginn eq "-";
	} else {
		$beginn = $obeginn;
	}
	if($flag & 2) {
		$kunde = edit_kunden(1|4,"Kunde:");
		return unless defined $kunde;
	} else {
		$kunde = $okunde || "-";
	}
	if ($kunde eq "-" or $kunde==0) {
		$kunde = "NULL";
		$ksel="kunde is null"
	} else {
		$ksel="kunde = $kunde"
	}
	if($flag & 2) {
		$tkid = DoFn("select id from tarifklasse where tarifname=$tnid and $ksel") || 
		        DoCopy("tarifklasse","id=$otkid",id=>undef,kunde=>$kunde);
	} else {
		$tkid = $otkid;
	}

	return problem "Einen Tarif mit diesem Namen+Dienst+Kunden gibt es schon."
		if DoFn "select count(*) from tarif where beginn=$beginn and klasse=$tkid and dienst=$dien and mini=$min and unitmini=$umin";
	
	Do("update tarif set beginn=$beginn,klasse=$tkid where id = $tari");
	my $ntari = DoCopy("tarif","id=$tari", id=>undef, klasse=>$otkid, beginn=>$obeginn);

	print "Tarif umkopiert (alt: #$ntari)\n";
}
1;
