Einzelnen Beitrag anzeigen

mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: Kontoauszüge automatisch auswerten

  Alt 28. Dez 2015, 07:31
Hallo,

ich mache das seit knapp 2 Jahren so:

Bei jedem Kunden ist eine Standard-Bankverbindung, und wahlweise mehrere zusätzliche Bankverbindungen hinterlegt
Die Kontoauszüge werden in eine Datenbank eingelesen. Aus den nachstehenden Feldern erstelle ich einen MD5-Hash, der im Datensatz mit gespeichert wird, und für die Eindeutigkeit des Datensatzes verwendet wird.
Hintergrund: Es sollte ausgeschlossen werden, dass der User eine Datei mehrfach einliest. Zudem bieten manche Banking-Programme (z.B. Windata) die Option, beim Export den letzten Buchungstag nochmals zu wiederholen.

Felder für den Hash:
Datum : TDateTime; // Auszug-Datum
Valuta : TDateTime; // Valute-Datum
Blz : string[8];
Konto : string[10];
Umsatz : double;
BuchungsText: string[27];
VerwendungsZweck: string[216]; // 8 Verw.Zw. * 27 Zeichen
Auszug : double; // Format: AuszugNummer.Seite
WKennz : string[3];
AG_Name1 : string[27];
AG_Name2 : string[27];
AG_Blz : string[8];
AG_Konto : string[10];
AG_IBAN : string[22];
AG_BIC : string[11];

Wenn die Kontoauszüge in die DB eingelesen wurden, können sie gebucht werden, und werden im Erfolgsfall als gebucht gekennzeichnet. Für das Buchen gibt es eine kleine DB mit Buchungsregeln, die frei definierbar sind, und auf jeden Buchungssatz angewendet werden. Reichen die Regeln nicht aus, oder müssen sie angepasst/verändert werden, ändere ich nur die DB und muss das Programm nicht neu compilieren.

Aktuell läuft das so:

1. Ist eine Rechnungsnummer im Verwendungszweck eindeutig vorhanden? Stichwort Umbrüche bei den Verwendungszwecken.
2. Hat der Kunde (der aus der Rechnungsnummer ermittelt wird) einen Offenen Posten?
3. Passt dieser Offene Posten zum Betrag auf dem Kontoauszug? Dabei wird mögliche Skontierung berücksichtigt. Ist der Betrag höher, wird geprüft (rekursiv) ob der Kunde eventuell mehrere Rechnungen zu einer Zahlung zusammengefasst hat
3. Stimmt die Bankverbindung überein?

Dem Anwender werden dann in einem Buchungsdialog die automatisch ermittelten Daten angezeigt. Stimmen alle Buchungsregeln überein, wird das optisch angezeigt (die Ampel steht auf "grün") und der Anwender kann die Buchung sofort vornehmen. Fehlt z.B. die Bankverbindung, kann diese wahlweise gleich beim Kunden eingetragen werden. Im Gegenzug wird die Kundennummer im entsprechenden Zahlungsvorgang beim Kontoauszug eingetragen. Bereits beim Importieren der Kontoauszüge werden die Kontoauszüge gekennzeichnet, ob die Bankverbindung bereits bekannt ist. Ist eine Bankverbindung mehrfach vorhanden wird im Buchungsdialog darauf hingewiesen, um Fehlbuchungen zu vermeiden.

Dieses Schema wende ich auch bei den Lieferantenrechnungen an, und an der Implementierung für die Personaldaten (Löhne) arbeite ich gerade.

Der Vorteil der DB-Lösung liegt also darin: Sie ist flexibel erweiterbar. Möchte dann ein Anwender zudem die Daten noch an die Buchhaltung übergeben, was ja früher oder später der nächste logische Schritt bei der Verarbeitung der Buchungen ist, so stehen hierzu bereits alle Daten zur Verfügung. Man muss nur noch die Exportfunktion programmieren.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat