Ga naar inhoud

Gegevenswaarde Type: Codeunit

Met de Type: Codeunit kan een waarde uit een tabel individueel worden gedefinieerd. Geprogrammeerde functies, filters en andere dingen kunnen hiervoor worden gebruikt.

Voorbeeld

Wanneer de klant een codeunit gebruikt voor het samenvoegen van regels of een codeunit voor andere logica voor een geboekte verkoopfactuur, dan heeft u ook een codeunit nodig voor eDocuments. Anders is de kans zeer groot dat er een ongeldig XML-bestand wordt aangemaakt voor XInvoice en ZUGFeRD-formaten.

In de voorbeeldcodeunit retourneert de GETFUNCTION-methode de parameterlijst voor de configuratie van de gegevenswaarde.

Info

Deze codeunit moet worden geïmplementeerd binnen een aangepaste extensie.

AL
codeunit 50000 "SIM_XSD Custom Data Value"
{
    TableNo = "SIM_XSD Data Value";

    trigger OnRun()
    var
        LocalRecordSalesInvoiceLine: Record "Sales Invoice Line";
        LocalRecordPurchInvLine: Record "Purch. Inv. Line";
        LocalRecordSIMXSDLinkedData: Record "SIM_XSD Linked Data";
        LocalRecordSIMXSDLinkedDataLine: Record "SIM_XSD Linked Data Line";
        LocalRecordRef: RecordRef;
        LocalParamText: Text;
    begin
        if Rec."Codeunit Function" = '' then
            LocalParamText := 'GETFUNCTIONS'
        else
            LocalParamText := Rec."Codeunit Function";

        case LocalParamText of
            'GETFUNCTIONS':
                Rec."Function List" := 'SalesInvoiceLine_CAT,PurchInvLine_CAT';
            'SalesInvoiceLine_CAT':
                begin
                    if not LocalRecordRef.Get(Rec."Codeunit Record ID") then
                        Error('Record bestaat niet.');

                    if not LocalRecordSIMXSDLinkedData.Get('CATEGORY') then
                        Error('Gekoppelde gegevens bestaan niet.');

                    if LocalRecordRef.Number <> 113 then
                        Error('Verkeerde tabel');

                    LocalRecordRef.SetTable(LocalRecordSalesInvoiceLine);

                    if LocalRecordSalesInvoiceLine."VAT Bus. Posting Group" = 'NICHTSTB' then begin
                        Rec."Function Return Value" := 'E';
                        exit;
                    end;

                    if LocalRecordSIMXSDLinkedDataLine.Get(LocalRecordSIMXSDLinkedData.Code, LocalRecordSalesInvoiceLine."VAT Prod. Posting Group") then begin
                        Rec."Function Return Value" := LocalRecordSIMXSDLinkedDataLine."New Value";
                        exit;
                    end;

                    Rec."Function Return Value" := '';
                end;
            'PurchInvLine_CAT':
                begin
                    if not LocalRecordRef.Get(Rec."Codeunit Record ID") then
                        Error('Record bestaat niet.');

                    if not LocalRecordSIMXSDLinkedData.Get('CATEGORY') then
                        Error('Gekoppelde gegevens bestaan niet.');

                    if LocalRecordRef.Number <> 123 then
                        Error('Verkeerde tabel');

                    LocalRecordRef.SetTable(LocalRecordPurchInvLine);

                    if LocalRecordPurchInvLine."VAT Bus. Posting Group" = 'NICHTSTB' then begin
                        Rec."Function Return Value" := 'E';
                        exit;
                    end;

                    if LocalRecordSIMXSDLinkedDataLine.Get(LocalRecordSIMXSDLinkedData.Code, LocalRecordPurchInvLine."VAT Prod. Posting Group") then begin
                        Rec."Function Return Value" := LocalRecordSIMXSDLinkedDataLine."New Value";
                        exit;
                    end;

                    Rec."Function Return Value" := '';
                end;
        end;
    end;
}

Zie ook