* 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
* recMAIN   Datensatz fuer Main-Schleifen
*           Dieser ist noch zu vereinbaren
*--------------------------------------------------
VAR Zeile(s,2,0)
VAR ZlStart1(s,2,0)
VAR ZlStart2(s,2,0)
VAR ZlMax(s,2,0)
VAR cyKD(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 mWaehr(u,3,0)

* Umsatzsteuerprozentsaetze
VAR mUst1(d,8,1)
VAR mUst2(d,8,1)
* Summen Netto/Ust
VAR mSuN1(d,8,2)
VAR mSuN2(d,8,2)
VAR mSuU1(d,8,2)
VAR mSuU2(d,8,2)
* Summen Brutto Mark/Euro
VAR mSuBM(d,8,2)
VAR mSuBE(d,8,2)

mWaehr=DEM
mUst1=16
mUst2=7
ZlMax=     60
ZlStart1=   2
ZlStart2=   2
cyKD=       3
RandX=      1,80
RandY=      0,80
SizeX=      18,0
Seite=      1
Zeile=      0

Heute=H

IFNOT ISVAR(FltMon)
  VAR FltMon(s,2,0)
IFNOT ISVAR(FltJahr)
  VAR FltJahr(s,2,0)

*-------------------------------------------------
* TODO:  Main-Datensatz (saetze) anlegen
* REC recMAIN(<meine Tabelle>,<mein Schluessel>,<meine Filterlaenge>)<mein Filterwert>
***************************************************
* Datensatzschleife BELEGVERZEICHNIS
REC recMAIN(BELEGVERZEICHNIS,1,0)
:EOF_recMAIN
***************************************************
***************************************************
* Datensatzschleife WÄHRUNGEN Kurs fuer Waehrung EUR
REC recEUR(WÄHRUNGEN,1,3)EUR
IF EOF(recEUR)
  recEUR.EUROKURS=1,00000
:EOF_recEUR
***************************************************
***************************************************
* Datensatzschleife WÄHRUNGEN Kurs fuer Waehrung DEM
REC recDEM(WÄHRUNGEN,1,3)DEM
IF EOF(recDEM)
  recDEM.EUROKURS=1,95883
:EOF_recDEM
***************************************************
***************************************************
* Datensatzschleife OPTIONEN
REC recOPT(OPTIONEN,0,5) 7008
IF EOF(recOPT)
  recOPT.OPTDATAC=DEM
IF EMPTY(recOPT.OPTDATAC)
  recOPT.OPTDATAC=DEM
:EOF_recOPT
mWaehr=$[recOPT.OPTDATAC]
***************************************************
***************************************************
* Datensatzschleife WÄHRUNGEN Kurs fuer Mandantenwaehrung
REC recMWC(WÄHRUNGEN,1,6)$[recOPT.OPTDATAC<6]
IF EOF(recMWC)
  recMWC.EUROKURS=1,00000
:EOF_recMWC
***************************************************


*--------------------------------------------------
* Erste Seite initialisieren

OUT INITPAGESIZE
OUT STARTJOB mein Druckjob
OUT TRANSPARENT
OUT STARTPAGE
OUT ##KopfBericht
Zeile=$[ZlStart1]
OUT ##KopfDetail
*Zeile=$[Zeile] + $[cyKD]

*OUT ##Uebertrag
*Zeile=$[Zeile] + 1

*--------------------------------------------------
* TODO:   Ausgabeschleife aktivieren
LOOP recMAIN(#loopMAIN)

*--------------------------------------------------
* letzte Seite abschliessen
Zeile=$[ZlMax]
OUT ##FussBericht
OUT ENDPAGE
OUT ENDJOB



#end


#loopMAIN
* Wird fuer jeden Satz von recMAIN aufgerufen

* Test ob Belegart eine Rechnungsbelegart ist
IF BOOL($[recMAIN.BELEGART] < 1)
   RETURN
IF BOOL($[recMAIN.BELEGART] > 4)
   RETURN

* Filter auf Zeitraum
IF BOOL($[FltJahr]=0)
   GOTO :NoFlt
IF BOOL($[FltJahr]<>$[recMAIN.JAHR])
   RETURN
IF BOOL($[FltMon]=0)
   GOTO :NoFlt
IF BOOL($[FltMon]<>$[recMAIN.MONAT])
   RETURN
:NoFlt


VAR mN1(d,8,2)
VAR mN2(d,8,2)
VAR mU1(d,8,2)
VAR mU2(d,8,2)
VAR mBM(d,8,2)
VAR mBE(d,8,2)
VAR mNummer(C,10,0)
VAR mDatum(C,8,0)
VAR mKunde(C,30,0)

***************************************************
* Datensatzschleife WÄHRUNGEN
REC recWAEHR(WÄHRUNGEN,1,6)$[recMAIN.WAEHRUNG<6]
IF EOF(recWAEHR)
  recWAEHR.EUROKURS=1,00000
:EOF_recWAEHR
***************************************************

mN1=$[recMAIN.NETTO]  * ($[recMWC.EUROKURS] / $[recWAEHR.EUROKURS])
mN2=0
mU1=$[recMAIN.MWST]   * ($[recMWC.EUROKURS] / $[recWAEHR.EUROKURS])
mU2=0
mBM=$[recMAIN.BRUTTO] * ($[recDEM.EUROKURS] / $[recWAEHR.EUROKURS])
mBE=$[recMAIN.BRUTTO] * ($[recEUR.EUROKURS] / $[recWAEHR.EUROKURS])

*==================================================
* TODO Bedingscode fuer Sevicebericht
IFNOT CMP(recMAIN.PHASE,=)3B
  GOTO :NoService

mN1=$[recMAIN.NETTO1]  * ($[recMWC.EUROKURS] / $[recWAEHR.EUROKURS])
mN2=$[recMAIN.NETTO2]  * ($[recMWC.EUROKURS] / $[recWAEHR.EUROKURS])
mU1=$[recMAIN.UST1]    * ($[recMWC.EUROKURS] / $[recWAEHR.EUROKURS])
mU2=$[recMAIN.UST2]    * ($[recMWC.EUROKURS] / $[recWAEHR.EUROKURS])
*==================================================
:NoService

mNummer=$[recMAIN.BELEGART>1]/$[recMAIN.BELEGNR]
mDatum=$[recMAIN.TAG].$[recMAIN.MONAT].$[recMAIN.JAHR>2]
mKunde=$[recMAIN.DEBKONTO]
IF EMPTY(mKunde)
   mKunde=$[recMAIN.KDNR]
mKunde=$[mKunde] $[recMAIN.NAME1]

IF BOOL($[recMAIN.BELEGART] <> 2)
   GOTO :KeineGS

* Vorzeichen fuer Gutschriftsbeleg umkehren
mN1=0-$[mN1]
mN2=0-$[mN2]
mU1=0-$[mU1]
mU2=0-$[mU2]
mBM=0-$[mBM]
mBE=0-$[mBE]

* Beginn Ausgabe
:KeineGS
SUB #CheckPage
OUT ##outMAIN
*Zeile=$[Zeile]+1

mSuN1=$[mSuN1]+$[mN1]
mSuN2=$[mSuN2]+$[mN2]
mSuU1=$[mSuU1]+$[mU1]
mSuU2=$[mSuU2]+$[mU2]
mSuBM=$[mSuBM]+$[mBM]
mSuBE=$[mSuBE]+$[mBE]


#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
Zeile=$[ZlStart2]
OUT ##KopfDetail
*Zeile=$[Zeile] + $[cyKD]
IF BOOL($[mSuBE]=0)
   RETURN
OUT ##Uebertrag
*Zeile=$[Zeile] + 1
#end


##KopfBericht
* Berichtskopf erscheint auf der ersten Seite
CY=1
L=0;0;35;1;Times New Roman,12,F;Rechnungsausgangsbuch ($[FltMon]/$[FltJahr])
C=46;0;8;1;Times New Roman,10,N;-$[Seite]-
R=85;0;15;1;Times New Roman,10,N;$[Heute]
#end

##KopfSeite
* Seitenkopf erscheint ab 2. Seite
CY=1
L=0;0;35;1;Times New Roman,12,F;Rechnungsausgangsbuch ($[FltMon]/$[FltJahr])
C=46;0;8;1;Times New Roman,10,N;-$[Seite]-
R=85;0;15;1;Times New Roman,10,N;$[Heute]
#end

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

L=0;1;11;1;Times New Roman,10,F;Beleg-Nr.
L=11;1;9;1;Times New Roman,10,F;Datum
L=20;1;14;1;Times New Roman,10,F;Kunde
R=34;1;11;1;Times New Roman,10,F;Netto1
R=45;1;11;1;Times New Roman,10,F;Ust1 $[mUst1]%
R=56;1;11;1;Times New Roman,10,F;Netto2
R=67;1;11;1;Times New Roman,10,F;Ust2 $[mUst2]%
R=78;1;11;1;Times New Roman,10,F;Br. DEM
R=89;1;11;1;Times New Roman,10,F;Br. EUR

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

##Uebertrag
* Das ist die Ausgabedefinition fuer den Uebertrag von vorher
CY=1
L=20;0;10;1;Arial,10,N;šbertrag
R=34;0;11;1;Arial,10,N;$[mSuN1]
R=45;0;11;1;Arial,10,N;$[mSuU1]
R=56;0;11;1;Arial,10,N;$[mSuN2]
R=67;0;11;1;Arial,10,N;$[mSuU2]
R=78;0;11;1;Arial,10,N;$[mSuBM]
R=89;0;11;1;Arial,10,N;$[mSuBE]
#end

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

L=0;0;11;1;Arial,10,N;$[mNummer]
L=11;0;9;1;Arial,10,N;$[mDatum]
L=20;0;14;1;Arial,10,N;$[mKunde]
R=34;0;11;1;Arial,10,N;$[mN1]
R=45;0;11;1;Arial,10,N;$[mU1]
R=56;0;11;1;Arial,10,N;$[mN2]
R=67;0;11;1;Arial,10,N;$[mU2]
R=78;0;11;1;Arial,10,N;$[mBM]
R=89;0;11;1;Arial,10,N;$[mBE]
#end

##FussSeite
* Das ist die Ausgabedefinition fuer den allgemeinen Seitenfuss 
CY=4
L=0;0;100;1; ;\-

L=24;1;10;1;Times New Roman,10,F;šbertrag
R=34;1;11;1;Times New Roman,10,F;Netto1
R=45;1;11;1;Times New Roman,10,F;Ust1 $[mUst1]%
R=56;1;11;1;Times New Roman,10,F;Netto2
R=67;1;11;1;Times New Roman,10,F;Ust2 $[mUst2]%
R=78;1;11;1;Times New Roman,10,F;Br. DEM
R=89;1;11;1;Times New Roman,10,F;Br. EUR

L=24;2;10;1;Times New Roman,10,F;$[mWaehr]
R=34;2;11;1;Times New Roman,10,F;$[mSuN1]
R=45;2;11;1;Times New Roman,10,F;$[mSuU1]
R=56;2;11;1;Times New Roman,10,F;$[mSuN2]
R=67;2;11;1;Times New Roman,10,F;$[mSuU2]
R=78;2;11;1;Times New Roman,10,F;$[mSuBM]
R=89;2;11;1;Times New Roman,10,F;$[mSuBE]

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

##FussBericht
* Das ist die Ausgabedefinition fuer den letzten Seitenfuss 
CY=4
L=0;0;100;1; ;\-

L=24;1;10;1;Times New Roman,10,F;Summen
R=34;1;11;1;Times New Roman,10,F;Netto1
R=45;1;11;1;Times New Roman,10,F;Ust1 $[mUst1]%
R=56;1;11;1;Times New Roman,10,F;Netto2
R=67;1;11;1;Times New Roman,10,F;Ust2 $[mUst2]%
R=78;1;11;1;Times New Roman,10,F;Br. DEM
R=89;1;11;1;Times New Roman,10,F;Br. EUR

L=24;2;10;1;Times New Roman,10,F;$[mWaehr]
R=34;2;11;1;Times New Roman,10,F;$[mSuN1]
R=45;2;11;1;Times New Roman,10,F;$[mSuU1]
R=56;2;11;1;Times New Roman,10,F;$[mSuN2]
R=67;2;11;1;Times New Roman,10,F;$[mSuU2]
R=78;2;11;1;Times New Roman,10,F;$[mSuBM]
R=89;2;11;1;Times New Roman,10,F;$[mSuBE]

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