use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in log_update edit_rechstep
	set_rechstep_step set_rechstep_dienst);
use Fehler qw(problem);
use Dbase::Help qw(Do DoFn qquote);
use Dbase::Globals qw(content name_dienst);

sub add_rechstep(;$$$) {
	my($kn,$kid,$dien) = @_;
	my $ksel;
	if($kid) {
		$ksel = "kunde=$kid";
	} else {
		$ksel = "kunde is null";
		$kid=0;
	}

	content ( my $step = set_rechstep_step(undef) ) or return;
	unless($dien) {
		content ( $dien = set_rechstep_dienst(undef) ) or return;
	}
	content ( my $bunit = line_in "Einheit (Bytes): " ) or return;
	content ( my $punit = line_in "Einheit (Pakete): " ) or return;

	$bunit = "" if $bunit eq "-";
	$punit = "" if $punit eq "-";

#	if(DoFn("select id from rechstep where step=$step and $ksel")) {
#		print "Einen Schritt $step gibt es hier bereits.\n";
#		return undef;
#	}
	if(DoFn("select id from rechstep where dienst=$dien and $ksel")) {
		return problem "Einen Schritt mit Dienst '${\name_dienst $dien}' gibt es hier bereits.";
	}

	my $id = Do("insert into rechstep set dienst=$dien, step=$step, kunde=".($kid || "NULL"));
	log_update("rechstep","id",$id,undef,"*");
	Do("insert into recheinheit set rechstep=$id, typ='b', name=${\qquote $bunit}, info=${\qquote $bunit}, start=0, faktor=1000");
	Do("insert into recheinheit set rechstep=$id, typ='p', name=${\qquote $punit}, info=${\qquote $punit}, start=0, faktor=1000");

	log_update("kunde","id",$kid,undef,"rechstep","*",undef,$id) if $kid;
	edit_rechstep($id,$kn);
}
1;
