# baut einen Rechnungskopf

use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoFn isodate);
use Dbase::Globals qw(name_kunde svdaterange);
use Loader qw($base person_record);

BEGIN {
	do "$base/acct/text_vars";
}

# Flag 1: Gutschrift
# Flag 2: Unterkunde

sub acct_text_kopf($;$$$$$$) {
	my($rech,$knr,$rdate,$kauftrag,$xbe,$xen,$flags) = @_;
	$flags=0 unless defined $flags;

	$knr = DoFn("select kunde from rechnungen where rnr=$rech")
		unless defined $knr;
	$rdate = DoFn("select datum from rechnungen where rnr=$rech")
		unless defined $rdate;
	$xbe=$rdate unless defined $xbe;
	$xen=$xbe unless defined $xen;

	my $adr = person_record $knr, 'billc';
	$adr =~ s/^Frau /Frau\n/ or $adr =~ s/^Herr /Herrn\n/;
	{       
		my $width = 30;
		my $text = '';
		my $length = 0;
		while () {
			if ( $adr =~ /\G[ \t]*(\n+)/cg ) {
				$text .= $1;
				$length = 0;
			} elsif ( $adr =~ /\G(.{1,5})(?=\n)/cg ) {
				$length += length $1;
				$text .= $1;
			} else {
				$adr =~ /\G(\s*(?:[^-\s]+-*|\S+))/g or last;
				my $word = $1;
				{       
					if ( $length + length $word <= $width || !$length ) {
						$length += length $word;
						$text .= $word;
					} else {
						$text .= "\n";
						$length = 0;
						$word =~ s/^\s+//;
						redo;
					}
				}
			}
		}
		$text .= "\n" if $length;
		$adr = $text;
	}

	$adr =~ s/\n([^\n]*)\n$/\n\n$1\n/s;
	my $dat = isodate($rdate);
	$dat =~ s/(\d+)-(\d+)-(\d+)\s+.*/$3.$2.$1/;
	$adr .= "\n"x(8 - @{[ split(/\n/,$adr) ]} );
	$adr =~ s/(\S)/$1\b$1/g;
	my $atxt = "";
	my $aspc="";
	my $kname = name_kunde($knr);
	if(defined $kauftrag and $kauftrag ne "") {
		$atxt="Auftrag";
		if(length($atxt) < length($kauftrag)) {
			$atxt .= " "x(length($kauftrag)-length($atxt));
		} else {
			$kauftrag .= " "x(length($atxt)-length($kauftrag));
		}
	} else { $kauftrag=""; }
	if(length($kname) < 15) {
		$kname .= " "x(15-length($kname));
	} else {
		$aspc .= " "x(length($kname)-15);
	}
	return sprintf <<END, $adr,$dat,($flags&2) ? ($flags&1) ? "Anlage zur Gutschrift" : "Anlage zur Rechnung" : ($flags&1) ? "G U T S C H R I F T" : "R E C H N U N G",$aspc,$atxt,$knr,$kname,$rech,$kauftrag,svdaterange($xbe,$xen);
\005
\005
\005
\005
\005
\005
\005
\005
\005
\005
%s
\005
\005
                                                         Nürnberg, %s
%s


Kundennummer   %s       Rechnungsnr.   %s Zeitraum
%05d/%s %-14s %s %s

--------------------------$zzspc---
 Anzahl Art   Bezeichnung  $xspc    E-Preis  Rabatt    Betrag
$zzspc-----------------------------
END
}
1;
