use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Globals qw(name_dienst timerange name_kunde);
use Dbase::Help qw(DoSelect in_list);
use Loader qw(line_printer);
use noris::Table;

sub list_kstarife($;$$$) {
	my($id,$kn,$all,$flags) = @_;
	$flags = 0 unless defined $flags;
	line_printer;

	my (@where, $mehrere_kunden);
	if ( ref $id ) {
		push @where, in_list( "tarifklasse.kunde" => '', @$id ); 
		$mehrere_kunden = 1;
	} 
	else {
		push @where, "tarifklasse.kunde = $id";
	}

	if($all) {
		$all = "";
	} else {
		$all = "and (ende is NULL or ende > UNIX_TIMESTAMP(NOW()))";
	}

	my $t = noris::Table->new()->titel(qw(ID Kunde Dienst Name seit));
	$t->skip(2) unless $mehrere_kunden;

	my $hdr;
	my $res = DoSelect {
		my($tn,$tkid,$kid) = @_;
		my ($ldienst,$lbeg);
		DoSelect {
			my($id,$beginn,$dienst) = @_;
			return if defined $ldienst and $ldienst == $dienst;
			$ldienst = $dienst;
			$id = "t$id";
			$t->daten( $id, name_kunde($kid), name_dienst($dienst), $tn, timerange( $beginn, undef, 1 ) );
		} <<_;
			select id, beginn, dienst
			  from tarif
			 where klasse = $tkid
			 order by dienst,beginn desc
_
	} <<_;
		select tarifname.name, tarifklasse.id, tarifklasse.kunde
		  from tarifname,tarifklasse
		 where ${\ join ' AND ', @where }
		   and tarifklasse.tarifname = tarifname.id
		 order by tarifname.name
_

	print $Db::pr_fh "*** kundenspezifische Tarife:\n";
	(!$res)?print "(leer)\n":$t->drucken();

out:
	$res;
}

1;
