Event "bei Import der Sachkontenbuchungsdatei"
Event "bei Import der Sachkontenbuchungsdatei"
Der Event wird zwischen dem Einlesen der CSV-Datei im Formular 'Import Sachkontenbuchungen' und dem Einfügen der Buchungsimporte in die DFSKB.
Er dient zur Flexibilisierung der Importschnittstelle.
Nach Ausführung des Events werden in der MemTable, die im Weiteren benutzt werden soll, folgende Felder erwartet:
S/H: Inhalt 'H' kennzeichnet, dass Buchungsrichtung umzukehren ist
Konto
Gegenkonto
Umsatz
Datum: im Datumsformat!
KOST1
Belegfeld 1
Buchungstext
Parameter | Typ | Beschreibung |
---|---|---|
nEventNo | integer | Nummer des Events |
oImportedFileTable: | TBeMemTable | eingelesene Datei in einer MemTable |
oResultingMemTable | TBeMemTable | Rückgabe-MemTable, wenn neue Felder hinzugefügt werden. Dann muss Rückgabewert auf True gesetzt werden! |
cHeaderLine | string | abgetrennte Headerzeile falls die eingelesene Datei DATV-Format hat |
Rückgabewert
Logisch - Rückgabe-MemTable erfolgreich gefüllt? Wenn True, wird Inhalt von oResultingMemTable weiterverarbeitet, sonst die ursprüngliche oImportedFileTable.
Beispiel
// Beispiel prüft die Notwendigkeit der Anpassung und führt diese für einen DATEV-Buchungsstapel an
//################################################################################
// Dieser Event wird beim Einlesen der Datei zum Import von Sachkontenbuchungen
// ausgeführt. Nach erfolgreicher Ausführung des Events werden in
// oResultingMemTable die Spalten erwartet:
// S/H
// Konto
// Gegenkonto
// Umsatz
// Datum (ftDate)
// KOST1
// Belegfeld 1
// Buchungstext
//
// Parameter:
// oImportedFileTable: MemTable mit der eingelesenen Datei
// oResultingMemTable: diese MemTable wird nach dem Event zum Import verwendet
// cHeaderLine: Headerzeile aus Datei bei DATEV Format; sonst leer
//
// Rückgabe: die Rückgabe-MemTable erfolgreich erstellt?
//
//################################################################################
| nEvtNo:P1, oImportedFileTable:P2, oResultingMemTable:P3, cHeaderLine:P4, cYear, oField, cDateString, bModificationDone, cBelegDatum |
//Browse(, oImportedFileTable),
bModificationDone := False,
// prüfen, ob Anpassung notwendig
if not Empty(oImportedFileTable.CbFieldByName('Gegenkonto')) and not Empty(oImportedFileTable.CbFieldByName('Datum')) then
// keine Anpassung notwendig
bModificationDone := False,
else
// wenn die Datei DATEV-Format hat, wurde vor dem Einlesen der Header abgetrennt und ist als cHeaderline verfügbar
if not Empty(cHeaderLine) then
cYear := SubStr(Token(cHeaderline, ';', 15), 1, 4),
endif,
if Empty(cYear) then
cYear := Str(Year(Date())),
MessageDlg('Achtung: Buchungsjahr konnte nicht sicher bestimmt werden. Es wird auf das aktuelle Jahr gesetzt.', mtInformation, mbOK),
endif,
oResultingMemTable.CbBorrowFromDataSet(oImportedFileTable),
oResultingMemTable.CbAddField('Gegenkonto', ftInteger, 0),
oResultingMemTable.CbAddField('Datum', ftDate, 0),
oResultingMemTable.CbOpen(),
oResultingMemTable.CbLoadFromDataset(oImportedFileTable, True),
oImportedFileTable.CbFirst(),
oResultingMemTable.CbFirst(),
while not oImportedFileTable.CbEof
do
oResultingMemTable.CbEdit(),
oField := oImportedFileTable.CbFieldByName('Gegenkonto (ohne BU-Schlüssel)'),
oResultingMemTable:Gegenkonto := AsVariant(oField),
// berücksichtigen, dass dem Belegdatum eine führende Null fehlt
cBelegDatum := oImportedFileTable:Belegdatum,
if Len(cBelegDatum) = 3 then
cDateString := SubStr(oImportedFileTable:Belegdatum, 1, 1) + '.' + SubStr(oImportedFileTable:Belegdatum, 2, 2) + '.' + cYear,
else
cDateString := SubStr(oImportedFileTable:Belegdatum, 1, 2) + '.' + SubStr(oImportedFileTable:Belegdatum, 3, 2) + '.' + cYear,
endif,
oResultingMemTable:Datum := StrToDateTime(cDateString),
oResultingMemTable.CbPost(),
oImportedFileTable.CbNext(),
oResultingMemTable.CbNext(),
end,
bModificationDone := True,
//Browse(, oResultingMemTable),
endif,
bModificationDone