*Statistik
#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,250,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)

* ------ Anzahl der zeilen für Checkpage
VAR mCheckLns(s,2,0)
mCheckLns=1

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

IFNOT ISVAR(pBelegFlt)
  VAR pBeleg(u,18,0)
IFNOT ISVAR(pProjekt)
  VAR pProjekt(u,8,0)
IFNOT ISVAR(pVonPosNr)
  VAR pVonPosNr(u,20,0)
IFNOT ISVAR(pBisPosNr)
  VAR pBisPosNr(u,20,0)
IFNOT ISVAR(pVonDatum)
  VAR pVonDatum(D,10,0)
IFNOT ISVAR(pBisDatum)
  VAR pBisDatum(D,10,0)

*----------------------------------------------------
VAR cVonDatum(C,10,0)
VAR cBisDatum(C,10,0)
cVonDatum=$[pVonDatum]
IF EMPTY(cVonDatum)
  cVonDatum=00.00.0000
cBisDatum=$[pBisDatum]
IF EMPTY(cBisDatum)
  cBisDatum=99.99.9999
IF CMP(cBisDatum,=)00.00.0000
  cBisDatum=99.99.9999

VAR cDayMon(C,5,0)
VAR cVonDatCmp(C,8,0)
VAR cBisDatCmp(C,8,0)
cDayMon=$[cVonDatum<5]
cVonDatCmp=$[cVonDatum>4]$[cDayMon>2]$[cVonDatum<2]
cDayMon=$[cBisDatum<5]
cBisDatCmp=$[cBisDatum>4]$[cDayMon>2]$[cBisDatum<2]

pProjekt=$[pBelegFlt]
REC recMAIN(BELEGVERZEICHNIS,0,18)$[pBelegFlt<18]

RepTitel=$[cVonDatum]..$[cBisDatum]

VAR mBezNr(C,30,0)
IF BOOL($[bUseArtNr])
  mBezNr=Artikel Nr.
ELSE
  mBezNr=Position Nr.


* Code für den
* Berichtsablauf ein.

SUB #subPaperDefs
* TODO 
* fügen Sie hier eine Datensatzvariable
* mit dem Namen recMAIN ein.
* Diese Variable beinhaltet die Leittabelle.

*-----------------------------------------------------------------------------
* 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)
SUB #loopMAIN


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


#end

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

#end

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

#end

##KopfDetail
CY=3
L=0;0;100;1; ;\-
L=0,0;1,0;30,0;1,0;Arial,8,F;$[mBezNr]
L=30,0;1,0;70,0;1,0;Arial,8,F;Bezeichnung
L=0;2;100;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
OUT CALCBORDER
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] - ($[mCheckLns] - 1)))
   SUB #Fuss
* Kopfbereich ausgeben, wenn erste Zeile erreicht
IF BOOL($[Zeile] = 0)
   SUB #Kopf
mCheckLns=1

#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=8

Heute=H
RandX=      1,80
RandY=      0,80
SizeX=      18,0
Seite=      1
Zeile=      0
cyZeile=    2.54/$[mLPI]
ZlMax=     (26.5/$[cyZeile]) + 2

RETURN

#end

##outCurrPos
CY=1
L=0,0;0,0;12,0;1,0;Arial,8,N;$[recCurrPos.PosNr]
R=12,0;0,0;11,0;1,0;Arial,8,N;$[recCurrPos.Menge]
L=24,0;0,0;15,0;1,0;Arial,8,N;$[recCurrPos.ArtNr]
L=40,0;0,0;24,0;1,0;Arial,8,N;$[recCurrPos.Ktxt1]
R=64,0;0,0;12,0;1,0;Arial,8,N;$[mEkEP!]
R=76,0;0,0;12,0;1,0;Arial,8,N;$[mVkEP!]
R=88,0;0,0;12,0;1,0;Arial,8,N;$[mVkDB!]

#end

##outPosHdr
CY=1
L=0,0;0,0;30,0;1,0;Arial,10,F;$[mCurrNr]
L=30,0;0,0;70,0;1,0;Arial,10,F;$[recCurrPos.Ktxt1] $[recCurrPos.Ktxt2] $[recCurrPos.Ktxt3]

#end

##outBelPos
* Ausgabe für ReportMain/loopMAIN/loopPos0/loopPos1/subCurrPos/loopBeleg/loopBelPos
CY=1
L=0,0;0,0;30,0;1,0;Arial,10,N;$[recBeleg.BELARTTEXT] Nr. $[recBeleg.BELEGNR]
L=30,0;0,0;15,0;1,0;Arial,10,N;$[mMenge] $[recBelPos.Me]

#end

#loopBelPos
* Unterprgramm von ReportMain/loopMAIN/loopPos0/loopPos1/subCurrPos/loopBeleg
* Datensatzschleife recBelPos

IF BOOL($[recBelPos.Bedarf] | $[recBelPos.Alternativ] | $[recBelPos.Entfaellt])
  RETURN
IFNOT BOOL(($[recBelPos.SatzArt] = 6) | ($[recBelPos.SatzArt] = 7))
  RETURN

IF BOOL($[mCntPos] > 0)
  GOTO :NotFirst
mCheckLns=4
SUB #CheckPage
OUT ##outPosHdr
:NotFirst


VAR mMenge(N,14,3)
mMenge=$[recBelPos.Menge]
IF BOOL($[recBeleg.BELEGART] = 2)
  mMenge=  0 - $[mMenge]

SUB #CheckPage
OUT ##outBelPos

mCntPos=$[mCntPos] + 1
mMengePos= $[mMengePos] + $[mMenge]

RETURN

#end

#loopBeleg
* Unterprgramm von ReportMain/loopMAIN/loopPos0/loopPos1/subCurrPos
* Datensatzschleife recBeleg
* alle Beleg des Projektes durchgehen
* und Datumsfilter auswerten. Dann Position suchen

IFNOT BOOL(($[recBeleg.BELEGART] >= 1) & ($[recBeleg.BELEGART] <= 9))
  RETURN

IF BOOL(($[pbBA1] = 0) & ($[recBeleg.BELEGART] = 1))
  RETURN
IF BOOL(($[pbBA2] = 0) & ($[recBeleg.BELEGART] = 2))
  RETURN
IF BOOL(($[pbBA3] = 0) & ($[recBeleg.BELEGART] = 3))
  RETURN
IF BOOL(($[pbBA4] = 0) & ($[recBeleg.BELEGART] = 4))
  RETURN
IF BOOL(($[pbBA5] = 0) & ($[recBeleg.BELEGART] = 5))
  RETURN
IF BOOL(($[pbBA6] = 0) & ($[recBeleg.BELEGART] = 6))
  RETURN
IF BOOL(($[pbBA7] = 0) & ($[recBeleg.BELEGART] = 7))
  RETURN
IF BOOL(($[pbBA8] = 0) & ($[recBeleg.BELEGART] = 8))
  RETURN
IF BOOL(($[pbBA9] = 0) & ($[recBeleg.BELEGART] = 9))
  RETURN

* ----------------------- Filter auf Belegart ?  TODO
*IF EMPTY(pBelArt)
*  GOTO :BelArtOk
*IF CMP(pBelArt,=)$[recMAIN.BELEGART<2]
*  GOTO :BelArtOk
*RETURN
*:BelArtOk

* ----------------------- Filter von Belegdatum ?
VAR cDateCmp(C,8,0)
VAR cBelDatum(C,10,0)
cBelDatum=$[recBeleg.TAG>2].$[recBeleg.MONAT>2].$[recBeleg.JAHR>4]
cDayMon=$[cBelDatum<5]
cDateCmp=$[cBelDatum>4]$[cDayMon>2]$[cBelDatum<2]
IF CMP(cDateCmp,<)$[cVonDatCmp]
  RETURN
IF CMP(cDateCmp,>)$[cBisDatCmp]
  RETURN

* -------------------------- Position suchen
IF BOOL($[bUseArtNr])
  REC recBelPos(BELEGPOSITIONEN,2,38)$[recBeleg.PRJNR<8]$[recBeleg.BELEGART<2]$[recBeleg.BELEGNR<8]$[recCurrPos.ArtNr<20]
ELSE
  REC recBelPos(BELEGPOSITIONEN,1,38)$[recBeleg.PRJNR<8]$[recBeleg.BELEGART<2]$[recBeleg.BELEGNR<8]$[recCurrPos.PosNr<20]
LOOP recBelPos(#loopBelPos)

RETURN

#end

##outPosSumme
CY=2
L=0,0;0,0;30,0;1,0;Arial,10,F;Summe
L=30,0;0,0;15,0;1,0;Arial,10,F;$[mMengePos] $[recCurrPos.Me]

#end

#subCurrPos
* Unterprgramm von ReportMain/loopMAIN/loopPos0/loopPos1
* aktuellen Datensatz des Leitbeleges auswerten

VAR mCurrNr(u,20,0)
IF BOOL($[bUseArtNr])
  mCurrNr=$[recCurrPos.ArtNr]
ELSE
  mCurrNr=$[recCurrPos.PosNr]

IF EMPTY(mCurrNr)
  RETURN
* =================================================================

VAR mPosNr1(u,22,0)
VAR mPosNr2(u,22,0)

IF EMPTY(pVonPosNr)
  GOTO :EndVonPosNr
mPosNr1=!$[recCurrPos.PosNr<20]!
mPosNr2=!$[pVonPosNr<20]!
IF CMP(mPosNr1,<)$[mPosNr2<22]
  RETURN
:EndVonPosNr

IF EMPTY(pBisPosNr)
  GOTO :EndBisPosNr
mPosNr1=!$[recCurrPos.PosNr<20]!
mPosNr2=!$[pBisPosNr<20]!
IF CMP(mPosNr1,>)$[mPosNr2<22]
  RETURN
:EndBisPosNr

VAR mCntPos(N,4,0)
VAR mMengePos(N,14,3)
REC recBeleg(BELEGVERZEICHNIS,0,8)$[recMAIN.PRJNR<8]
LOOP recBeleg(#loopBeleg)

* hier testen ob Positionen gefunden wurden
IF BOOL($[mCntPos] = 0)
  RETURN
SUB #CheckPage
OUT ##outPosSumme

RETURN

#end

#loopPos1
* Datensatzschleife recPos1 (Ebene 1)

*IF BOOL($[recPos1.Bedarf] | $[recPos1.Alternativ] | $[recPos1.Entfaellt])
*  RETURN

VAR cFilter(u,24,0)
cFilter=$[recPos1.PrjNr<8]$[recPos1.BelArt<2]$[recPos1.BelNr<8]$[recPos1.RefKey<6]

IF BOOL(($[recPos1.SatzArt]) <> (4))
  GOTO :TitelEnd
REC recPos1(BELEGPOSITIONEN,5,24)$[cFilter<24]
LOOP recPos1(#loopPos1)
RETURN
:TitelEnd

IFNOT BOOL(($[recPos1.SatzArt] = 6) | ($[recPos1.SatzArt] = 7))
  RETURN

REC recCurrPos(BELEGPOSITIONEN,3,24)$[cFilter<24]
SUB #subCurrPos
RETURN


#end

#loopPos0
* Datensatzschleife recPos0 (Ebene 0)

IF BOOL(($[recPos0.Ebene]) = 0)
  GOTO :Ebene0
BREAK recPos0
RETURN
*--------------------------------------
:Ebene0
IF BOOL(($[recPos0.SatzArt]) <> 1)
  RETURN

REC recPos1(BELEGPOSITIONEN,5,24)$[recPos0.PrjNr<8]$[recPos0.BelArt<2]$[recPos0.BelNr<8]$[recPos0.RefKey<6]
IF EOF(recPos1)
  RETURN

LOOP recPos1(#loopPos1)
BREAK recPos0
RETURN

#end

#loopMAIN
* Unterprogramm von ReportMain
* Datensatzschleife recMAIN

REC recPos0(BELEGPOSITIONEN,0,18)$[recMAIN.PRJNR<8]$[recMAIN.BELEGART<2]$[recMAIN.BELEGNR]
LOOP recPos0(#loopPos0)

RETURN

#end

##FussSeite
*  Ausgabe fuer den allgemeinen Seitenfuss 
* ausser der letzten Seite
CY=3
L=0;0;100;1; ;\-
L=0,0;1,0;20,0;1,0;Arial,8,N;Liste Nr. 8101
R=20,0;1,0;80,0;1,0;Arial,8,N;Mengen zu $[recMAIN.BELARTTEXT] Nr. $[recMAIN.BELEGNR]
L=0;2;100;1; ;\-

#end

##FussBericht
] Nr. 
L=0;2;100;1; ;\-
n Seitenfuss 
CY=3
L=0;0;100;1; ;\-
L=0,0;1,0;20,0;1,0;Arial,8,N;Liste Nr. 8101
R=20,0;1,0;80,0;1,0;Arial,8,N;Mengen zu $[recMAIN.BELARTTEXT] Nr. $[recMAIN.BELEGNR]
L=0;2;100;1; ;\-

#end

