*Kontoauszug
#main

* Kontoauszug Standard fuer Personenkonten
*--------------------------------------------------
* 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)

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

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=P

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)

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
OUT STARTPAGE
OUT ##KopfSeite
OUT ##KopfDetail
cST=alter Saldo
cSS=
cSH=
negSALDO=0,00 - $[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 ##Linie
OUT ##Saldo
OUT ENDPAGE

#end

#CheckPage
* Fussbereich ausgeben, wenn letzte Zeile erreicht
IF BOOL($[Zeile] >= $[ZlMax])
   SUB #Fuss
* Kopfbereich ausgeben, wenn erste Zeile erreicht
IF BOOL($[Zeile] = 0)
   SUB #Kopf

#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;Kontoauszug $[recKTO.KONTO] $[recKTO.NAME] ($[FltMon]/$[FltJahr])
R=85;1,5;15;1;Arial,10,N;-$[Seite]-

#end

##KopfDetail
CY=3
L=0;0;100;1; ;\-
L= 0;1;10;1;Times New Roman,10,F;Gebucht
R=10;1;10;1;Times New Roman,10,F;Journal
R=20,0;1,0;11,0;1,0;Times New Roman,10,F;Betrag
L=32,0;1,0;4,0;1,0;Times New Roman,10,F;Währ.
L=37,0;1,0;29,0;1,0;Times New Roman,10,F;Text
R=72,0;1,0;14,0;1,0;Times New Roman,10,F;Soll
R=86,0;1,0;14,0;1,0;Times New Roman,10,F;Haben
L=0;2;100;1; ;\-

#end

##Saldo
CY=2
L=37,0;0,0;29,0;1,0;Arial,10,F;$[cST] ($[recMW.KUERZEL])
R=72,0;0,0;14,0;1,0;Arial,10,F,10,F;$[cSS]
R=86,0;0,0;13,0;1,0;Arial,10,F,10,F;$[cSH]
L=0;1;100;1; ;\-
L=0,0;0,0;15,0;1,0;Arial, 8,N;Liste Nr. 1004

#end

##Linie
* TODO: beschreiben Sie hier die Verwendung
CY=1
L=0;0;100;1; ;\-

#end

##out_TRHDR
CY=1
R=20,0;0,0;11,0;1,0;Arial,10,N;$[recTRN.BTRORG]
L=32,0;0,0;4,0;1,0;Arial,10,N;$[recTRN.BTRWAE]
L=37,0;0,0;35,0;1,0;Arial,10,N;$[recTRN.TEXT] $[recTRN.BelNrExt]
L= 0;0;10;1;Arial,10,N;$[recTRN.TAG].$[recTRN.MONAT].$[recTRN.JAHR]
R=10;0;10;1;Arial,10,N;$[recTRN.JnlLine]
R=72,0;0,0;14,0;1,0;Arial,10,F,10,F;$[cSS]
R=86,0;0,0;14,0;1,0;Arial,10,F,10,F;$[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

IFNOT BOOL( $[Zeile] >= $[ZlMax] )
  GOTO :DoIt

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

Zeile=$[ZlMax]
OUT ##Linie
OUT ##Saldo
OUT ENDPAGE

Zeile=0
Seite=$[Seite]+1
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


#end

