* Default XBS-CODE

#main
* grosses Kontonblatt Standard fuer Sachkonten
* Details einzeln ausgewiesen
*--------------------------------------------------
* Variablen:
* Zeile     aktuelle Zeilenummer
* ZlStart1  Zeilenvorschuebe nach Kopf auf Seite 1
* ZlStart2  Zeilenvorschuebe nach Kopf ab  Seite 2
* cyKD      Zeilenvorschuebe nach dem Dateikopf
* ZlMax     Zeile ab der der Fussbereich beginnt
* Seite     Seitennummer beginnend mit 1
* RandX     linker Rand in cm
* RandY     oberer Rand in cm
* SizeX     Druckbreite ab Rand links
*--------------------------------------------------
VAR Zeile(s,2,0)
VAR ZlMax(s,2,0)
VAR Seite(s,2,0)
VAR RandX(d,8,2)
VAR RandY(d,8,2)
VAR SizeX(d,8,2)
VAR Heute(D,10,0)
VAR cyZeile(d,8,6)
VAR SaveX(d,8,2)

ZlMax=     82
RandX=      1,80
RandY=      0,80
SizeX=      18,0
Seite=      1
Zeile=      0
cyZeile= 2,54/8
SaveX=$[RandX]

Heute=H

IFNOT ISVAR(FltMon)
  VAR FltMon(s,2,0)
IFNOT ISVAR(FltJahr)
  VAR FltJahr(s,2,0)
IFNOT ISVAR(VonKto)
  VAR VonKto(u,8,0)
IFNOT ISVAR(BisKto)
  VAR BisKto(u,8,0)
IFNOT ISVAR(FltTyp)
  VAR FltTyp(u,1,0)
IF EMPTY(FltTyp)
  FltTyp=S

REC recOPT(OPTIONEN,0,5) 7008
REC recMW(WÄHRUNGEN,1,3)$[recOPT.OPTDATAC<3]
REC recFSAD(EIGENE_ANSCHRIFTEN,0,2)01
REC recKTO(KONTENPLAN,0,1)$[FltTyp<1]

IFNOT EMPTY(VonKto)
   SEEK recKTO($[VonKto<8])

OUT INITPAGESIZE
OUT STARTJOB Kontenblatt
OUT TRANSPARENT
LOOP recKTO(#loopMAIN)
OUT ENDJOB

RETURN
#end


#loopMAIN
* Wird fuer jeden Satz von recMAIN aufgerufen

IF EMPTY(BisKto)
   GOTO :DoIt
IFNOT CMP(BisKto,<)$[recKTO.KONTO]
   GOTO :DoIt
BREAK recKTO
RETURN

:DoIt
*-------------------------------------------------
VAR mFltD(u,15,0)
VAR mFltL(s,2,0)
VAR cSH(C,12,0)
VAR cSS(C,12,0)
VAR cST(C,30,0)
VAR negSALDO(d,8,2)
VAR posSALDO(d,8,2)
VAR bRight(L,1,0)
bRight=0

mFltD=$[recKTO.TYP<1]$[recKTO.KONTO<8]
mFltL=9
IF BOOL(0 = $[FltJahr])
   GOTO :DoLoop
mFltD=$[recKTO.TYP<1]$[recKTO.KONTO<8]$[FltJahr>4]
mFltL=13
IF BOOL(0 = $[FltMon])
   GOTO :DoLoop
IF BOOL(10 > $[FltMon])
  mFltD=$[recKTO.TYP<1]$[recKTO.KONTO<8]$[FltJahr>4]0$[FltMon>1]
ELSE
  mFltD=$[recKTO.TYP<1]$[recKTO.KONTO<8]$[FltJahr>4]$[FltMon>2]
mFltL=15

:DoLoop
*-------------------------------------------------
REC recTRN(BUCHUNGSZEILEN,0,$[mFltL])$[mFltD<15]
IF EOF(recTRN)
   RETURN

Zeile=0
Seite=1
RandX=$[SaveX]


OUT STARTPAGE
OUT ##KopfSeite
OUT ##KopfDetail
cST=alter Saldo
cSS=
cSH=
negSALDO=$[recTRN.SALDOALT]
IF BOOL($[recTRN.SALDOALT]>0)
   cSH=$[recTRN.SALDOALT]
ELSE
   cSS=$[negSALDO]
OUT ##Saldo

LOOP recTRN(#loopTRN)

*Zeile=$[ZlMax]
cST=neuer Saldo
cSS=
cSH=
negSALDO=0 - $[posSaldo]
IF BOOL($[posSaldo]>0)
   cSH=$[posSaldo]
ELSE
   cSS=$[negSALDO]
OUT ##Saldo

OUT ENDPAGE
#end



#Fuss
Zeile=$[ZlMax]
OUT ##FussSeite
OUT ENDPAGE
* naechste Seite anfangen
Seite=$[Seite]+1
Zeile=0
OUT STARTPAGE
#end


#Kopf
OUT ##KopfSeite
OUT ##KopfDetail
OUT ##Uebertrag
#end



##KopfSeite
* Seitenkopf erscheint ab 2. Seite
CY=3
L= 0;0;85;1;Times New Roman,10,F;$[recFSAD.NAME1] $[recFSAD.NAME2], $[recFSAD.STRASSE], $[recFSAD.PLZORT]
R=85;0;15;1;Arial,10,N;$[Heute]
L= 0;1;85;2;Times New Roman,12,F;Kontenblatt $[recKTO.KONTO] $[recKTO.NAME] ($[FltMon]/$[FltJahr])
R=85;1,5;15;1;Arial,10,N;-$[Seite]-
#end

##KopfDetail
CY=2
L=0;0; 49;1; ;\-
L= 0;1; 8;1;Times New Roman,10,F;Datum
R= 8;1; 8;1;Times New Roman,10,F;Betrag
L=17;1; 4;1;Times New Roman,10,F;Währ.
L=25;1; 8;1;Times New Roman,10,F;Konto
R=33;1; 8;1;Times New Roman,10,F;Soll
R=41;1; 8;1;Times New Roman,10,F;Haben
#end



##Saldo
CY=3
L= 0;0;49;1; ;\-
L= 0;1;33;1;Arial, 8,F;$[cST] ($[recMW.KUERZEL])
R=33;1; 8;1;Arial, 8,F,10,F;$[cSS]
R=41;1; 8;1;Arial, 8,F,10,F;$[cSH]
L= 0;2; 49;1; ;\-
#end
##out_TRHDR
* TODO: beschreiben Sie hier die Verwendung
CY=1

L= 0;0; 8;1;Arial,8,N;$[recTRN.TAG].$[recTRN.MONAT].$[recTRN.JAHR]
R= 8;0; 8;1;Arial,8,N;$[recTRN.BTRORG]
L=17;0; 4;1;Arial,8,N;$[recTRN.BTRWAE]
R=33;0; 8;1;Arial,8,F;$[cSS]
R=41;0; 8;1;Arial,8,F;$[cSH]
L= 0;1;25;1;Arial,8;$[recTRN.TEXT]
#end
##out_TRNSUB
* TODO: beschreiben Sie hier die Verwendung
CY=1

L=25;0; 8;1;Arial,8,N;$[recDET.KONTO]
R=33;0; 8;1;Arial,8,N;$[cSS]
R=41;0; 8;1;Arial,8,N;$[cSH]
#end
##FussSeite
* Das ist die Ausgabedefinition fuer den allgemeinen Seitenfuss 
CY=3
L=0;0;100;1; ;\-

L=0;2;100;1; ;\-
#end

#loopTRN
* TODO: beschreiben Sie hier die Verwendung
***************************************************
* Datensatzschleife BUCHUNGSZEILEN zur Pruefung des Platzes
REC recCNT(BUCHUNGSZEILEN,1,8)$[recTRN.TRANSNO<8]
VAR nCNT(s,2,0)
nCNT=0
LOOP recCNT(#loop_recCNT)
IFNOT BOOL( ($[Zeile] + $[nCnt]) > $[ZlMax] )
  GOTO :DoIt
***************************************************

cST=Übertrag
cSS=
cSH=
negSaldo=$[recTRN.SALDOALT]
IF BOOL($[recTRN.SALDOALT]>0)
   cSH=$[recTRN.SALDOALT]
ELSE
   cSS=$[negSALDO]

Zeile=$[ZlMax]
OUT ##Saldo

IF BOOL($[bRight])
   GOTO :ChPage

Zeile=3
bRight=1
RandX=$[SaveX] + ((51 * $[SizeX]) / 100)
OUT ##KopfDetail
OUT ##Saldo
GOTO :DoIt

:ChPage
OUT ENDPAGE
Zeile=0
Seite=$[Seite]+1
RandX=$[SaveX]
OUT STARTPAGE
OUT ##KopfSeite
OUT ##KopfDetail
OUT ##Saldo

:DoIt

posSaldo=$[recTRN.SALDONEU]

cSS=
cSH=
IF BOOL($[recTRN.SOLL] <> 0)
   cSS=$[recTRN.SOLL]
IF BOOL($[recTRN.HABEN] <> 0)
   cSH=$[recTRN.HABEN]
OUT ##out_TRHDR

REC recDET(BUCHUNGSZEILEN,1,8)$[recTRN.TRANSNO<8]
nCNT=0
LOOP recDET(#loop_recDET)

#end
#loop_recCNT
* Datensatzschleife BUCHUNGSZEILEN
* Datensatzname = recCNT
nCNT= $[nCNT] + 1
#end
#loop_recDET
* TODO: beschreiben Sie hier die Verwendung

IF CMP(recTRN.KONTO,=)$[recDET.KONTO]
   RETURN

cSS=
cSH=
IF BOOL($[recDET.SOLL] <> 0)
   cSS=$[recDET.SOLL]
IF BOOL($[recDET.HABEN] <> 0)
   cSH=$[recDET.HABEN]

OUT ##out_TRNSUB
#end
