* Default XBS-CODE

#main
* Haupprogrammcode 
* Sie sollten mindestens die mit 'TODO' 
* gekennzeichneten Stellen nachbearbeiten
*--------------------------------------------------
* 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)

ZlMax=     61
RandX=      1,80
RandY=      0,80
SizeX=      18,0
Seite=      1
Zeile=      0

Heute=H

VAR mSuEin(d,8,2)
VAR mSuAus(d,8,2)
IFNOT ISVAR(FltMon)
  VAR FltMon(s,2,0)
IFNOT ISVAR(FltJahr)
  VAR FltJahr(s,2,0)
IFNOT ISVAR(mKonto)
  VAR mKonto(u,8,0)
IF EMPTY(mKonto)
  RETURN

VAR mKeyFilt(u,14,0)
VAR mKeyLen(s,2,0)
SUB #CalcFilter

* Erste Seite initialisieren
***************************************************
* Datensatzschleife KASSENBUCH
REC recKABU(KASSENBUCH,0,$[mKeyLen])$[mKeyFilt<14]
:EOF_recKABU
***************************************************
***************************************************
* Datensatzschleife OPTIONEN
REC recOPT(OPTIONEN,0,5) 7008
:EOF_recOPT
***************************************************
***************************************************
* Datensatzschleife WÄHRUNGEN
REC recMW(WÄHRUNGEN,1,3)$[recOPT.OPTDATAC<3]
:EOF_recMW
***************************************************


OUT INITPAGESIZE
OUT STARTJOB Kassenbewegungen $[mKonto]
OUT TRANSPARENT
OUT STARTPAGE
OUT ##KopfBericht
OUT ##KopfDetail

* Schleife ueber Zeilen
LOOP recKABU(#loopMAIN)

*--------------------------------------------------
* letzte Seite abschliessen
IF BOOL($[Zeile] < $[ZlMax])
  OUT ##Sterne

Zeile=$[ZlMax]
OUT ##FussBericht
OUT ENDPAGE
OUT ENDJOB

#end


#loopMAIN
* Wird fuer jeden Satz von recMAIN aufgerufen

VAR mBtrEin(d,8,2)
VAR mBtrAus(d,8,2)
VAR mTxtEin(C,20,0)
VAR mTxtAus(C,20,0)

***************************************************
* Datensatzschleife WÄÿHRUNGEN
REC recBW(WÄHRUNGEN,1,3)$[recKABU.WAEHRUNG<3]
:EOF_recBW
***************************************************


IF CMP(recKABU.KZZA,=)Z
   SUB #Zugang
ELSE
   SUB #Abgang

SUB #CheckPage
OUT ##outMAIN

mSuEin=$[mSuEin] + $[mBtrEin]
mSuAus=$[mSuAus] + $[mBtrAus]
#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
IF BOOL(($[mSuEin]=0) & ($[mSuAus]=0))
   RETURN
OUT ##Uebertrag
#end


##KopfBericht
* Berichtskopf erscheint auf der ersten Seite
CY=2
L=0;0;40;1;Arial,12,F;Einnahme/Ausgabe Kasse $[mKonto] ($[FltMon]/$[FltJahr])
C=46;0;8;1;Arial,10,N;-$[Seite]-
R=85;0;15;1;Arial,10,N;$[Heute]

#end

##KopfSeite
* Seitenkopf erscheint ab 2. Seite
CY=2
L=0;0;40;1;Arial,12,F;Einnahme/Ausgabe Kasse $[mKonto] ($[FltMon]/$[FltJahr])
C=46;0;8;1;Arial,10,N;-$[Seite]-
R=85;0;15;1;Arial,10,N;$[Heute]
#end

##KopfDetail
CY=3
L=0;0;100;1; ;\-

L= 0;1;10;1;Times New Roman,10,F;Datum
L=10;1; 6;1;Times New Roman,10,F;Konto
L=16;1; 5;1;Times New Roman,10,F;Ust.
L=21;1; 8;1;Times New Roman,10,F;Kst
L=29;1; 8;1;Times New Roman,10,F;Ktr
R=37;1;10;1;Times New Roman,10,F;Betrag
L=48;1; 4;1;Times New Roman,10,F;Währ.
L=52;1;14;1;Times New Roman,10,F;Text
R=66;1;12;1;Times New Roman,10,F;Einnahme
R=78;1;12;1;Times New Roman,10,F;Ausgabe
R=90;1;10;1;Times New Roman,10,F;TRN

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

##Uebertrag
* Das ist die Ausgabedefinition fuer den Uebertrag von vorher
CY=1

L=52;0;14;1;Arial,10,N;Übertrag ($[recMW.KUERZEL])
R=66;0;12;1;Arial,10,N;$[mSuEIN]
R=78;0;12;1;Arial,10,N;$[mSuAUS]
#end

##outMAIN
* Das ist die Ausgabedefinition fuer die Procedure loopMAIN
CY=1

L= 0;0;10;1;Arial,10,N;$[recKABU.TAG].$[recKABU.MONAT].$[recKABU.JAHR]
L=10;0; 6;1;Arial,10,N;$[recKABU.KTOSACH]
L=16;0; 5;1;Arial,10,N;$[recKABU.USTSCHL]
L=21;0; 8;1;Arial,10,N;$[recKABU.KST]
L=29;0; 8;1;Arial,10,N;$[recKABU.KTR]
R=37;0;10;1;Arial,10,N;$[recKABU.BETRWAEHR]
L=48;0; 4;1;Arial,10,N;$[recKABU.WAEHRUNG]
L=52;0;14;1;Arial,10,N;$[recKABU.BUTEXT]
R=66;0;12;1;Arial,10,N;$[mTxtEIN]
R=78;0;12;1;Arial,10,N;$[mTxtAUS]
R=90;0;10;1;Arial,10,N;$[recKABU.TRANSNO]
#end

##Sterne
* TODO: beschreiben Sie hier die Verwendung
CY=1
L= 0;0;10;1;Arial,10,F;***
R=90;0;10;1;Arial,10,F;***
#end
##FussSeite
* Das ist die Ausgabedefinition fuer den allgemeinen Seitenfuss 
CY=3
L=0;0;100;1; ;\-

L=52;1;14;1;Arial,10,F;Übertrag ($[recMW.KUERZEL])
R=66;1;12;1;Arial,10,F;$[mSuEIN]
R=78;1;12;1;Arial,10,F;$[mSuAUS]

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

##FussBericht
* Das ist die Ausgabedefinition fuer den letzten Seitenfuss 
CY=3

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

L=52;1;14;1;Arial,10,F;Summen ($[recMW.KUERZEL])
R=66;1;12;1;Arial,10,F;$[mSuEIN]
R=78;1;12;1;Arial,10,F;$[mSuAUS]

L=0;2;100;1; ;\-
#end
#CalcFilter
* mKeyFilt setzen
* 
mKeyFilt=$[mKonto]
mKeyLen=8
IF BOOL(0 = $[FltJahr])
   RETURN

mKeyFilt=$[mKeyFilt<8]$[FltJahr<4]
mKeyLen=12
IF BOOL(0 = $[FltMon])
   RETURN

IF BOOL(10 > $[FltMon])
  mKeyFilt=$[mKeyFilt<12]0$[FltMon<1]
ELSE
  mKeyFilt=$[mKeyFilt<12]$[FltMon<2]
mKeyLen=14

#end
#Zugang
* TODO: beschreiben Sie hier die Verwendung
mBtrEin=$[recKABU.BETRWAEHR] * ($[recMW.EUROKURS] / $[recBW.EUROKURS])
mTxtEin=$[mBtrEin]
mTxtAus=
#end
#Abgang
* TODO: beschreiben Sie hier die Verwendung
mBtrAus=$[recKABU.BETRWAEHR] * ($[recMW.EUROKURS] / $[recBW.EUROKURS])
mTxtAus=$[mBtrAus]
mTxtEin=
#end
