use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(DoSelect isotime DoFn);
use Dbase::Globals qw(flag_names name_kunde find_descr bignum content);
use Fehler qw(problem);
use Loader qw(line_printer list_buchungen);

# Flag:
#  8 auch Buchungssätze ausgeben

sub list_arechnung($;$$) {
	my($id,$flag,$kn) = @_;
	$flag=0 unless defined $flag;
	line_printer;

	DoSelect {
	    my($timestamp,$betrag,$inhalt,$datum,$storno,$kunde,$steuer,$buchung,$auszug,$rbetrag,$len,$flags,$konto,$flen) = @_;
		my $bs = DoFn("select count(*) from buchung where rnr = $id");

	    print $Db::pr_fh "ID       : $id\n";
		print $Db::pr_fh "Timestamp: ".isotime($timestamp)."\n";
	    print $Db::pr_fh "Kunde    : #$kunde ".name_kunde($kunde)."\n";
	    print $Db::pr_fh "Inhalt   : $inhalt\n" if content $inhalt;
	    print $Db::pr_fh "Datum    : ".isotime($datum)."\n" if $datum;
	    print $Db::pr_fh "Storniert: ".isotime($storno)."\n" if $storno;
	    print $Db::pr_fh "Flags    : ".flag_names($flags,"rstatus")."\n";

		my $ig="";
		$ig=" (ignoriert)" if $flags&(bignum(1)<<find_descr("rstatus","manuell"));
	    print $Db::pr_fh "Text     : $len Bytes$ig\n" if $len;
	    print $Db::pr_fh "Fußtext  : $flen Bytes\n" if $flen;
	    printf$Db::pr_fh "Betrag   : %.2f+%.2f\n",$betrag/100,$steuer/100;
	    print $Db::pr_fh "Konto    : $konto\n" if defined $konto;
	    print $Db::pr_fh "Buchung  : $buchung\n" if $buchung;
	    print $Db::pr_fh "Auszug   : $auszug\n" if $auszug;
	    printf$Db::pr_fh "BetrBez  : %.2f\n",$rbetrag/100 if $rbetrag;
		if($flag&8 and $bs) {
			list_buchungen($id,$kn);
		} else {
			print $Db::pr_fh "Daten    : ",($bs==1)?"1 Datensatz\n":($bs?"$bs":"keine")." Datensätze\n";
		}
	} "select timestamp,betrag,infotext,datum,storniert,kunde,steuer,buchung,auszug,rbetrag,length(rtext),flags,konto,length(fusstext) from rechnungen where rnr = $id"
		or problem "Rechnung '$id' unbekannt";
}
1;
