*Bilanzdruck
#main
*-------------------------------------------------------------------------
* Variablen:
* Zeile     aktuelle Zeilenummer
* 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
* recMAIN   Datensatz fuer Main-Schleifen
*--------------------------------------------------------------------------
VAR RepTitel(C,70,0)
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,3)
VAR mLPI(s,2,0)
VAR mTop(L,1,0)

* Datensatz EIGENE_ANSCHRIFTEN
REC recADR(EIGENE_ANSCHRIFTEN,0,2)01

*-------------------------------------------------------------------------
* Prüfen der Übergabe von Filtervariablen

* Code für den
* Berichtsablauf ein.

SUB #subPaperDefs
REC recMAIN(BILANZSTEUERUNG,0,4)$[pLstNr<4]
*REC recMAIN(BILANZ,0,4)$[pLstNr<4]
RepTitel=$[recMAIN.Text]

*-----------------------------------------------------------------------------
* Vorbereiten der Ausgabe 
* Initialisierung der Drucksteuerdaten
OUT INITPAGESIZE
OUT STARTJOB $[RepTitel]
OUT TRANSPARENT
OUT STARTPAGE
VAR mFillState(L,1,0)
mFillState=0
Zeile=0
SUB #subFILLBK

OUT ##KopfBericht
OUT ##KopfDetail
*-----------------------------------------------------------------------------

* Aufruf des Unterprogramms loopMAIN fuer jeden Datensatz
* der an recMAIN gebundenen Tabelle
LOOP recMAIN(#loopMAIN)

* ----------------------------------------------------
* Druckdatei abschliessen
Zeile=$[ZlMax]
OUT ##FussBericht
*OUT ##outPost
OUT ENDPAGE
OUT ENDJOB


#end

##KopfBericht
CY=3
L=0;0;50;1;Arial,10,N;$[recADR.NAME1] $[recADR.NAME2]
L=0;1;50;1;Arial,10,N;$[recADR.STRASSE]
L=0,0;2,0;50,0;1,0;Arial,10,N;$[recADR.PLZORT]
R=50;0;50;1;Arial,10,F;$[RepTitel]
R=70;2;30;1;Arial,10,N;Druck $[Heute] Seite -$[Seite]-

#end

##KopfSeite
CY=3
L=0;0;50;1;Arial,10,N;$[recADR.NAME1] $[recADR.NAME2]
L=0;1;50;1;Arial,10,N;$[recADR.STRASSE]
L=0,0;2,0;50,0;1,0;Arial,10,N;$[recADR.PLZORT]
R=50;0;50;1;Arial,10,F;$[RepTitel]
R=70;2;30;1;Arial,10,N;Druck $[Heute] Seite -$[Seite]-

#end

##KopfDetail
CY=3
L=0;0;100;1; ;\-
L=0,0;1,0;12,0;1,0;Arial,10,F;Pos.
L=12,0;1,0;37,0;1,0;Arial,10,F;Text
R=74,0;1,0;26,0;1,0;Arial,10,F;Bezug auf
L=0;2;100;1; ;\-
L=50,0;1,0;24,0;1,0;Arial,10,F;Typ

#end

##outUebertr
CY=1

#end

#Kopf
* Dieser Code wird immer beim Seitenwchsel
* aufgerufen, um den Kopf der nächsten Seite
* auszugeben
* Der Kopf für die erste Seite steht jedoch
* im Codestück OnPreReport

Zeile=0
SUB #subFILLBK
OUT ##KopfSeite
OUT ##KopfDetail
*OUT ##outUebertr
mFillState=0
mTop=1

#end

#Fuss
* Dieser Code wird immer beim Seitenwchsel
* aufgerufen, um den Fuss der aktuellen Seite
* auszugeben
* Der Fuss für die letzte Seite steht jedoch
* im Codestück OnPostReport

Zeile=$[ZlMax]
OUT ##FussSeite
*OUT ##outPost
OUT ENDPAGE
Seite=$[Seite]+1
Zeile=0
OUT STARTPAGE

#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

#NeueSeite
* nächste Seite anfangen
SUB #Fuss
SUB #Kopf

#end

##outLine
CY=1
L=0;0;100;1; ;\-

#end

##outLineFeed
CY=1

#end

##outMAIN
CY=1
L=50,0;0,0;24,0;1,0;Arial,10,N;($[recMAIN.Tiefe]) $[mPosTyp]
L=0,0;0,0;12,0;1,0;Arial,10,N;$[recMAIN.PosNr]
L=12,0;0,0;37,0;1,0;Arial,10,N;$[recMAIN.Text]
L=74,0;0,0;26,0;1,0;Arial,10,N;$[mVonPos]

#end

#looprecVON
* Unterprgramm von ReportMain/loopMAIN/subBezug
* Datensatzschleife recVON

IF BOOL(($[recVON.PosTyp]) = (0))
  RETURN

IF BOOL(($[recVON.Tiefe]) < ($[recMAIN.Tiefe]))
  GOTO :EDeept

IF BOOL(($[recVON.Tiefe]) = ($[recMAIN.Tiefe]))
  GOTO :TestTyp

RETURN
:TestTyp

IF BOOL(($[recVON.PosTyp]) > (2))
  GOTO :ESumme

IF BOOL(($[recVON.PosTyp]) > (1))
  RETURN

mVonPos=$[recVON.PosNr]..$[recMAIN.PosNr]
BREAK recVON
RETURN

:EDeept
mVonPos=Fehler Tiefe $[recVON.PosNr]
BREAK recVON
RETURN

:ESumme
mVonPos=Fehler PosTyp $[recVON.PosNr]
BREAK recVON
RETURN


#end

#subBezug
* Unterprgramm von ReportMain/loopMAIN
mVonPos=Fehler: kein Bezug
REC recVON(BILANZSTEUERUNG,100,4)$[pLstNr<4]
SEEK recVON($[recMAIN.LfdNr>8])
SKIP recVON
LOOP recVON(#looprecVON)

RETURN

#end

#loopRecBIS
* Unterprgramm von ReportMain/loopMAIN/subBezug1
* Datensatzschleife recBIS

IF BOOL(($[recBIS.PosTyp]) = (0))
  RETURN

IF BOOL(($[recBIS.Tiefe]) < ($[recMAIN.Tiefe]))
  GOTO :EDeept

IF BOOL(($[recBIS.Tiefe]) = ($[recMAIN.Tiefe]))
  GOTO :TestTyp

RETURN
:TestTyp

IF BOOL(($[recBIS.PosTyp]) < (2))
  GOTO :ESumme

IF BOOL(($[recBIS.PosTyp]) < (3))
  RETURN

mVonPos=$[recMAIN.PosNr]..$[recBIS.PosNr]
BREAK recBIS
RETURN

:EDeept
mVonPos=Fehler Tiefe $[recBIS.PosNr]
BREAK recBIS
RETURN

:ESumme
mVonPos=Fehler PosTyp $[recBIS.PosNr]
BREAK recBIS

RETURN

#end

#subBezug1
* Unterprgramm von ReportMain/loopMAIN
mVonPos=Fehler: kein Bezug
REC recBIS(BILANZSTEUERUNG,0,4)$[pLstNr<4]
SEEK recBIS($[recMAIN.LfdNr>8])
SKIP recBIS
LOOP recBIS(#loopRecBIS)

RETURN

#end

#loopMAIN
* Unterprogramm von ReportMain
* Datensatzschleife recMAIN

VAR mPosTyp(C,20,0)
VAR mVonPos(C,100,0)

IF BOOL(($[recMAIN.PosTyp]) = (0))
  mPosTyp=Text

IF BOOL(($[recMAIN.PosTyp]) = (1))
  mPosTyp=Von-Summe

IF BOOL(($[recMAIN.PosTyp]) = (1))
  SUB #subBezug1

IF BOOL(($[recMAIN.PosTyp]) = (2))
  mPosTyp=Position

IF BOOL(($[recMAIN.PosTyp]) = (3))
  mPosTyp=Bis-Summe

IF BOOL(($[recMAIN.PosTyp]) = (3))
  SUB #subBezug


IF BOOL(($[recMAIN.PosTyp]) = (1))
  GOTO :DoOut
IF BOOL(($[recMAIN.PosTyp]) = (3))
  GOTO :DoOut

IF BOOL($[pTest])
  RETURN

:DoOut
IF BOOL(($[recMAIN.Tiefe]) > ($[pTiefe]))
  RETURN

SUB #CheckPage
OUT ##outMAIN
RETURN

#end

##outPost
CY=2
L= 0;0;15;1;Arial,8,N;$[recADR.BANK1_NAME]  
L=15;0;35;1;Arial,8,N;(BLZ: $[recADR.BANK1_BLZ])  Kto-Nr. $[recADR.BANK1_KONT]
L=0,0;1,0;15,0;1,0;Arial,8,N;$[recADR.BANK2_NAME]
L=15;1;35;1;Arial,8,N;(BLZ: $[recADR.BANK2_BLZ])  Kto-Nr. $[recADR.BANK2_KONT]
L=50;0;15;1;Arial,8,N;Telefon
L=50;1;15;1;Arial,8,N;$[recADR.TELEFON]
L=65;0;15;1;Arial,8,N;Telefax
L=65,0;1,0;15,0;1,0;Arial,8,N;$[recADR.FAXNR]
R=80;0;20;1;Arial,8,N;E-Mail
R=80;1;20;1;Arial,8,N;$[recADR.NAME3]

#end

#subPaperDefs
* Definition des Basislayouts und Papiergrößen

* Zeilen per Inc
mLPI=6

*RepTitel=$[pTitel]
Heute=H
RandX=      1,80
RandY=      0,80
SizeX=      17,4
Seite=      1
Zeile=      0
cyZeile=    2.54/$[mLPI]
ZlMax=     60

RETURN

#end

#subFILL01
* Unterprogramm von ReportMain

VAR mFillStart(d,8,2)
mFillStart= $[RandY] + ($[cyZeile] * $[Zeile])

IF BOOL(($[mFillState]) = (1))
  GOTO :DoFill
mFillState=1
RETURN

:DoFill
OUT RGBFILL $[RandX];$[mFillStart];$[SizeX];$[cyZeile];15263976
mFillState=0
RETURN

#end

#subFILLBK
* Papier vergilbt aussehen lassen
*RETURN

VAR mFillY(d,8,2)
VAR mFillCY(d,8,2)
mFillY=  $[RandY] + ($[cyZeile] * 3,505)
mFillCY= ($[cyZeile] * 2,0)

OUT RGBFILL $[RandX];$[mFillY];$[SizeX];$[mFillCY];12774398


RETURN

#end

##FussSeite
CY=3
L=0;0;100;1; ;\-
L=0;2;100;1; ;\-

#end

##FussBericht
CY=3
L=0;0;100;1; ;\-
L=0;2;100;1; ;\-

#end

