use utf8;
use warnings; no warnings "redefine";
use strict;

use Cf qw($WDESCR $DEFAULT_ZIEL);
use Dbase::Globals qw(find_descr add_acct);
use Dbase::Help qw(Do DoFn DoTime);
use Loader qw(line_in log_update select_descr);

sub set_ktarif_berechne($$;$$) {
	my($id,$tari,$acctyp,$kn) = @_;

	my ($dien,$key,$quelle);
	my($tm);

	# my $auf = line_in "Aufwand (0..9, Default 1): ";
	# $auf = "1" if $auf eq "";
	# return undef if $auf !~ /^\d+$/;
	my $auf=1; # Aufwand ist eh immer 1

	if(defined $acctyp) {
		$tm = DoTime;
	} else {
		$tm = DoFn("select beginn from tarifkunde where id=$tari");
		$tm = DoFn("select notiz from tarifkunde where id=$tari") if $tm == 0;
		(print "Keine Zeit bekannt\n"),return undef if $tm == 0;
	}

	my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($tm);
	$year += 1900 if $year < 1900;
	$year = $year * 100 + $mon + 1;

	$quelle = 0+find_descr("quelle",$WDESCR);
	$dien = 0+DoFn("select dienst from tarifkunde where id=$tari");
	$key = $DEFAULT_ZIEL;

	my $akid=0;
	my $name;
	if(defined $acctyp) {
		$akid = select_descr($acctyp,0,"","Accounting-Art","!hide");
		return undef unless defined $akid;

		$name = DoFn("select infotext from tarifkunde where id=$tari");
		unless(defined $name) {
			while(1) {
				my $name1 = line_in(($name eq "") ? "Infotext: " : "        : ");
				last if $name1 =~ /^\s*$/; last if $name1 eq "-";
				$name .= "|" if $name ne "";
				$name .= $name1;
			}
		}
	}

	my($hash,$seq) = add_acct ($id,$dien,ord($key),$year,$mday,$quelle,$auf,1,$name, 2);
	log_update("tarifkunde","id",$tari,undef,"Einrichtung berechnen");
	Do("update tarifkunde set rechnung=$auf where id=$tari");
	Do("insert into acctassoc set tarifkunde=$tari, `hash`=$hash, seq=$seq, acctinfo=$akid");

	Do("update kunde set geaendert=UNIX_TIMESTAMP(NOW()) where id=$id");
}

1;
