Skip to main content
Skip table of contents

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

CODE
// 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


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.