use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Globals qw(bignum find_descr);
use Dbase::Help qw(DoFn isodate);
use Cf qw($ZAHLUNGSZIEL);

my $flag_keine_ust = bignum(1) << find_descr kunde => 'keine_ust', 1;
my $flag_nicht_eu  = bignum(1) << find_descr kunde => 'nicht_eu',  1;
my $flag_eigene_re = bignum(1) << find_descr kunde => 'eigene_re', 1;

sub acct_text_zahlung($$$) {
	my($knr,$rdate,$betrag) = @_;
	my $res;

	my($okunde,$zziel,$flags) = DoFn("select kunde,zahlung,flags from kunde where id = $knr");
	$zziel=$ZAHLUNGSZIEL unless defined $zziel;

	if($okunde and not ($flags & $flag_eigene_re)) {
		$res = <<END;
Dies ist eine Aufstellung für einen Teil Ihrer Dienstnutzung,
der Ihnen (wie vereinbart) gesondert berechnet wird.
END
	} elsif($betrag < 0) {
		my $ende = DoFn("select ende from kunde where id=$knr");
		if($ende) {
			$res = <<END;
Wir werden Ihnen den Betrag in den nächsten Tagen zukommen lassen.
END
		} elsif(DoFn("select count(*) from konten where kunde = $knr")) {
			$res = <<END;
Wir werden den Betrag mit Ihrer nächsten Rechnung verrechnen.
END
		} else {
			$res = <<END;
Wir bitten Sie, den Betrag von Ihrer nächsten Rechnung abzuziehen.
END
		}
	} elsif(DoFn("select count(*) from konten where kunde = $knr")) {
		$res = <<END;
Der Betrag wird in den nächsten Tagen von Ihrem Konto abgebucht.
END
	} else {
		$res = sprintf <<END, $zziel, scalar isodate($rdate+$zziel*24*3600);
Bitte überweisen Sie den Rechnungsbetrag innerhalb von %d Tagen
(bis zum %s) auf eines unserer Konten.
END
	}

	$res .= <<_;

Lieferdatum und Rechnungsdatum stimmen überein.
_

	$res .= ($flags & $flag_nicht_eu) ? <<_ : <<_ if $flags & $flag_keine_ust;

Der Umsatz ist gemäß § 4 Nr. 1a UStG in Verbindung mit § 6 Abs. 1 UStG
steuerbefreit.
_

Diese Lieferung erfolgt innerhalb des innergemeinschaftlichen Gebietes ge-
mäß A13a Abs. 1 UStR. Sie ist demnach gemäß § 4 Nr. 1 Buchstabe b UStG in
Verbindung mit § 6a Abs. 1 Satz 1 Nr. 1 UStG von der Umsatzsteuer befreit.
_

	$res;
}

1;
