*AVIS
#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,50,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)

*-------------------------------------------------------------------------
IFNOT ISVAR(mBank)
  VAR mBank(u,8,0)
IFNOT ISVAR(mBLZ)
  VAR mBLZ(u,8,0)
IFNOT ISVAR(mKTO)
  VAR mKTO(u,10,0)
IFNOT ISVAR(mPosNr)
  VAR mPosNr(l,4,0)

*-------------------------------------------------------------------------
* Datensatz EIGENE_ANSCHRIFTEN
* dieser Datensatz wird immer gebraucht
REC recADR(EIGENE_ANSCHRIFTEN,0,2)01

* Datensatz Bankkonto und Bankleitzahl
REC recKAKO(KONTENPLAN,0,9)S$[mBank<8]
REC recBLZ(BANKENZUORDNUNG,0,8)$[recKAKO.Konto<8]


* Code für den
* Berichtsablauf ein.

SUB #subPaperDefs
OUT INITPAGESIZE
OUT STARTJOB Datenträgeraustausch $[mBank] $[Heute]
OUT TRANSPARENT

*==== :Kond_E3ED Bedingungscode
IF EMPTY(mBLZ)
  GOTO :MultiAVIS
IF EMPTY(mKTO)
  GOTO :MultiAVIS

:SingleAVIS
SUB #subSingle
GOTO :EndeAVIS

:MultiAVIS
SUB #subMulti
GOTO :EndeAVIS

:EndeAVIS

OUT ENDJOB


#end

##KopfBericht
CY=3
L=0;0;50;1;Times New Roman,10,N;$[recADR.NAME1] $[recADR.NAME2]
L=0;1;50;1;Times New Roman,10,N;$[recADR.STRASSE]
L=0,0;2,0;50,0;1,0;Times New Roman,10,N;$[recADR.PLZORT]
R=50;0;50;1;Times New Roman,10,F;$[RepTitel]
R=85;1;15;1;Times New Roman,10,N;$[Heute]
R=85;2;15;1;Times New Roman,10,N;Seite -$[Seite]-

#end

##KopfSeite
CY=3
L=0;0;50;1;Times New Roman,10,N;$[recADR.NAME1] $[recADR.NAME2]
L=0;1;50;1;Times New Roman,10,N;$[recADR.STRASSE]
L=0,0;2,0;50,0;1,0;Times New Roman,10,N;$[recADR.PLZORT]
R=50;0;50;1;Times New Roman,10,F;$[RepTitel]
R=85;1;15;1;Times New Roman,10,N;$[Heute]
R=85;2;15;1;Times New Roman,10,N;Seite -$[Seite]-

#end

##KopfDetail
CY=3
L=0,0;0,0;100,0;1,0; ;\-
L=0;2;100;1; ;\-
L=58,0;1,0;30,0;1,0;Arial,10,F;noch Verwendungszweck
R=88,0;1,0;12,0;1,0;Arial,10,F;Betrag
L=28,0;1,0;30,0;1,0;Arial,10,F;Verwendungszweck
R=0,0;1,0;10,0;1,0;Arial,10,F;Pos.

#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
OUT ##KopfSeite
OUT ##KopfDetail

#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

##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=AVIS
Heute=H
RandX=      1,80
RandY=      0,80
SizeX=      17,5
Seite=      1
Zeile=      0
cyZeile=    2.54/$[mLPI]
ZlMax=     (26.5/$[cyZeile]) - 4

RETURN

#end

##outAdresse
CY=8
L=0,0;2,0;40,0;1,0;Arial,10,F;$[recDEST.Anrede]
L=0,0;3,0;40,0;1,0;Arial,10,F;$[recDEST.Name1]
L=0,0;4,0;40,0;1,0;Arial,10,F;$[recDEST.Name2]
L=0,0;5,0;40,0;1,0;Arial,10,F;$[recDEST.Strasse]
L=0,0;7,0;8,0;1,0;Arial,10,F;$[recDEST.Plz<8]
L=8,0;7,0;32,0;1,0;Arial,10,F;$[recDEST.Ort]
L=0,0;0,0;50,0;1,0;Arial, 8,N;$[recADR.Name1] * $[recADR.Strasse] * $[recADR.PlzOrt]
L=0,0;1,0;50,0;1,0; ;\-
L=-3,0;11,0;1,5;1,0; ;\-

#end

##outSumme
CY=5
L=0,0;3,0;70,0;1,0;Arial,10,F;Überweisung an $[recMAIN.Empfaenger]
L=0,0;4,0;23,0;1,0;Arial,10,F;Konto-Nr. $[recMAIN.KontoNr]
L=23,0;4,0;47,0;1,0;Arial,10,F;bei $[recMAIN.Bankname] (BLZ $[recMAIN.BLZ])
L=0,0;2,0;100,0;1,0; ;\-
R=84,0;4,0;16,0;1,0;Arial,10,F;$[mSumme]
R=84,0;3,0;16,0;1,0;Arial,10,F;gesamt $[recMAIN.Waehr]

#end

#loopSUMM
* Datensatzschleife recSUMM
IF BOOL(($[recSUMM.Warten]) <> (0))
  RETURN

mSumme=$[mSumme] + $[recSUMM.Betrag]
RETURN

#end

##outSingle
CY=1
R=0,0;0,0;10,0;1,0;Arial,10,N;$[mPosNr]
L=28,0;0,0;30,0;1,0;Arial,10,N;$[recMAIN.Zweck1]
L=58,0;0,0;30,0;1,0;Arial,10,N;$[recMAIN.Zweck2]
R=88,0;0,0;12,0;1,0;Arial,10,N;$[recMAIN.Betrag]

#end

#loopSingle
IF BOOL(($[recMAIN.Warten]) <> (0))
  RETURN

mPosNr=$[mPosNr] + 1
SUB #CheckPage
OUT ##outSingle

RETURN

#end

#subSingle
* Drucken eines AVIS

REC recMAIN(DTAUS,4,27)0$[mBank<8]$[mBLZ<8]$[mKTO<10]
REC recDEST(ADRESSSTAMM,0,15)$[recMAIN.DestDebNr<15]
REC recSUMM(DTAUS,4,27)0$[mBank<8]$[mBLZ<8]$[mKTO<10]
IFNOT EMPTY(recDEST.Name2)
  GOTO :EndName2
recDEST.Name2=$[recDEST.Strasse]
recDEST.Strasse=
:EndName2

VAR mSumme(N,12,2)
LOOP recSUMM(#loopSUMM)

IF BOOL(($[mSumme]) <= (0))
  RETURN

*-----------------------------------------------------------------------------
* Vorbereiten der Ausgabe 
* Initialisierung der Drucksteuerdaten
OUT STARTPAGE
RepTitel=AVIS
Zeile=0
Seite=1
mPosNr=0
OUT ##KopfBericht
Zeile=8
OUT ##outAdresse
Zeile=20
OUT ##outSumme
OUT ##KopfDetail
*-----------------------------------------------------------------------------
LOOP recMAIN(#loopSingle)
* ----------------------------------------------------
* Seite abschliessen
Zeile=$[ZlMax]
OUT ##FussBericht
OUT ##outPost
OUT ENDPAGE

RETURN

#end

#loopZWECK
* Datensatzschleife recZWECK
IF BOOL(($[recZWECK.Warten]) <> (0))
  RETURN
IFNOT EMPTY(recZWECK.Zweck1)
  mCount=$[mCount] + 1
IFNOT EMPTY(recZWECK.Zweck2)
  mCount=$[mCount] + 1

RETURN

#end

#loopLIST
* Unterprgramm von ReportMain/subMulti
* Datensatzschleife recLIST
IFNOT CMP(mKTO,=)$[recLIST.KontoNr]
  GOTO :AVIS
IFNOT CMP(mBLZ,=)$[recLIST.BLZ]
  GOTO :AVIS
RETURN

:AVIS
mKTO=$[recLIST.KontoNr]
mBLZ=$[recLIST.BLZ]

* Zaehlen der Verwendungszweckzeilen
VAR mCount(N,8,0)
REC recZWECK(DTAUS,4,27)0$[mBank<8]$[mBLZ<8]$[mKTO<10]
LOOP recZWECK(#loopZWECK)

IF BOOL(($[mCount]) > (2))
   SUB #subSingle

RETURN

#end

#subMulti
* Unterprgramm von ReportMain

REC recLIST(DTAUS,4,9)0$[mBank<8]
LOOP recLIST(#loopLIST)

RETURN

#end

##FussSeite
*  Ausgabe fuer den allgemeinen Seitenfuss 
* ausser der letzten Seite
CY=3
L=0;0;100;1; ;\-

*R=80;0;20;1;Times New Roman,12,F;Übertrag

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

#end

##FussBericht
*  Ausgabe fuer den letzten Seitenfuss 
CY=3
L=0;0;100;1; ;\-

*L=0;0;100;1;Times New Roman,12,F;$[recADR.BANK1_KONT]

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

#end

