Table 1222 Data Exch. Def

App
Base Application
Namespace
System.IO
Versions
17-28

Fields, 17Keys, 2Procedures, 9

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/System/DataExchange/DataExchDef.Table.al259 lines, Copyright (c) Microsoft Corporation. MIT

namespace System.IO;

using Microsoft.Bank.PositivePay;
using System.Reflection;

table 1222 "Data Exch. Def"
{
    Caption = 'Data Exch. Def';
    DrillDownPageId = "Data Exch Def List";
    LookupPageId = "Data Exch Def List";
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Code"; Code[20])
        {
            Caption = 'Code';
            NotBlank = true;
        }
        field(2; Name; Text[100])
        {
            Caption = 'Name';
        }
        field(3; Type; Enum "Data Exchange Definition Type")
        {
            Caption = 'Type';
        }
        field(4; "Reading/Writing XMLport"; Integer)
        {
            Caption = 'Reading/Writing XMLport';
            TableRelation = AllObjWithCaption."Object ID" where("Object Type" = const(XMLport));
        }
        field(5; "Header Lines"; Integer)
        {
            Caption = 'Header Lines';
        }
        field(8; "Header Tag"; Text[250])
        {
            Caption = 'Header Tag';
        }
        field(9; "Footer Tag"; Text[250])
        {
            Caption = 'Footer Tag';
        }
        field(10; "Column Separator"; Option)
        {
            Caption = 'Column Separator';
            InitValue = Comma;
            OptionCaption = ',Tab,Semicolon,Comma,Space,Custom';
            OptionMembers = ,Tab,Semicolon,Comma,Space,Custom;
        }
        field(11; "File Encoding"; Option)
        {
            Caption = 'File Encoding';
            InitValue = WINDOWS;
            OptionCaption = 'MS-DOS,UTF-8,UTF-16,WINDOWS';
            OptionMembers = "MS-DOS","UTF-8","UTF-16",WINDOWS;
        }
        field(13; "File Type"; Option)
        {
            Caption = 'File Type';
            OptionCaption = 'Xml,Variable Text,Fixed Text,Json';
            OptionMembers = Xml,"Variable Text","Fixed Text",Json;
        }
        field(14; "Ext. Data Handling Codeunit"; Integer)
        {
            Caption = 'Ext. Data Handling Codeunit';
            TableRelation = AllObjWithCaption."Object ID" where("Object Type" = const(Codeunit));
        }
        field(15; "Reading/Writing Codeunit"; Integer)
        {
            Caption = 'Reading/Writing Codeunit';
            TableRelation = AllObjWithCaption."Object ID" where("Object Type" = const(Codeunit));
        }
        field(16; "Validation Codeunit"; Integer)
        {
            Caption = 'Validation Codeunit';
            TableRelation = AllObjWithCaption."Object ID" where("Object Type" = const(Codeunit));
        }
        field(17; "Data Handling Codeunit"; Integer)
        {
            Caption = 'Data Handling Codeunit';
            TableRelation = AllObjWithCaption."Object ID" where("Object Type" = const(Codeunit));
        }
        field(18; "User Feedback Codeunit"; Integer)
        {
            Caption = 'User Feedback Codeunit';
            TableRelation = AllObjWithCaption."Object ID" where("Object Type" = const(Codeunit));
        }
        field(19; "Custom Column Separator"; Text[10])
        {
            Caption = 'Custom Column Separator';
        }
        field(20; "Line Separator"; Option)
        {
            Caption = 'Line Separator';
            OptionMembers = "CRLF","CR","LF";
            OptionCaption = 'CRLF,CR,LF';
        }
    }

    keys
    {
        key(Key1; "Code")
        {
            Clustered = true;
        }
        key(Key2; Type)
        {
        }
    }

    fieldgroups
    {
    }

    trigger OnDelete()
    var
        DataExchLineDef: Record "Data Exch. Line Def";
    begin
        DataExchLineDef.SetRange("Data Exch. Def Code", Code);
        DataExchLineDef.DeleteAll(true);
    end;

    trigger OnInsert()
    begin
        if Name = '' then
            Name := Code;
    end;

    var
        ColumnSeparatorMissingErr: Label 'Column separator is missing in the definition.';

    procedure InsertRec(NewCode: Code[20]; NewName: Text[100]; NewType: Enum "Data Exchange Definition Type"; ProcessingXMLport: Integer; HeaderCount: Integer; HeaderTag: Text[250]; FooterTag: Text[250])
    begin
        Init();
        Validate(Code, NewCode);
        Validate(Name, NewName);
        Validate(Type, NewType);
        Validate("Reading/Writing XMLport", ProcessingXMLport);
        Validate("Header Lines", HeaderCount);
        Validate("Header Tag", HeaderTag);
        Validate("Footer Tag", FooterTag);
        Insert();
    end;

    procedure InsertRecForExport(NewCode: Code[20]; NewName: Text[100]; NewType: Option; ProcessingXMLport: Integer; FileType: Option)
    begin
        Init();
        Validate(Code, NewCode);
        Validate(Name, NewName);
        "File Type" := FileType;
        Type := "Data Exchange Definition Type".FromInteger(NewType);
        Validate("File Type", FileType);
        Validate(Type, NewType);

        Validate("Reading/Writing XMLport", ProcessingXMLport);
        Insert();
    end;

    procedure ColumnSeparatorChar(): Text
    var
        SeparatorChar: Text;
    begin
        case "Column Separator" of
            "Column Separator"::Tab:
                begin
                    SeparatorChar[1] := 9;
                    exit(SeparatorChar);
                end;
            "Column Separator"::Semicolon:
                exit(';');
            "Column Separator"::Comma:
                exit(',');
            "Column Separator"::Space:
                exit(' ');
            "Column Separator"::Custom:
                begin
                    if "Custom Column Separator" <> '' then
                        exit("Custom Column Separator");
                    Error(ColumnSeparatorMissingErr);
                end;
            else
                Error(ColumnSeparatorMissingErr)
        end
    end;

    procedure CheckEnableDisableIsNonXMLFileType(): Boolean
    begin
        exit(not ("File Type" in ["File Type"::Xml, "File Type"::Json]))
    end;

    procedure CheckEnableDisableIsImportType(): Boolean
    begin
        if Type in [Type::"Payment Export", Type::"Positive Pay Export"] then
            exit(false);
        exit(not ("File Type" in ["File Type"::Xml, "File Type"::Json]))
    end;

    procedure CheckEnableDisableIsBankStatementImportType(): Boolean
    begin
        exit(Type = Type::"Bank Statement Import");
    end;

    procedure CheckEnableDisableDelimitedFileType(): Boolean
    begin
        exit("File Type" = "File Type"::"Variable Text");
    end;

    procedure PositivePayUpdateCodeunits(): Boolean
    begin
        if Type = Type::"Positive Pay Export" then begin
            "Validation Codeunit" := CODEUNIT::"Exp. Validation Pos. Pay";
            "Reading/Writing Codeunit" := CODEUNIT::"Exp. Writing Pos. Pay";
            "Reading/Writing XMLport" := XMLPORT::"Export Generic Fixed Width";
            "Ext. Data Handling Codeunit" := CODEUNIT::"Exp. External Data Pos. Pay";
            "User Feedback Codeunit" := CODEUNIT::"Exp. User Feedback Pos. Pay";
        end else begin
            "Validation Codeunit" := 0;
            "Reading/Writing Codeunit" := 0;
            "Reading/Writing XMLport" := 0;
            "Ext. Data Handling Codeunit" := 0;
            "User Feedback Codeunit" := 0;
        end;
        exit(Type = Type::"Positive Pay Export");
    end;

    procedure ProcessDataExchange(var DataExch: Record "Data Exch.")
    var
        DataExchLineDef: Record "Data Exch. Line Def";
        DataExchMapping: Record "Data Exch. Mapping";
    begin
        if "Data Handling Codeunit" <> 0 then
            CODEUNIT.Run("Data Handling Codeunit", DataExch);

        DataExchLineDef.SetRange("Data Exch. Def Code", Code);
        DataExchLineDef.SetRange("Parent Code", '');
        DataExchLineDef.FindSet();

        repeat
            DataExchMapping.SetRange("Data Exch. Def Code", DataExch."Data Exch. Def Code");
            DataExchMapping.SetRange("Data Exch. Line Def Code", DataExchLineDef.Code);
            DataExchMapping.FindSet();

            repeat
                if DataExchMapping."Pre-Mapping Codeunit" <> 0 then
                    CODEUNIT.Run(DataExchMapping."Pre-Mapping Codeunit", DataExch);

                if DataExchMapping."Mapping Codeunit" <> 0 then
                    CODEUNIT.Run(DataExchMapping."Mapping Codeunit", DataExch);

                if DataExchMapping."Post-Mapping Codeunit" <> 0 then
                    CODEUNIT.Run(DataExchMapping."Post-Mapping Codeunit", DataExch);
            until DataExchMapping.Next() = 0;
        until DataExchLineDef.Next() = 0;
    end;
}