*Buchblatt
#main

*--------------------------------------------------
* 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=     61
RandX=      1,80
RandY=      0,80
SizeX=      18,0
Seite=      1
Zeile=      0
cyZeile= 2,54/6

Heute=H

IFNOT ISVAR(FltTyp)
  VAR FltTyp(u,1,0)
IFNOT ISVAR(FltKto)
  VAR FltKto(u,8,0)
IFNOT ISVAR(mSaldo)
  VAR mSaldo(N,14,2)
IFNOT ISVAR(mSaldoS)
  VAR mSaldoS(C,14,0)
IFNOT ISVAR(mSaldoH)
  VAR mSaldoH(C,14,0)
IFNOT ISVAR(mSaldoCurr)
  VAR mSaldoCurr(C,20,0)

REC recOPT(OPTIONEN,0,5) 7008
REC recFSAD(EIGENE_ANSCHRIFTEN,0,2)01
REC recKTO(KONTENPLAN,0,9)$[FltTyp<1]$[FltKto<8]
REC recBlatt(BUCHBLATTNAMEN,0,9)$[FltTyp<1]$[FltKto<8]
REC recZeile(BUCHBLATTZEILEN,1,10) $[FltTyp<1]$[FltKto<8]
REC recSaldoA(BUCHUNGSZEILEN,5,17)$[recZeile.TransNo<8]$[FltTyp<1]$[FltKto<8]
REC recSaldoN(BUCHUNGSZEILEN,100,9)$[FltTyp<1]$[FltKto<8]

mSaldo=$[recSaldoN.SaldoNeu]
IF BOOL(($[recSaldoN.SaldoNeu]) > (0))
   mSaldoCurr=$[mSaldo]H
mSaldo=0 - $[recSaldoN.SaldoNeu]
IF BOOL(($[recSaldoN.SaldoNeu]) <= (0))
   mSaldoCurr=$[mSaldo]S

mSaldo=$[recSaldoA.SaldoAlt]
SUB #subCalcSaldo

OUT INITPAGESIZE
OUT STARTJOB Kontenblatt
OUT TRANSPARENT
OUT STARTPAGE
OUT ##KopfSeite
OUT ##KopfDetail

LOOP recZeile(#loopBBZeile)

*==== :Kond_83BD Bedingungscode
IF BOOL(($[Zeile]) = (0))
  GOTO :EndJob

Zeile=$[ZlMax]
OUT ##FussSeite
OUT ENDPAGE

:EndJob
OUT ENDJOB

RETURN


#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
CY=2
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,0;1,0;85,0;1,0;Times New Roman,12,F;Buchblatt für Konto $[FltKto] ($[recKTO.Name])
R=85;1;15;1;Arial,10,N;-$[Seite]-

#end

##KopfDetail
CY=4
L=0;0;100;1; ;\-
L= 0;1;10;1;Times New Roman,10,F;Datum
L=10,0;1,0;8,0;1,0;Times New Roman,10,F;Beleg-Nr.
L=18,0;1,0;8,0;1,0;Times New Roman,10,F;Projekt
L=26,0;1,0;24,0;1,0;Times New Roman,10,F;Text
L=72,0;1,0;8,0;1,0;Times New Roman,10,F;Konto
R=80,0;1,0;10,0;1,0;Times New Roman,10,F;Soll
R=90,0;1,0;10,0;1,0;Times New Roman,10,F;Haben
L=0;2;100;1; ;\-
R=80,0;3,0;10,0;1,0;Arial,10,F;$[mSaldoS]
R=90,0;3,0;10,0;1,0;Arial,10,F;$[mSaldoH]
L=72,0;3,0;8,0;1,0;Arial,10,N;Saldo

#end

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

#end

##FussSeite
CY=3
L=0;0;100;1; ;\-
R=80,0;1,0;10,0;1,0;Arial,10,F;$[mSaldoS]
R=90,0;1,0;10,0;1,0;Arial,10,F;$[mSaldoH]
L=72,0;1,0;8,0;1,0;Arial,10,F;Saldo
L=0;2;100;1; ;\-
L=0,0;1,0;72,0;1,0;Arial,10,N;Liste Nr. 1014 - aktueller Saldo am $[recSaldoN.Tag>2].$[recSaldoN.Monat>2].$[recSaldoN.Jahr>2] $[recOPT.OptDataC] $[mSaldoCurr]

#end

##outloopZlKto
CY=1
L=0,0;0,0;10,0;1,0;Arial,10,F;$[recZlKto.Tag<2].$[recZlKto.Monat<2].$[recZlKto.Jahr>2]
L=18,0;0,0;8,0;1,0;Arial,10,F;$[recZlKto.PrjNr]
L=10,0;0,0;8,0;1,0;Arial,10,F;$[recZlKto.BelNr]
L=26,0;0,0;46,0;1,0;Arial,10,N;$[recZlKto.Text]
L=72,0;0,0;8,0;1,0;Arial,10,F;$[recZlKto.Konto]
R=80,0;0,0;10,0;1,0;Arial,10,F;$[mcSoll>12]
R=90,0;0,0;10,0;1,0;Arial,10,F;$[mcHaben>12]

#end

#loopZlKto
* Unterprgramm von ReportMain/loopBBZeile
* Datensatzschleife recZlKto
* druckt alle Sätze der Transaktion, 
* die sich auf das Buchblattkonto beziehen

VAR mcSoll(C,12,0)
VAR mcHaben(C,12,0)

IF BOOL(($[recZlKto.Soll]) <> (0))
   mcSoll=$[recZlKto.Soll>12]
IF BOOL(($[recZlKto.Haben]) <> (0))
   mcHaben=$[recZlKto.Haben>12]

SUB #CheckPage
OUT ##outloopZlKto
mSaldo= $[mSaldo] + $[recZlKto.Haben] - $[recZlKto.Soll]
SUB #subCalcSaldo

RETURN

#end

##outloopZlTrn
CY=1
L=18,0;0,0;8,0;1,0;Arial,10,N;$[recZlTrn.PrjNr]
L=10,0;0,0;8,0;1,0;Arial,10,N;$[mcBelegNr]
L=26,0;0,0;46,0;1,0;Arial,10,N;$[recKtoTrn.Name]
L=72,0;0,0;8,0;1,0;Arial,10,N;$[recZlTrn.Konto]
R=80,0;0,0;10,0;1,0;Arial,10,N;$[mcSoll>12]
R=90,0;0,0;10,0;1,0;Arial,10,N;$[mcHaben>12]

#end

#loopZlTrn
* Unterprgramm von ReportMain/loopBBZeile
* Datensatzschleife recZlTrn
* druckt alle Sätze der Transaktion, 
* die sich nicht auf das Buchblattkonto beziehen

IFNOT CMP(recZeile.BBKtoTyp,=)$[recZlTrn.Typ]
  GOTO :Print
IFNOT CMP(recZeile.BBKtoNr,=)$[recZlTrn.Konto]
  GOTO :Print
RETURN

:Print
REC recKtoTrn(KONTENPLAN,0,9)$[recZlTrn.Typ<1]$[recZlTrn.Konto<8]
VAR mcSoll(C,12,0)
VAR mcHaben(C,12,0)
VAR mcBelegNr(C,8,0)

IF CMP(recKtoTrn.KzKasse,=)K
   mcBelegNr=$[recZlTrn.BelNr]
IF CMP(recKtoTrn.KzKasse,=)B
   mcBelegNr=$[recZlTrn.BelNr]
IF BOOL(($[recZlTrn.Soll]) <> (0))
   mcSoll=$[recZlTrn.Soll>12]
IF BOOL(($[recZlTrn.Haben]) <> (0))
   mcHaben=$[recZlTrn.Haben>12]

SUB #CheckPage
OUT ##outloopZlTrn

RETURN

#end

#loopBBZeile
* Unterprogramm von ReportMain
* Datensatzschleife recZeile
* geht Tabelle Buchblattzeilen durch
* und ruft für jede TransNo die Schleifen
* für das Buchblattkonto auf

REC recZlKto(BUCHUNGSZEILEN,5,17)$[recZeile.TransNo<8]$[recZeile.BBKtoTyp<1]$[recZeile.BBKtoNr<8]
LOOP recZlKto(#loopZlKto)

IFNOT BOOL($[bLoop2])
  RETURN

REC recZlTrn(BUCHUNGSZEILEN,1,8)$[recZeile.TransNo<8]
LOOP recZlTrn(#loopZlTrn)

RETURN

#end

#subCalcSaldo
* Texte für Saldo ermitteln

VAR mSoll(N,14,2)
mSoll=0.00 - $[mSaldo]
mSaldoH=
mSaldoS=

IF BOOL(($[mSaldo]) > (0))
   mSaldoH=$[mSaldo>14]

IF BOOL(($[mSaldo]) <= (0))
   mSaldoS=$[mSoll>14]

RETURN

#end

