Export-Events
Formalprüfung
Export der Sachkontenbeschriftungen
Export der Debitorstammdaten
Export der Kreditorstammdaten
Saldoexport
Buchungsexport
Änderung der Sortierung
OnValidateNoSeries
Mit diesem Event haben Sie die Möglichkeit, die Prüfung auf die Nummernserie bzw. der Herkunftscodes bei der Eintragung des Datev Exportpostens zu Beginn des Exports zu manipulieren. Diese Prüfung wird benötigt, um die beiden Felder "Attachment Document Type" (Anhang Belegart) und "Attachment Table Id" (Anhang Tabellen-Id) des Datev Postens zu setzen. Diese werden intern für die weitere Verwendung in der zusätzlichen Buchungsdatenservice Extension verwendet um den Beleganhang zu finden und die DATEV Belegart zu setzen. Wenn diese Felder nicht gefüllt sind, dann wird für die Belege Einkaufsrechnung, Einkaufsgutschrift, Verkaufsrechnung, Verkaufsgutschrift, Servicerechnung und Servicegutschrift nicht nach einem Beleganhang als PDF Datei gesucht und somit auch kein Datensatz für die Übertragung an das DATEV Datencenter in den Buchungsdatenservice eingefügt.
Hintergrund: Im Sachposten gibt es keine Möglichkeit zwischen Einkauf, Verkauf und Service zu unterscheiden. Dies wird benötigt um die Rechnungen bzw. Gutschriften aus diesen Bereichen zu ermitteln. Hierfür wird zunächst über die Nummernserie, die im Sachposten eingetragen ist, in der Debitoren & Verkauf Einr., der Kreditoren & Einkauf Einr. oder der Serviceeinrichtung nach den gebuchten Rechnungs- oder Gutschriftsnr. gesucht und dadurch die beiden genannten Felder gefüllt. Ist in diesen drei Einrichtungen kein Wert ermittelt worden, wird die Herkunftscodeeinrichtung über den Herkunftscode des Sachpostens überprüft. Hier werden die Felder Verkauf, Einkauf oder Service überprüft und danach entsprechend die beiden oben genannten Felder des Datev Exportpostens gefüllt.
Falls bei diesen Prüfungen die beiden Felder nicht gefüllt werden konnten, kann über dieses Event eine individuelle Zuweisung dieser Felder implementiert werden, so dass in der Buchungsdatenservice Extension die Beleganhänge gefunden werden können.
Beispielcode anhand einer Verkaufsrechnung. Die anderen unterstützen Belegarten Verkaufsgutschrift, Einkaufsrechnung und - gutschrift und Servicerechnung und -gutschrift müssen natürlich ebenfalls entsprechend implementiert werden!
[EventSubscriber(ObjectType::Table, Database::"SIEVERS DATEV Entry", 'OnValidateNoSeries', '', false, false)]
local procedure OnValidateNoSeriesInSNCDatevEntry(
var SNCDatevEntry: Record "SIEVERS DATEV Entry";
var IsHandled: Boolean
)
var
SalesReceivablesSetup: Record "Sales & Receivables Setup";
SourceCode: Record "Source Code";
SourceCodeSetup: Record "Source Code Setup";
begin
IsHandled := true;
if SNCDatevEntry."No. Series" <> '' then
case SNCDatevEntry."Document Type" of
SNCDatevEntry."Document Type"::Invoice:
begin
// Zunächst die Zuweisung über die Nummernserie durchführen.
if SalesReceivablesSetup.Get() then;
case SNCDatevEntry."No. Series" of
SalesReceivablesSetup."Posted Invoice Nos.":
begin
SNCDatevEntry."Attachment Document Type" := SNCDatevEntry."Attachment Document Type"::"Posted Sales Invoice";
SNCDatevEntry."Attachment Table Id" := Database::"Sales Invoice Header";
end;
end;
if (SNCDatevEntry."Attachment Document Type" = SNCDatevEntry."Attachment Document Type"::" ") and (SNCDatevEntry."Attachment Table Id" = 0) then
// Wenn die Zuweisung nicht durchgeführt werden konnte, dann über die Herkunftscode Einrichtung versuchen.
if SourceCode.Get(SNCDatevEntry."Source Code") then
if SourceCodeSetup.Get() then
case SourceCode.Code of
SourceCodeSetup.Sales:
begin
SNCDatevEntry."Attachment Document Type" := SNCDatevEntry."Attachment Document Type"::"Posted Sales Invoice";
SNCDatevEntry."Attachment Table Id" := Database::"Sales Invoice Header";
end;
end;
end;
end;
end;
OnBeforeWriteExportEntryToDatevFile (ab BC 14)
Mit diesem Event haben Sie die Möglichkeit DATEV Posten direkt vor dem Export zu manipulieren. Dadurch können Sie beispielsweise verhindern, dass bestimmte Posten in die Datei geschrieben oder für die XML Online Schnittstelle erzeugt werden.
Beispielcode:
[EventSubscriber(ObjectType::Codeunit, Codeunit::"SIEVERS DATEV Export Functions", 'OnBeforeWriteExportEntryToDatevFile', '', false, false)]
local procedure OnBeforeWriteExportEntryToDatevFile(DatevSetup: Record "SIEVERS DATEV Setup"; var SNCDatevEntry: Record "SIEVERS DATEV Entry"; var Skip: Boolean)
begin
// Durch dieses Event können die Datev Posten direkt vor dem Schreiben in die Datei manipuliert werden.
case SNCDatevEntry."Gen. Posting Type" of
// Buchungsart Einkauf
SNCDatevEntry."Gen. Posting Type"::Purchase:
case
SNCDatevEntry."Document Type" of
// EK-Rechnung
SNCDatevEntry."Document Type"::Invoice:
begin
end;
SNCDatevEntry."Document Type"::"Credit Memo":
// EK-Gutschrift
begin
end;
end;
// Buchungsart Verkauf
SNCDatevEntry."Gen. Posting Type"::Sale:
case
SNCDatevEntry."Document Type" of
// VK-Rechnung
SNCDatevEntry."Document Type"::Invoice:
begin
end;
// VK-Gutschrift
SNCDatevEntry."Document Type"::"Credit Memo":
begin
end;
end;
end;
end;
Achtung
Dieses Event ist ab NAV 2018 und älter nicht vollständig nutzbar, da die Menge der Felder die maximal mögliche Menge übersteigt. Sie können das Event zwar verwenden, aber es sind nur die benötigten Felder in den DATEV Exportposten vorhanden.
OnPreProcessing (Ab Nav 2016)
Mit diesem Event können Sie die Formalprüfung vor dem Export ausschalten.
local procedure OnPreProcessing(var NoFormalCheck: Boolean; var DeleteComment: Boolean; ExitExportWithNoGLEntries: Boolean; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
Wird die Variable NoFormalCheck auf true gesetzt, dann wird die Formalprüfung nicht durchgeführt. Diese wird generell nur ausgeführt, wenn entweder Debitor- oder Kreditorstammdaten oder Buchungen exportiert werden sollen. Bei einem Saldoexport oder einem Export der Sachkontenbeschriftungen findet keine Formalprüfung statt.
OnPreDataItemGLAccount (Ab Nav 2016)
Mit diesem Event können Sie vor dem Export die Sachkonten filtern.
local procedure OnPreDateItemGLAccount(var GLAccount: Record "G/L Account"; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnBeforeExportGLAccount (Ab Nav 2016)
In der Schleife zu jeder Sachkonto kann mittels des Skip Parameters ein Sachkonto übergangen werden oder es können vor dem Export Daten des Sachkontos ergänzt oder verändert werden:
local procedure OnBeforeExportGLAccount(var GLAccount: Record "G/L Account"; var Skip: Boolean; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnPreDataItemCustomer (Ab Nav 2016)
Vor dem Export können hiermit die Debitoren gefiltert werden.
local procedure OnPreDataItemCustomer(var Customer: Record Customer; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnBeforeExportCustomer (Ab Nav 2016)
In der Schleife zu jedem Debitor kann mittels des Skip-Parameters ein Debitor übergangen werden oder es können vor dem Export Daten des Debitors ergänzt oder verändert werden. Das gilt nur für die Daten, die bei dem Export auch standardmäßig übertragen werden. Wenn Sie Daten übertragen möchten, die nicht standardmäßig von uns übertragen werden, abonnieren Sie das Event OnBeforeWriteCustomerToDatevFile.
local procedure OnBeforeExportCustomer(var Customer: Record Customer; var Skip: Boolean; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnPreDataItemVendor (Ab Nav 2016)
Vor dem Export können hiermit die Kreditoren gefiltert werden.
local procedure OnPreDataItemVendor(var Vendor: Record Vendor; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnBeforeExportVendor (Ab Nav 2016)
In der Schleife zu jedem Kreditor kann mittels des Skip-Parameters ein Kreditor übergangen werden oder es können vor dem Export Daten des Kreditor ergänzt oder verändert werden. Das gilt nur für die Daten, die bei dem Export auch standardmäßig übertragen werden. Wenn Sie Daten übertragen möchten, die nicht standardmäßig von uns übertragen werden, abonnieren Sie das Event OnBeforeWriteVendorToDatevFile.
local procedure OnBeforeExportVendor(var Vendor: Record Vendor; var Skip: Boolean; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnePreDataItemAccountBalances (Ab Nav 2016)
Vor dem Export können hiermit die Sachkonten-Salden gefiltert werden.
local procedure OnePreDataItemAccountBalances(var GLAccount: Record "G/L Account"; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnBeforeExportAccountBalances (Ab Nav 2016)
In der Schleife zu jedem Sachkonto-Saldo kann mittels des Skip-Parameters ein Sachkonto-Saldo übergangen werden oder es können vor dem Export Daten des Sachkonto-Saldos ergänzt oder verändert werden:
local procedure OnBeforeExportAccountBalances(var GLAccount: Record "G/L Account"; var Skip: Boolean; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnFilterCustomerLedgerEntryForAccountBalances (Ab Nav 2016)
OnFilterVendorLedgerEntryForAccountBalances (Ab Nav 2016)
Wenn bei einem Saldoexport zusätzlich die Personenkontensalden mit exportiert werden sollen können die Debitor- bzw. Kreditorposten im Vorfeld gefiltert werden:
local procedure OnFilterCustomerLedgerEntryForAccountBalances(var CustLedgerEntry: Record "Cust. Ledger Entry"; Customer: Record Customer; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
local procedure OnFilterVendorLedgerEntryForAccountBalances(var VendLedgerEntry: Record "Vendor Ledger Entry"; Vendor: Record Vendor; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnBeforeExportCustomerLedgerEntryForAccountBalances (Ab Nav 2016)
OnBeforeExportVendorLedgerEntryForAccountBalances (Ab Nav 2016)
In der Schleife zu jedem Debitor- bzw. Kreditorposten kann mittels des Skip Parameters ein Posten übergangen werden oder es können vor dem Export Daten des Postens ergänzt oder verändert werden:
local procedure OnBeforeExportCustomerLedgerEntryForAccountBalances(var CustLedgerEntry: Record "Cust. Ledger Entry"; Customer: Record Customer; var Skip: Boolean; SNCDatevSetup: Record "SIEVERS DATEV Setup"));
begin
end;
local procedure OnBeforeExportVendorLedgerEntryForAccountBalances(var VendLedgerEntry: Record "Vendor Ledger Entry"; Vendor: Record Vendor; var Skip: Boolean; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnPreDataItemGLEntry (Ab Nav 2016)
Vor dem Export können die Sachposten gefiltert werden:
local procedure OnPreDataItemGLEntry(var GLEntry: Record "G/L Entry"; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnAfterGetGLEntry (Ab Nav 2016)
In der Schleife zu jedem Sachposten kann mittels des Skip Parameters ein Posten übergangen werden oder es können vor dem Export Daten des Postens ergänzt oder verändert werden. Das gilt nur für die Daten, die bei dem Export auch standardmäßig übertragen werden.
local procedure OnAfterGetGLEntry(var GLEntry: Record "G/L Entry"; var Skip_par: Boolean; SNCDatevSetup: Record "SIEVERS DATEV Setup");
begin
end;
OnBeforeWriteCustomerToDatevFile (Ab BC 14)
Um Daten beim Debitor anzupassen, die nicht standardmäßig von SIEVERS DATEV übertragen werden, kann dieses Event abonniert werden.
local procedure OnBeforeWriteCustomerToDatevFile(Customer: Record Customer; SNCDatevSetup: Record "SIEVERS DATEV Setup"; CustomerJsonObject: JsonObject)
begin
end;
Beispiel:

Achtung
Bei diesem Event gibt es keine Gültigkeitsprüfung der Daten!
OnBeforeWriteVendorToDatevFile (Ab BC 14)
Um Daten beim Kreditor anzupassen, die nicht standardmäßig von SIEVERS DATEV übertragen werden, kann dieses Event abonniert werden.
local procedure OnBeforeWriteVendorToDatevFile(Vendor: Record Vendor; SNCDatevSetup: Record "SIEVERS DATEV Setup"; VendorJsonObject: JsonObject)
begin
end;
Beispiel:

Achtung
Bei diesem Event gibt es keine Gültigkeitsprüfung der Daten!
OnBeforeInterateDatevExportEntriesBeforeWritingToFile
Mit diesem Event können Sie die Filter und die Sortierung der DATEV-Posten geändert werden, bevor sie in der Datei geschrieben werden.
local procedure OnBeforeInterateDatevExportEntriesBeforeWritingToFile(var SNCDatevEntry: Record "SIEVERS DATEV Entry")
begin
end;