#
# get_rechstep(): Liefere zu einem Dienst und Kunden die ID des
# dazugehörenden rechstep-Datensatzes.
# 
# Vorgehensweise:
# - Suche einen Datensatz 
# - wiederhole mit übergeordnetem Kunden (rekursiv)
# - wiederhole mit accteq-Referenz (rekursiv)
# 
# Um zu verhindern, dass ein Eintrag des übergeordneten Kunden gilt,
# setze das 'ignore'-Flag im Datensatz des Unterkunden.

use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoFn);
use Dbase::Globals qw(test_flag);

sub get_rechstep($;$) {
	my($dienst,$kd) = @_;

	dienst: while(1) {
		my $kunde = $kd;
		while(1) {
			my $ksel;
			if($kunde) {
				$ksel = "kunde=$kunde";
			} else {
				$ksel = "kunde is null";
			}
			my($id,$flags) = DoFn("select id,flags from rechstep where $ksel and dienst=$dienst");
			next unless defined $id;
			next dienst if test_flag("acctflag","ignore",$flags);
			return $id;
		} continue {
			last unless $kunde;
			$kunde = DoFn("select kunde from kunde where id=$kunde");
		}
	} continue {
		$dienst = DoFn("select berechne from tarifeq where dienst=$dienst");
		last unless $dienst;
	}
	return undef;
}

1;
