*Telefonliste
#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)
VAR mTop(L,1,0)
VAR mFilter(u,6,0)

VAR mSumme(N,14,2)
VAR mSummeN(N,14,2)
VAR mSummeU9(N,14,2)
VAR mSummeU8(N,14,2)
VAR mSummeUS(N,14,2)

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


* Code für den
* Berichtsablauf ein.

SUB #subPaperDefs
REC recMAIN(KONTENPLAN,0,1)P

*-----------------------------------------------------------------------------
* Vorbereiten der Ausgabe 
* Initialisierung der Drucksteuerdaten
OUT INITPAGESIZE
OUT STARTJOB $[RepTitel]
OUT TRANSPARENT
OUT STARTPAGE
Zeile=0
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;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;100;1; ;\-
L=0,0;1,0;8,0;1,0;Arial,8,F;Konto
L=8,0;1,0;11,0;1,0;Arial,8,F;Datum
R=19,0;1,0;15,0;1,0;Arial,8,F;org. Betrag
R=34,0;1,0;12,0;1,0;Arial,8,F;Betrag
R=46,0;1,0;12,0;1,0;Arial,8,F;Netto
R=58,0;1,0;10,0;1,0;Arial,8,F;VSt.009
R=68,0;1,0;10,0;1,0;Arial,8,F;VSt.008
R=78,0;1,0;10,0;1,0;Arial,8,F;VSt.sonst.
R=88,0;1,0;12,0;1,0;Arial,8,F;Brutto
L=0;2;100;1; ;\-

#end

##outUebertr
CY=1
R=34,0;0,0;12,0;1,0;Arial,8,N;Übertrag
R=46,0;0,0;12,0;1,0;Arial,8,N;$[mSummeN!]
R=58,0;0,0;10,0;1,0;Arial,8,N;$[mSummeU9!]
R=68,0;0,0;10,0;1,0;Arial,8,N;$[mSummeU8!]
R=78,0;0,0;10,0;1,0;Arial,8,N;$[mSummeUS!]
R=88,0;0,0;12,0;1,0;Arial,8,N;$[mSumme!]


#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
OUT ##outUebertr
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

#loopTRN
* Unterprogramm von ReportMain/loopMAIN/loopPOST
* Datensatzschleife recTRN
REC recKTO2(KONTENPLAN,0,9)$[recTRN.Typ<1]$[recTRN.Konto<8]
IF CMP(recTRN.Typ,=)P
  RETURN

IF CMP(recKTO2.KzKasse,=)U
  GOTO :DoUst
IF CMP(recKTO2.KzKasse,=)N
  GOTO :DoNetto
RETURN

:DoNetto
mNetto=$[mNetto] + $[recTRN.Soll] - $[recTRN.Haben]
RETURN

:DoUst
IF CMP(recKTO2.Schl,=)009
  GOTO :DoUst9
IF CMP(recKTO2.Schl,=)008
  GOTO :DoUst8

mUstS=$[mUstS] + $[recTRN.Soll] - $[recTRN.Haben]
RETURN

:DoUst9
mUst9=$[mUst9] + $[recTRN.Soll] - $[recTRN.Haben]
RETURN

:DoUst8
mUst8=$[mUst8] + $[recTRN.Soll] - $[recTRN.Haben]
RETURN

#end

##outMAIN
CY=2
L=0,0;0,0;8,0;1,0;Arial,8,N;$[recMAIN.Konto]
R=19,0;0,0;15,0;1,0;Arial,8,N;$[mBtrOrg!0] $[mWaeOrg]
R=46,0;0,0;12,0;1,0;Arial,8,N;$[mNetto!0]
R=68,0;0,0;10,0;1,0;Arial,8,N;$[mUst8!0]
R=58,0;0,0;10,0;1,0;Arial,8,N;$[mUst9!0]
R=78,0;0,0;10,0;1,0;Arial,8,N;$[mUstS!0]
R=88,0;0,0;12,0;1,0;Arial,8,N;$[mBrutto!0]
L=34,0;1,0;34,0;1,0;Arial,8,N;$[recPOST.BelNr] $[recPOST.Text]
L=8,0;0,0;11,0;1,0;Arial,8,N;$[recPOST.Tag].$[recPOST.Monat].$[recPOST.Jahr]
R=34,0;0,0;12,0;1,0;Arial,8,N;$[mBetrag!0]
L=8,0;1,0;26,0;1,0;Arial,8,N;$[recMAIN.Name]
R=68,0;1,0;10,0;1,0;Arial,8,N;$[recPOST.Kst]
R=78,0;1,0;10,0;1,0;Arial,8,N;$[recPOST.Ktr]

#end

#loopPOST
* Unterprogramm von ReportMain/loopMAIN
* Datensatzschleife recPOST
* prüfen, ob das ein Haben-Posten ist
VAR mBtrOrg(d,8,2)
VAR mBetrag(d,8,2)
VAR mWaeOrg(u,3,0)
VAR mNetto(d,8,2)
VAR mUst9(d,8,2)
VAR mUst8(d,8,2)
VAR mUstS(d,8,2)
VAR mUstG(d,8,2)
VAR mBrutto(d,8,2)

IF BOOL(($[recPOST.Haben]) = (0))
  RETURN

mBtrOrg=$[recPOST.BtrOrg]
mWaeOrg=$[recPOST.BtrWae]
mBetrag=$[recPOST.Haben]

* gesamte Transaktion nach recTRN durchgehen
REC recTRN(BUCHUNGSZEILEN,1,8)$[recPOST.TransNo<8]
LOOP recTRN(#loopTRN)
mBrutto=$[mNetto]+$[mUst9]+$[mUst8]+$[mUstS]
mUstG=$[mUst9]+$[mUst8]+$[mUstS]

SUB #CheckPage
OUT ##outMAIN
mSumme=$[mSumme]+$[mBrutto]
mSummeN=$[mSummeN]+$[mNetto]
mSummeU9=$[mSummeU9]+$[mUst9]
mSummeU8=$[mSummeU8]+$[mUst8]
mSummeUS=$[mSummeUS]+$[mUstS]

RETURN

#end

#loopMAIN
* Unterprogramm von ReportMain
* Datensatzschleife recMAIN
IF CMP(recMAIN.Konto,<)70000   
  RETURN

REC recDEST(ADRESSSTAMM,8,8)$[recMAIN.Konto<8]
IFNOT EMPTY(recMAIN.Name)
   GOTO :PostLoop
recMAIN.Name=$[recDEST.Name1]
UPDATE recMAIN

:PostLoop
* recPOST Postentabelle für dieses Konto
* -----------------------------------------------------------------------------
REC recPOST(BUCHUNGSZEILEN,0,15)$[recMAIN.Typ<1]$[recMAIN.Konto<8]$[mFilter<6]
LOOP recPOST(#loopPOST)

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=Kreditorenumsatz
Heute=H
RandX=      1,80
RandY=      0,80
SizeX=      18,0
Seite=      1
Zeile=      0
cyZeile=    2.54/$[mLPI]
ZlMax=     61


*-------------------------------------------------------------------------
* Prüfen der Übergabe von Filtervariablen
VAR mTmp(u,10,0)
mTmp=$[Heute<5]
mTmp=$[Heute>4]$[mTmp>2]
mFilter=$[mTmp]

IFNOT ISVAR(mFltJahr)
  RETURN
IFNOT ISVAR(mFltMon)
  RETURN

mTmp=0$[mFltMon]
mTmp=$[mFltJahr>4]$[mTmp>2]
mFilter=$[mTmp]
RETURN

#end

##FussSeite
CY=3
L=0;0;100;1; ;\-
L=0,0;1,0;15,0;1,0;Arial, 8,N;Liste Nr. 1022
L=0;2;100;1; ;\-


#end

##FussBericht
CY=3
L=0;0;100;1; ;\-
L=0,0;1,0;15,0;1,0;Arial, 8,N;Liste Nr. 1022
R=46,0;1,0;12,0;1,0;Arial,8,F;$[mSummeN!]
R=58,0;1,0;10,0;1,0;Arial,8,F;$[mSummeU9!]
R=68,0;1,0;10,0;1,0;Arial,8,F;$[mSummeU8!]
R=78,0;1,0;10,0;1,0;Arial,8,F;$[mSummeUS!]
R=88,0;1,0;12,0;1,0;Arial,8,F;$[mSumme!]
L=0;2;100;1; ;\-


#end

