# 1: nur die mit Klasse >0
# 2: nur aktuelle general-Einträge
# 4: nur aktuelle Einträge
# 8: nur nicht-obsolete Tarife

use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_printer edit_kunden );
use Dbase::Globals qw(get_kunde find_dienst);
use Dbase::Help qw(DoFn DoSelect isotime qquote);

sub list_tarifnamen(;$$$) {
	my($kn,$flag,$selkunde) = @_;
	$flag=0 unless defined $flag;

	my(%dienst,%ziel);
	my($kla1,$kla2) = ("","");
	if($flag & 2) { # nur general-Tarife
		my $dg = find_dienst "general";
		$kla2.=" and tarifklasse.id in (select klasse from tarif where dienst = $dg)" if defined $dg;
	} else {
		$kla2 = "";
	}
	if($flag & (1|8)) {
		$kla2.= " and tarifklasse.klassen != 0" if $flag&1;
		$kla2.= " and tarifklasse.obsolet = 'n'" if $flag&8;
	}

	if(not defined $selkunde or $selkunde eq "-") {
		$kla2.= " and tarifklasse.kunde is null";
	} elsif ($selkunde eq "*") {
		$kla2.= " and tarifklasse.kunde is not null";
	} else {
		if ($selkunde eq "") {
			$selkunde = edit_kunden(1|4,"Kunde:");
		} else {
			$selkunde = get_kunde($selkunde);
		}
		return unless defined $selkunde;

		if($selkunde eq "-") {
			$kla2.=" and tarifklasse.kunde is NULL";
		} else {
			$kla2.=" and tarifklasse.kunde = $selkunde";
		}
	}

	line_printer;
	my $hdr;

	my $res = DoSelect {
		my($id,$name,$nsub) = @_;
		print $Db::pr_fh <<_ unless $hdr++;
ID   #s Name
_
		goto out unless 
		printf $Db::pr_fh "%4d %2d %s\n",$id,$name,$nsub-1;
	} <<_ or print "(leer)\n";
	select tarifname.id, tarifname.name, count(tk.id)
	  from tarifname,tarifklasse,tarifklasse as tk  $kla1
	 where tarifname.id=tarifklasse.tarifname
	   and tk.tarifname=tarifname.id
	   and tarifklasse.id=tarif.klasse
	       $kla2
	 group by tarifname.name
	 order by tarifname.name
_
out:
	$res;
}
1;
