Integration der BAUFI-Tools in Anwendungen

 Datentypen

Wir verwenden in den Datenstrukturen ausschließlich unter Windows gültige Typen, d.h. diese Typen werden

in aller Regel von allen Programmen verstanden. Hierzu zählen folgende Typen:

- double : 8 Byte große Gleitkommazahl
- integer : 4 Byte große Ganzzahl mit Vorzeichen
- longint : wie integer
- word : 2 Byte große Ganzzahl ohne Vorzeichen

Ein Datum wird in der Form jjjjmmtt als Longint-Zahl übergeben. Aus diesen Typen bilden wir zusammenhängende

Datenmengen, sogenannte Strukturen. Über diese Strukturen kommunizieren Sie mit den BAUFI-Tools.

 Vorgehensweise

Sie füllen die Eingabestrukturen mit Werten, übergeben diese an die BAUFI-Tools und lesen nach einer Berechnung die Ergebnisstruktur aus. Die Strukturdefinitionen und Konstanten stehen in einer von uns gelieferten Schnittstellendatei (Interface). Sie

passen diese Schnittstellendatei an Ihre Programmiersprache an, binden sie in Ihre Anwendung ein und können dann bereits mit den BAUFI-Tools arbeiten.

Grob gesehen sieht ein Algorithmus in Ihrer Anwendung wie folgt aus:

Finanzierungsverlauf erstellen;

Objektstruktur setzen;
Kundenstruktur setzen;

BAUFI-Tools initialisieren;

Finanzierungsverlauf an die BAUFI-Tools übergeben;

Objektstruktur an die BAUFI-Tools übergeben;
Kundenstruktur an die BAUFI-Tools übergeben;

gewünschte Berechnung ausführen;

Finanzierungsverlauf aus den BAUFI-Tools auslesen;

BAUFI-Tools zurücksetzen;

 Berechnung einer Finanzierung

Im folgenden zeigen wir anhand eines Beispiels die Vorgehensweise konkret auf. Aufgrund der Datenfülle belegen wir nur die wichtigen Datenfelder. "BAUFI" deutet auf eine Funktion der BAUFI-Tools hin. Die Variable KeinFehler dient der Fehlerabfrage.

Eine Kreditsumme über 300.000 soll vom 30.01.2002 bis zum 30.12.2010 für die Finanzierung eines selbstgenutzten Heims verwendet werden. Der Kunde ist verheiratet, hat zwei Kinder, die bis

2005 bzw. 2012 steuerlich "ansetzbar" sind. Die Voraussetzungen zum Erhalt der Eigenheimzulage sind erfüllt.

Wir erzeugen einen fiktiven Zahlungsstrom. Die Struktur BauFiVerlaufIORec enthält eine Komponente KontoRec mit dem Finanzierungsverlauf. Hierin wiederum finden wir u. a. die für dieses Beispiel wichtigen Felder TilgUmsatz, TilgAuszahl, TilgSaldo und LfdDatum (Datum!).


KeinFehler:=_YES;
i:=2002;
solange (i <= 2010) UND (KeinFehler = _YES)
     wenn (i = 2002)
          BauFiVerlaufIORec.KontoRec.TilgAuszahl := 300000
     ansonsten
     BauFiVerlaufIORec.KontoRec.TilgAuszahl := 0;
     BauFiVerlaufIORec.KontoRec.TilgUmsatz := 12000;
     BauFiVerlaufIORec.KontoRec.TilgZinsen := 6000;
     Saldo := BauFiVerlaufIORec.KontoRec.TilgSaldo - 
     BauFiVerlaufIORec.KontoRec.TilgUmsatz + 
     BauFiVerlaufIORec.KontoRec.TilgZinsen;
     BauFiVerlaufIORec.KontoRec.TilgSaldo := Saldo;
     
     BauFiVerlaufIORec.KontoRec.LfdDatum := i*10000 + 12*100 + 30;
 
     KeinFehler:=BAUFI.NeuerBauFiVorgang(BauFiVerlaufIORec);

     i := i + 1;


Als nächstes weisen wir den Objektangaben BauFiObjtAngabenIORec Werte an
ausgewählten Stellen zu. Die Struktur umfasst weit mehr Felder.

BauFiObjtAngabenIORec.ObjektArt := OA_ETW; // Eigentumswohnung

BauFiObjtAngabenIORec.Massnahme := OM_NEUBAU; // zu finanz. Maßnahme
BauFiObjtAngabenIORec.KaufDatum := 20011017; // Erwerbsdatum
BauFiObjtAngabenIORec.ObjektDatum := 20020630; // Erstellungsdatum

BauFiObjtAngabenIORec.WohnFLSelbst := 100; // Wohnfläche des selbstgenutzten Teil
BauFiObjtAngabenIORec.EZDatumSelbst := 20021030; // Einzugsdatum f. selbstgenutzten Teil

BauFiObjtAngabenIORec.AbschrArtSelb := AB_ZulaNeu; // Eigenheimzulage
BauFiObjtAngabenIORec.AbschrSatzSelb := ... // Zeiger auf ein Feld mit den jährl.
// Abschreibungssätzen; dieses Feld
// wird in Abhängigkeit der gewählten
// Abschreibungsform erzeugt

BauFiObjtAngabenIORec.GrdstueckKost := 0;
BauFiObjtAngabenIORec.GebaeudeKost := 300000; // Gebäudeherstellungskosten

BauFiObjtAngabenIORec.GrdErwStSatz := 0.035; // Grunderwerbssteuersatz
BauFiObjtAngabenIORec.GrdbuchSatz := 0.015; // Grundbucheintragungssatz
BauFiObjtAngabenIORec.MaklerSatz := 0.0; // Maklergebühr
...


Schließlich fehlen noch die Kundenangaben BauFiKundAngabenIORec, denen wir ebenfalls 
Werte an ausgewählten Stellen zuweisen. Eine Komponente dieser Struktur sind die
Einkommensdaten EKDaten und eine andere die Kinderdaten KinderTab. Die Struktur 
umfasst weit mehr Felder als wir hier setzen.


BauFiKundAngabenIORec.FamStand := FAM_VERH; // Familienstand; FAM_XXX

BauFiKundAngabenIORec.KinderTab[1].GebDatum := 19870907;
BauFiKundAngabenIORec.KinderTab[1].BisJahr := 2005;
BauFiKundAngabenIORec.KinderTab[2].GebDatum := 19920709;
BauFiKundAngabenIORec.KinderTab[2].BisJahr := 2012;
...

BauFiKundAngabenIORec.EKDaten.EinkJahr := 2001;
BauFiKundAngabenIORec.EKDaten.ZuverstEK := 80000;
BauFiKundAngabenIORec.EKDaten.NettoEK := 60000;
BauFiKundAngabenIORec.EKDaten.BruttoEK := 100000;
BauFiKundAngabenIORec.EKDaten.KirchStKunde:= 0.07;
...


Diese Angaben übergeben Sie an die BAUFI-Tools und lesen nach einer Berechnung
den Finanzierungsverlauf wieder aus. In der o. a. Struktur BauFiVerlaufIORec
gibt es die Komponente SteuerRec, die die steuerliche Förderung für jedes Jahr
enthält. Der Quellcode sieht nun wie folgt aus:


// BAUFI-Tools für die Berechnung vorbereiten
BAUFI.InitBauFiTools;

// Kontoverlauf erzeugen und übergeben
Vorgang siehe oben

// Objektangaben setzen
Vorgang siehe oben

// Kundenangaben setzen
Vorgang siehe oben

// Berechnung ausführen
Keinfehler:=BAUFI.KalkBauFiVerlauf(BauFiObjtAngabenIORec,
BauFiKundAngabenIORec,
AR_JAEHRLICH);

// nach erfolgreicher Berechnung den Verlauf wieder auslesen
wenn KeinFehler = _YES
Anzahl := BAUFI.BauFiVorgangAnzahl;
i:=1;
solange (i <= Anzahl) UND (KeinFehler = _YES)
     KeinFehler:=BAUFI.HoleBauFiVorgang(BauFiVerlaufIORec);

     // BauFiVerlaufIORec irgendwo zwischenspeichern

     i := i + 1;


// BAUFI-Tools zurücksetzen
BAUFI.QuitBauFiTools;