*Saldenliste_Sachkonten
#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 mSumme(d,8,2)
VAR mTop(L,1,0)

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

*-------------------------------------------------------------------------
* Prüfen der Übergabe von Filtervariablen

IFNOT ISVAR(DebKonto)
  VAR DebKonto(u,8,0)
IF EMPTY(DebKonto)
  DebKonto=1400

IFNOT ISVAR(KreKonto)
  VAR KreKonto(u,8,0)
IF EMPTY(KreKonto)
  KreKonto=1600

* Code für den
* Berichtsablauf ein.

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

*-----------------------------------------------------------------------------
* Vorbereiten der Ausgabe 
* Initialisierung der Drucksteuerdaten
OUT INITPAGESIZE
OUT STARTJOB $[RepTitel]
OUT TRANSPARENT
OUT STARTPAGE
VAR mFillState(L,1,0)
mFillState=1
Zeile=0
SUB #subFILLBK

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;Arial,10,N;$[recADR.NAME1] $[recADR.NAME2]
L=0;1;50;1;Arial,10,N;$[recADR.STRASSE]
L=0,0;2,0;50,0;1,0;Arial,10,N;$[recADR.PLZORT]
R=50;0;50;1;Arial,10,F;$[RepTitel]
R=85;1;15;1;Arial,10,N;$[Heute]
R=85;2;15;1;Arial,10,N;Seite -$[Seite]-

#end

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

#end

##KopfDetail
CY=3
L=0;0;100;1; ;\-
L=0,0;1,0;10,0;1,0;Arial,10,F;Konto
L=10,0;1,0;54,0;1,0;Arial,10,F;Bezeichnung
L=64,0;1,0;12,0;1,0;Arial,10,F;gebucht am
R=88,0;1,0;12,0;1,0;Arial,10,F;Saldo
L=0;2;100;1; ;\-
R=76,0;1,0;12,0;1,0;Arial,10,F;Umsatz

#end

##outUebertr
CY=1
R=88,0;0,0;12,0;1,0;Arial,10,F;$[mSumme]
L=10,0;0,0;20,0;1,0;Arial,10,F;Summe Salden Übertrag

#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
SUB #subFILLBK
OUT ##KopfSeite
OUT ##KopfDetail
OUT ##outUebertr
mFillState=1
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

##outMAIN
CY=1
L=0,0;0,0;10,0;1,0;Arial,10,N;$[recMAIN.Konto]
L=10,0;0,0;54,0;1,0;Arial,10,N;$[recMAIN.Name]
R=88,0;0,0;12,0;1,0;Arial,10,F;$[mcSaldo]
R=76,0;0,0;12,0;1,0;Arial,10,N;$[recSALD.SaldoUms]
L=64,0;0,0;12,0;1,0;Arial,10,N;$[recSALD.Tag].$[recSALD.Monat].$[recSALD.Jahr]

#end

##outLine
CY=1
L=0;0;100;1; ;\-

#end

##outLineFeed
CY=1

#end

#subNKonto
* Unterprogramm von ReportMain/loopMAIN
* Ausgabe für Normales Sachkonto

SUB #CheckPage
SUB #subFILL01
OUT ##outMAIN
mTop=0
mSumme= $[mSumme] + $[recSALD.SaldoNeu]

RETURN


#end

#loopDebi
* Unterprgramm von ReportMain/loopMAIN/subDSammel
* Datensatzschleife recPKonto

REC recPSALD(BUCHUNGSZEILEN,100,9)$[recPKonto.Typ<1]$[recPKonto.Konto<8]
mnPSaldo=  $[mnPSaldo]  + $[recPSALD.SaldoNeu]
mnPUmsatz= $[mnPUmsatz] + $[recPSALD.SaldoUms]

RETURN

#end

##outDKonto
* Ausgabe für ReportMain/loopMAIN/subDSammel
CY=1
L=0,0;0,0;10,0;1,0;Arial,10,N;$[recMAIN.Konto]/1
L=10,0;0,0;54,0;1,0;Arial,10,N;$[recMAIN.Name]
R=88,0;0,0;12,0;1,0;Arial,10,N;$[mcSaldo]
R=76,0;0,0;12,0;1,0;Arial,10,N;$[recSALD.SaldoUms]

#end

##outDSumme
CY=1
L=0,0;0,0;10,0;1,0;Arial,10,N;$[recMAIN.Konto]
L=10,0;0,0;54,0;1,0;Arial,10,N;Summe Sammelkonto Debitoren
R=88,0;0,0;12,0;1,0;Arial,10,F;$[mcPSaldo]

#end

##outDSammel
* Ausgabe für ReportMain/loopMAIN/subDSammel
CY=1
L=0,0;0,0;10,0;1,0;Arial,10,N;$[recMAIN.Konto]/2
L=10,0;0,0;54,0;1,0;Arial,10,N;Summe Debitoren
R=88,0;0,0;12,0;1,0;Arial,10,N;$[mcPSaldo]
R=76,0;0,0;12,0;1,0;Arial,10,N;$[mnPUmsatz]

#end

#subDSammel
* Unterprogramm von ReportMain/loopMAIN
* Ausgabe für Sammelkonto Debitoren

* Salden der Personenkonten ermitteln
VAR mnPSaldo(N,12,2)
VAR mnPUmsatz(N,12,2)
VAR mcPSaldo(C,20,0)
VAR mnPSaldo2(N,12,2)
REC recPKonto(KONTENPLAN,5,2)P 
LOOP recPKonto(#loopDebi)

IF BOOL(($[mnPSaldo]) < (0))
  mnPSaldo2=0.00 - $[mnPSaldo]
ELSE
  mnPSaldo2=$[mnPSaldo]

IF BOOL(($[mnPSaldo]) > (0))
  mcPSaldo=$[mnPSaldo2] H
ELSE
  mcPSaldo=$[mnPSaldo2] S

* Ausgabe für Konto selbst
* Werte sind bereits in Loop-Main Ermittelt worden
SUB #CheckPage
SUB #subFILL01
OUT ##outDKonto
mTop=0
mSumme= $[mSumme] + $[recSALD.SaldoNeu]

* Ausgabe der Saldensumme Personen
SUB #CheckPage
SUB #subFILL01
OUT ##outDSammel
mTop=0
mSumme= $[mSumme] + $[mnPSaldo]


* Ausgabe und Formatierung der Summenzeile
mnPSaldo= $[mnPSaldo] + $[recSALD.SaldoNeu]

IF BOOL(($[mnPSaldo]) < (0))
  mnPSaldo2=0.00 - $[mnPSaldo]
ELSE
  mnPSaldo=$[mnPSaldo]

IF BOOL(($[mnPSaldo]) > (0))
  mcPSaldo=$[mnPSaldo2] H
ELSE
  mcPSaldo=$[mnPSaldo2] S
SUB #CheckPage
SUB #subFILL01
OUT ##outDSumme
mTop=0

RETURN

#end

#loopKred
* Unterprgramm von ReportMain/loopMAIN/subKSammel
* Datensatzschleife recPKonto

REC recPSALD(BUCHUNGSZEILEN,100,9)$[recPKonto.Typ<1]$[recPKonto.Konto<8]
mnPSaldo=  $[mnPSaldo]  + $[recPSALD.SaldoNeu]
mnPUmsatz= $[mnPUmsatz] + $[recPSALD.SaldoUms]

RETURN

#end

##outKSammel
CY=1
L=0,0;0,0;10,0;1,0;Arial,10,N;$[recMAIN.Konto]/2
L=10,0;0,0;54,0;1,0;Arial,10,N;Summe Kreditoren
R=88,0;0,0;12,0;1,0;Arial,10,N;$[mcPSaldo]
R=76,0;0,0;12,0;1,0;Arial,10,N;$[mnPUmsatz]

#end

##outKKonto
* Ausgabe für ReportMain/loopMAIN/subKSammel
CY=1
L=0,0;0,0;10,0;1,0;Arial,10,N;$[recMAIN.Konto]/1
L=10,0;0,0;54,0;1,0;Arial,10,N;$[recMAIN.Name]
R=88,0;0,0;12,0;1,0;Arial,10,N;$[mcSaldo]
R=76,0;0,0;12,0;1,0;Arial,10,N;$[recSALD.SaldoUms]

#end

##outKSumme
CY=1
L=0,0;0,0;10,0;1,0;Arial,10,N;$[recMAIN.Konto]
L=10,0;0,0;54,0;1,0;Arial,10,N;Summe Sammelkonto Kreditoren
R=88,0;0,0;12,0;1,0;Arial,10,F;$[mcPSaldo]

#end

#subKSammel
* Unterprogramm von ReportMain/loopMAIN
* Ausgabe für Sammelkonto Kreditoren

* Salden der Personenkonten ermitteln
VAR mnPSaldo(N,12,2)
VAR mnPUmsatz(N,12,2)
VAR mcPSaldo(C,20,0)
VAR mnPSaldo2(N,12,2)
REC recPKonto(KONTENPLAN,5,2)PL
LOOP recPKonto(#loopKred)

IF BOOL(($[mnPSaldo]) < (0))
  mnPSaldo2=0.00 - $[mnPSaldo]
ELSE
  mnPSaldo2=$[mnPSaldo]

IF BOOL(($[mnPSaldo]) > (0))
  mcPSaldo=$[mnPSaldo2] H
ELSE
  mcPSaldo=$[mnPSaldo2] S

* Ausgabe für Konto selbst
* Werte sind bereits in Loop-Main Ermittelt worden
SUB #CheckPage
SUB #subFILL01
OUT ##outKKonto
mTop=0
mSumme= $[mSumme] + $[recSALD.SaldoNeu]

* Ausgabe der Saldensumme Personen
SUB #CheckPage
SUB #subFILL01
OUT ##outKSammel
mTop=0
mSumme= $[mSumme] + $[mnPSaldo]


* Ausgabe und Formatierung der Summenzeile
mnPSaldo= $[mnPSaldo] + $[recSALD.SaldoNeu]

IF BOOL(($[mnPSaldo]) < (0))
  mnPSaldo2=0.00 - $[mnPSaldo]
ELSE
  mnPSaldo=$[mnPSaldo]

IF BOOL(($[mnPSaldo]) > (0))
  mcPSaldo=$[mnPSaldo2] H
ELSE
  mcPSaldo=$[mnPSaldo2] S
SUB #CheckPage
SUB #subFILL01
OUT ##outKSumme
mTop=0

RETURN


#end

#loopMAIN
* Unterprogramm von ReportMain
* Datensatzschleife recMAIN

* letzten Buchungssatz holen
* -----------------------------------------------------------------------------
REC recSALD(BUCHUNGSZEILEN,100,9)$[recMAIN.Typ<1]$[recMAIN.Konto<8]
VAR mcSaldo(C,20,0)
VAR mnSaldo(N,12,2)

IF BOOL(($[recSALD.SaldoNeu]) < (0))
  mnSaldo=0.00 - $[recSALD.SaldoNeu]
ELSE
  mnSaldo=$[recSALD.SaldoNeu]

IF BOOL(($[recSALD.SaldoNeu]) > (0))
  mcSaldo=$[mnSaldo] H
ELSE
  mcSaldo=$[mnSaldo] S

* =========================== Abfrage Sammelkonten
IF CMP(recMAIN.Konto,=)$[DebKonto]
  GOTO :DebSamm

IF CMP(recMAIN.Konto,=)$[KreKonto]
  GOTO :KreSamm

* =========================== Abfrage bewegtes Konto
IFNOT CMP(recSALD.Konto,=)$[recMAIN.Konto]
  RETURN

* Daten ausgeben für bebuchte normale Sachkonten
* -----------------------------------------------------------------------------
SUB #subNKonto
RETURN

* Daten ausgeben für Debitorensammelkonto
* -----------------------------------------------------------------------------
:DebSamm
SUB #subDSammel
RETURN

* Daten ausgeben für Kreditorensammelkonto
* -----------------------------------------------------------------------------
:KreSamm
SUB #subKSammel
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=Saldenliste Sachkonten
Heute=H
RandX=      1,80
RandY=      0,80
SizeX=      17,4
Seite=      1
Zeile=      0
cyZeile=    2.54/$[mLPI]
ZlMax=     61

RETURN

#end

#subFILL01
* Unterprogramm von ReportMain

VAR mFillStart(d,8,2)
mFillStart= $[RandY] + ($[cyZeile] * $[Zeile])

IF BOOL(($[mFillState]) = (1))
  GOTO :DoFill
mFillState=1
RETURN

:DoFill
OUT RGBFILL $[RandX];$[mFillStart];$[SizeX];$[cyZeile];15263976
mFillState=0
RETURN

#end

#subFILLBK
* Papier vergilbt aussehen lassen
RETURN

VAR mFillCX(d,8,2)
VAR mFillCY(d,8,2)
mFillCX= $[RandX] + $[SizeX] + 1,2
mFillCY= ( $[ZlMax] + 20 ) * $[cyZeile]
OUT RGBFILL 0;0;$[mFillCX];$[mFillCY];12774398

RETURN

#end

##FussSeite
CY=3
L=0;0;100;1; ;\-
L=0;2;100;1; ;\-
R=88,0;1,0;12,0;1,0;Arial,10,F;$[mSumme]
L=10,0;1,0;20,0;1,0;Arial,10,F;Summe Salden Übertrag
L=0,0;1,0;10,0;1,0;Arial, 8,N;Liste Nr. 1006

#end

##FussBericht
CY=3
L=0;0;100;1; ;\-
L=0;2;100;1; ;\-
R=88,0;1,0;12,0;1,0;Arial,10,F;$[mSumme]
L=10,0;1,0;20,0;1,0;Arial,10,F;Summe Salden
L=0,0;1,0;10,0;1,0;Arial, 8,N;Liste Nr. 1006

#end

