Zum Inhalt

Erweiterung der USt-Id Prüfung für eigene Tabellen

(Stand 19.01.2026: für Sanscreen OnPrem ab Version 2.1.7, SaaS ab Version 26.1.2.11)

Zielgruppe

Dieser Abschnitt der Online-Dokumentation gehört nicht mehr zum Benutzer-Handbuch für Anwender von Sanscreen.
Er richtet sich an AL-Entwickler, die die USt-Id Funktionalität für eigene Entitäten nutzen und eine entsprechende Extension entwickeln möchten.
Zum Beispiel für Tabellen in Kunden- oder Branchen-Extensions oder -Apps, die Adressdaten mit einer USt-Id enthalten und geprüft werden sollen.

Standard Funktionalität

Im Standard sind folgende Tabellen für den USt-Id Prüfprozess ausprogrammiert:

  • Customer
  • Vendor
  • Contact
  • "Sales Header"
  • "Purchase Header"

Für diese Tabellen sind folgende Funktionen im Standard enthalten:

  • die "Ampel"-Controls als Infobox in den Listen- und Stammdaten- bzw. Beleg-Pages
  • manuelle Prüfung über die "Ampel"
  • über "Ansicht" den Datensatz in der Liste der Posten anzeigen lassen (hier sind auch "Ship-to Address" und "Order Address" bereits im Standard implementiert)
  • für Belege die Möglichkeit, eine Prüfung bei Freigabe des Beleges durchzuführen

Erweiterungen für eigene Tabellen

"Ampel" für eigene Tabellen ergänzen

Die "Ampel" kann für eigene Tabellen über Page-Extensions eingebaut werden.

Hier ein Beispiel für die Debitor-Karte (Saas App für USt-Id Prüfung):

pageextension 50000 VATCustomerCardExt extends "Customer Card"
{
    // Erweiterung Debitor Karte um USt-Id Factbox

    layout
    {
        addfirst(factboxes)
        {
            part(VATFactbox; "COMVAT - Reg FactBox")
            {
                ApplicationArea = All;
                Caption = 'VAT Validation', Comment = 'USt-Id Prüfung';
                SubPageLink = "Table No." = const(18), "Key Text 1" = field("No.");
                Visible = FactboxVisible;
            }
        }
    }

    trigger OnOpenPage()
    begin
        FactboxVisible := true;  //eigene Setup-Funktion, um die Sichtbarkeit der Factbox zu steuern
    end;

    var
        FactboxVisible: Boolean;
}

Für die OnPrem-Version der USt-Id Prüfung muss die "part"-Zeile wie folgt lauten:

part(CESSFactbox; "CESS - FactBox")

Prüfung für eigene Tabellen ergänzen

Um für die Prüfung die USt-Id und die zugehörigen Adressfelder an die Prüffunktion übergeben zu können, kann über einen Subscriber eine eigene Tabelle zum Befüllen dieser Felder verwendet werden.
Hier ein Beispiel für die Erweiterung um die "Ship-to Address" mit einem selbst ergänzten USt-Id Feld:

[EventSubscriber(ObjectType::Codeunit, Codeunit::"CESS Integration Events", VATValidation_OnCustomTableFillRequestFields, '', true, true)]
local procedure Handle_VATValidation_OnCustomTableFillRequestFields(SourceRecordRef: RecordRef; var VATRegNo: Text[20]; var Name: Text[250]; var Address: Text[250]; var CountryCode: Code[10]; var PostCode: Text[30]; var City: Text[250]; var AdressType: Enum "COMVAT AddressType"; var Handled: Boolean)
var
    ShipToAddress: Record "Ship-to Address";
begin
    if SourceRecordRef.Number <> Database::"Ship-to Address" then
        exit;

    SourceRecordRef.SetTable(ShipToAddress);

    VATRegNo := ShipToAddress."VAT Registration No.";  //oder wie auch immer das ergänzte Feld in der "Ship-to Address" Tabelle heißt
    Name := CopyStr(DelChr(StrSubstNo('%1 %2', ShipToAddress.Name, ShipToAddress."Name 2"), '<>'), 1, MaxStrLen(Name));
    Address := CopyStr(DelChr(StrSubstNo('%1 %2', ShipToAddress.Address, ShipToAddress."Address 2"), '<>'), 1, MaxStrLen(Address));
    CountryCode := ShipToAddress."Country/Region Code";
    PostCode := ShipToAddress."Post Code";
    City := ShipToAddress.City;

    Handled := true;
end;

Damit würden die selbst ergänzte USt-Id und die Standard-Adressfelder aus dem "Ship-to Address" Datensatz an die Prüffunktion übergeben werden.

Bitte daran denken, bei diesem Subscriber "Handled" auf "true" zu setzen.
Andernfalls kommt sinngemäß diese Fehlermeldung: Die Prüfung für Adressen der Tabelle "%1" ist noch nicht implementiert.

"Ansicht" für eigene Tabellen ergänzen

Aus den USt-Id Posten kann der Quelldatensatz mit "Ansicht" direkt angezeigt werden.
Um die "Ansicht" für eigene Tabellen zu erweitern, kann die Anzeige des Datensatzes über einen Subscriber ergänzt werden.
Hier ein Beispiel für die Erweiterung um eine fitkive Tabelle:

[EventSubscriber(ObjectType::Codeunit, Codeunit::"CESS Integration Events", VATValidation_OnCustomTableFillRequestFields, '', true, true)]
local procedure Handle_VATValidation_OnShowSourceRecord(SourceRecordVariant: Variant; Handled: Boolean)
var
    MyTable: Record MyTable;
    _RecordRef: RecordRef;
    _FieldRef: FieldRef;
    SourceType: Integer;
    SourceId: Code[200];
    i: Integer;
begin
    if SourceRecordVariant.IsRecord() then
        _RecordRef.GetTable(SourceRecordVariant)
    else
        _RecordRef := SourceRecordVariant;

    for i := 1 to _RecordRef.FieldCount() do begin
        _FieldRef := _RecordRef.FieldIndex(i);
        if UpperCase(_FieldRef.Name()) = 'SOURCE TYPE' then
            SourceType := _FieldRef.Value();
        if UpperCase(_FieldRef.Name()) = 'SOURCE ID' then
            SourceId := _FieldRef.Value();
    end;
    if (SourceType = 0) or (SourceId = '') then
        exit;

    if SourceType <> Database::MyTable then
        exit;

    MyTable.SetRange("No.", SourceId);
    if not MyTable.IsEmpty() then
        Page.Run(0, MyTable);

    Handled := true;
end;

Bitte daran denken, bei diesem Subscriber "Handled" auf "true" zu setzen.
Andernfalls kommt sinngemäß die Fehlermeldung: Tabelle "%1" kann nicht angezeigt werden. Bitte CU in Funktion "ShowSourceRecord" entsprechend ergänzen.

Automatisierte Prüfung für eigene Belege ergänzen

Eine solche Erweiterung ist bisher nicht möglich.