Option
Explicit
Private
prv_objBuchungen()
As
CM_Buchung
Private
prv_lngAnzBuchungen
As
Long
Private
prv_intJahre()
As
Integer
Private
prv_lngJahrStart()
As
Long
Private
prv_lngAnzJahre
As
Long
Private
Sub
Class_Initialize()
prv_lngAnzBuchungen = 0
End
Sub
Private
Sub
Class_Terminate()
Dim
i
As
Long
For
i = 1
To
prv_lngAnzBuchungen
Set
prv_objBuchungen(i) =
Nothing
Next
i
End
Sub
Property
Get
AnzBuchungen()
As
Long
AnzBuchungen = prv_lngAnzBuchungen
End
Property
Property
Get
objBuchungen(lngIndex
As
Long
)
As
CM_Buchung
Set
objBuchungen = prv_objBuchungen(lngIndex)
End
Property
Property
Get
lngAnzJahre()
As
Long
lngAnzJahre = prv_lngAnzJahre
End
Property
Property
Get
intJahre(lngIndex
As
Long
)
intJahre = prv_intJahre(lngIndex)
End
Property
Property
Get
lngJahrEnde(lngIndex
As
Long
)
lngJahrEnde = prv_lngJahrStart(lngIndex)
End
Property
Public
Function
add(datDatum
As
String
, _
dblBetrag
As
String
, _
strInfo
As
String
, _
Optional
blnCheckJahr
As
Boolean
=
True
)
Dim
blnNeuesJahr
As
Boolean
blnNeuesJahr =
False
If
blnCheckJahr
Then
If
prv_lngAnzBuchungen = 0
Then
prv_lngAnzJahre = 1
ReDim
prv_intJahre(1
To
prv_lngAnzJahre)
ReDim
prv_lngJahrStart(1
To
prv_lngAnzJahre)
prv_intJahre(prv_lngAnzJahre) = Year(datDatum)
prv_lngJahrStart(prv_lngAnzJahre) = prv_lngAnzBuchungen + 1
blnNeuesJahr =
True
End
If
If
prv_intJahre(prv_lngAnzJahre) <> Year(datDatum)
Then
prv_lngAnzJahre = prv_lngAnzJahre + 1
ReDim
Preserve
prv_intJahre(1
To
prv_lngAnzJahre)
ReDim
Preserve
prv_lngJahrStart(1
To
prv_lngAnzJahre)
prv_intJahre(prv_lngAnzJahre) = Year(datDatum)
Call
Me
.add(DateSerial(prv_intJahre(prv_lngAnzJahre - 1), 12, 31), 0,
"Zinsen"
,
False
)
prv_lngJahrStart(prv_lngAnzJahre) = prv_lngAnzBuchungen + 1
blnNeuesJahr =
True
End
If
End
If
prv_lngAnzBuchungen = prv_lngAnzBuchungen + 1
ReDim
Preserve
prv_objBuchungen(1
To
prv_lngAnzBuchungen)
Set
prv_objBuchungen(prv_lngAnzBuchungen) =
New
CM_Buchung
With
prv_objBuchungen(prv_lngAnzBuchungen)
.datDatum = datDatum
.dblBetrag = dblBetrag
.strInfo = strInfo
If
blnNeuesJahr
Then
.dblKtoStand = dblBetrag
Else
.dblKtoStand = prv_objBuchungen(prv_lngAnzBuchungen - 1).dblKtoStand + dblBetrag
End
If
End
With
End
Function
Public
Function
insert(lngPos
As
Long
, _
datDatum
As
String
, _
dblBetrag
As
String
, _
strInfo
As
String
)
prv_lngAnzBuchungen = prv_lngAnzBuchungen + 1
ReDim
Preserve
prv_objBuchungen(1
To
prv_lngAnzBuchungen)
Set
prv_objBuchungen(prv_lngAnzBuchungen) =
New
CM_Buchung
Call
shiftRight(lngPos)
With
prv_objBuchungen(lngPos)
.datDatum = datDatum
.dblBetrag = dblBetrag
.strInfo = strInfo
End
With
End
Function
Private
Sub
shiftRight(lngPos
As
Long
)
Dim
objBuchungen
As
CM_Buchung
Dim
i
As
Long
Set
objBuchungen = prv_objBuchungen(prv_lngAnzBuchungen)
For
i = prv_lngAnzBuchungen
To
lngPos + 1
Step
-1
Set
prv_objBuchungen(i) = prv_objBuchungen(i - 1)
Next
i
Set
prv_objBuchungen(lngPos) = objBuchungen
Set
objBuchungen =
Nothing
End
Sub