Table 8618 Config. Template Header

App
Base Application
Namespace
System.IO
Versions
17-28

Fields, 8Keys, 2Procedures, 4

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/System/RapidStart/ConfigTemplateHeader.Table.al195 lines, Copyright (c) Microsoft Corporation. MIT

namespace System.IO;

using Microsoft.Foundation.NoSeries;
using System.Reflection;

table 8618 "Config. Template Header"
{
    Caption = 'Config. Template Header';
    LookupPageID = "Config. Template List";
    ReplicateData = false;
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Code"; Code[10])
        {
            Caption = 'Code';
            NotBlank = true;
        }
        field(2; Description; Text[100])
        {
            Caption = 'Description';
        }
        field(3; "Table ID"; Integer)
        {
            Caption = 'Table ID';

            trigger OnLookup()
            begin
                ConfigValidateMgt.LookupTable("Table ID");
                if "Table ID" <> 0 then
                    Validate("Table ID");
            end;

            trigger OnValidate()
            begin
                TestXRec();
                CalcFields("Table Name");
            end;
        }
        field(4; "Table Name"; Text[250])
        {
            CalcFormula = lookup(AllObjWithCaption."Object Name" where("Object Type" = const(Table),
                                                                        "Object ID" = field("Table ID")));
            Caption = 'Table Name';
            Editable = false;
            FieldClass = FlowField;
        }
        field(5; "Table Caption"; Text[250])
        {
            CalcFormula = lookup(AllObjWithCaption."Object Caption" where("Object Type" = const(Table),
                                                                           "Object ID" = field("Table ID")));
            Caption = 'Table Caption';
            Editable = false;
            FieldClass = FlowField;
        }
        field(6; "Used In Hierarchy"; Boolean)
        {
            CalcFormula = exist("Config. Template Line" where("Data Template Code" = field(Code),
                                                               Type = const(Template)));
            Caption = 'Used In Hierarchy';
            Editable = false;
            FieldClass = FlowField;
        }
        field(7; Enabled; Boolean)
        {
            Caption = 'Enabled';
            InitValue = true;
        }
        field(8; "Instance No. Series"; Code[20])
        {
            Caption = 'Instance No. Series';
            TableRelation = "No. Series";
        }
    }

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

    fieldgroups
    {
    }

    trigger OnDelete()
    begin
        CalcFields("Used In Hierarchy");
        if not "Used In Hierarchy" then begin
            ConfigTemplateLine.SetRange("Data Template Code", Code);
            ConfigTemplateLine.DeleteAll();
        end;
    end;

    trigger OnRename()
    begin
        CalcFields("Used In Hierarchy");
        if not "Used In Hierarchy" then begin
            ConfigTemplateLine.SetRange("Data Template Code", xRec.Code);
            if ConfigTemplateLine.Find('-') then
                repeat
                    ConfigTemplateLine.Rename(Code, ConfigTemplateLine."Line No.");
                until ConfigTemplateLine.Next() = 0;
        end;
    end;

    var
        ConfigTemplateLine: Record "Config. Template Line";
        ConfigValidateMgt: Codeunit "Config. Validate Management";

#pragma warning disable AA0470
        DeleteLinesBeforeChangeTableIdErr: Label 'Template lines that relate to %1 exists. Delete the lines to change the Table ID.';
        NewInstanceCreatedMsg: Label 'A new instance %1 has been created in table %2 %3.', Comment = '%2 = Table ID, %3 = Table Caption';
#pragma warning restore AA0470

    local procedure TestXRec()
    var
        ConfigTemplateLine: Record "Config. Template Line";
    begin
        ConfigTemplateLine.SetRange("Data Template Code", Code);
        if ConfigTemplateLine.FindFirst() then
            if xRec."Table ID" <> "Table ID" then
                Error(DeleteLinesBeforeChangeTableIdErr, xRec."Table ID");
    end;

    procedure ConfirmNewInstance(var RecRef: RecordRef)
    var
        FieldRef: FieldRef;
        KeyRef: KeyRef;
        KeyFieldCount: Integer;
        MessageString: Text[1024];
    begin
        KeyRef := RecRef.KeyIndex(1);
        for KeyFieldCount := 1 to KeyRef.FieldCount do begin
            FieldRef := KeyRef.FieldIndex(KeyFieldCount);
            MessageString := MessageString + ' ' + Format(FieldRef.Value);
            MessageString := DelChr(MessageString, '<');
            Message(StrSubstNo(NewInstanceCreatedMsg, MessageString, RecRef.Number, RecRef.Caption));
        end;
    end;

    procedure SetTemplateEnabled(IsEnabled: Boolean)
    begin
        Validate(Enabled, IsEnabled);
        Modify(true);
    end;

    procedure SetNoSeries(NoSeries: Code[20])
    begin
        Validate("Instance No. Series", NoSeries);
        Modify(true);
    end;

    [Scope('OnPrem')]
    procedure CopyConfigTemplate(FromConfigTemplateCode: Code[10])
    begin
        CopyConfigTemplateHeader(FromConfigTemplateCode);
        CopyConfigTemplateLines(FromConfigTemplateCode, Code);
    end;

    local procedure CopyConfigTemplateHeader(FromConfigTemplateCode: Code[10])
    var
        FromConfigTemplateHeader: Record "Config. Template Header";
    begin
        FromConfigTemplateHeader.Get(FromConfigTemplateCode);
        Validate("Table ID", FromConfigTemplateHeader."Table ID");
        Enabled := FromConfigTemplateHeader.Enabled;
        Modify();
    end;

    local procedure CopyConfigTemplateLines(FromConfigTemplateCode: Code[10]; ConfigTemplateCode: Code[10])
    var
        FromConfigTemplateLine: Record "Config. Template Line";
        ConfigTemplateLine: Record "Config. Template Line";
    begin
        ConfigTemplateLine.SetRange("Data Template Code", ConfigTemplateCode);
        ConfigTemplateLine.DeleteAll();
        FromConfigTemplateLine.SetRange("Data Template Code", FromConfigTemplateCode);
        if FromConfigTemplateLine.FindSet() then
            repeat
                ConfigTemplateLine.Init();
                ConfigTemplateLine.TransferFields(FromConfigTemplateLine);
                ConfigTemplateLine."Data Template Code" := ConfigTemplateCode;
                ConfigTemplateLine.Insert();
            until FromConfigTemplateLine.Next() = 0;
    end;
}