Table 8627 Config. Setup

App
Base Application
Namespace
System.IO
Versions
17-28

Fields, 54Keys, 1Procedures, 12

Versions171819202122232425262728

Source29

Source in 29

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

namespace System.IO;

using Microsoft.Bank.BankAccount;
using Microsoft.Foundation.Address;
using Microsoft.Foundation.Company;
using Microsoft.Sales.Setup;
using System;
using System.Environment.Configuration;
using System.Globalization;
using System.Reflection;
using System.Utilities;
using System.Xml;

table 8627 "Config. Setup"
{
    Caption = 'Config. Setup';
    ReplicateData = false;
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Primary Key"; Code[10])
        {
            AllowInCustomizations = Never;
            Caption = 'Primary Key';
        }
        field(2; Name; Text[100])
        {
            Caption = 'Name';
        }
        field(3; "Name 2"; Text[50])
        {
            Caption = 'Name 2';
        }
        field(4; Address; Text[100])
        {
            Caption = 'Address';
        }
        field(5; "Address 2"; Text[50])
        {
            Caption = 'Address 2';
        }
        field(6; City; Text[30])
        {
            Caption = 'City';

            trigger OnLookup()
            begin
                PostCode.LookupPostCode(City, "Post Code", County, "Country/Region Code");
            end;

            trigger OnValidate()
            begin
                PostCode.ValidateCity(City, "Post Code", County, "Country/Region Code", (CurrFieldNo <> 0) and GuiAllowed);
            end;
        }
        field(7; "Phone No."; Text[30])
        {
            Caption = 'Phone No.';
        }
        field(8; "Phone No. 2"; Text[30])
        {
            Caption = 'Phone No. 2';
        }
        field(9; "Telex No."; Text[30])
        {
            Caption = 'Telex No.';
        }
        field(10; "Fax No."; Text[30])
        {
            Caption = 'Fax No.';
        }
        field(11; "Giro No."; Text[20])
        {
            Caption = 'Giro No.';
        }
        field(12; "Bank Name"; Text[100])
        {
            AccessByPermission = TableData "Bank Account" = R;
            Caption = 'Bank Name';
        }
        field(13; "Bank Branch No."; Text[20])
        {
            AccessByPermission = TableData "Bank Account" = R;
            Caption = 'Bank Branch No.';
        }
        field(14; "Bank Account No."; Text[30])
        {
            AccessByPermission = TableData "Bank Account" = R;
            Caption = 'Bank Account No.';
            MaskType = Concealed;
        }
        field(15; "Payment Routing No."; Text[20])
        {
            Caption = 'Payment Routing No.';
        }
        field(17; "Customs Permit No."; Text[10])
        {
            Caption = 'Customs Permit No.';
        }
        field(18; "Customs Permit Date"; Date)
        {
            Caption = 'Customs Permit Date';
        }
        field(19; "VAT Registration No."; Text[20])
        {
            Caption = 'VAT Registration No.';
        }
        field(20; "Registration No."; Text[20])
        {
            Caption = 'Registration No.';
        }
        field(21; "Telex Answer Back"; Text[20])
        {
            Caption = 'Telex Answer Back';
        }
        field(22; "Ship-to Name"; Text[100])
        {
            Caption = 'Ship-to Name';
        }
        field(23; "Ship-to Name 2"; Text[50])
        {
            Caption = 'Ship-to Name 2';
        }
        field(24; "Ship-to Address"; Text[100])
        {
            Caption = 'Ship-to Address';
        }
        field(25; "Ship-to Address 2"; Text[50])
        {
            Caption = 'Ship-to Address 2';
        }
        field(26; "Ship-to City"; Text[30])
        {
            Caption = 'Ship-to City';
        }
        field(27; "Ship-to Contact"; Text[100])
        {
            Caption = 'Ship-to Contact';
        }
        field(28; "Location Code"; Code[10])
        {
            Caption = 'Location Code';
        }
        field(29; Picture; BLOB)
        {
            Caption = 'Picture';
            SubType = Bitmap;
        }
        field(30; "Post Code"; Code[20])
        {
            Caption = 'Post Code';

            trigger OnLookup()
            begin
                PostCode.LookupPostCode(City, "Post Code", County, "Country/Region Code");
            end;

            trigger OnValidate()
            begin
                PostCode.ValidatePostCode(City, "Post Code", County, "Country/Region Code", (CurrFieldNo <> 0) and GuiAllowed);
            end;
        }
        field(31; County; Text[30])
        {
            CaptionClass = '5,1,' + "Country/Region Code";
            Caption = 'County';
        }
        field(32; "Ship-to Post Code"; Code[20])
        {
            Caption = 'Ship-to Post Code';
        }
        field(33; "Ship-to County"; Text[30])
        {
            CaptionClass = '5,4,' + "Ship-to Country/Region Code";
            Caption = 'Ship-to County';
        }
        field(34; "E-Mail"; Text[80])
        {
            Caption = 'Email';
        }
#if not CLEAN27
#pragma warning disable AS0086
#endif
        field(35; "Home Page"; Text[255])
#if not CLEAN27
#pragma warning restore AS0086
#endif
        {
            Caption = 'Home Page';
            ExtendedDatatype = URL;
        }
        field(36; "Country/Region Code"; Code[10])
        {
            Caption = 'Country/Region Code';

            trigger OnValidate()
            begin
                PostCode.CheckClearPostCodeCityCounty(City, "Post Code", County, "Country/Region Code", xRec."Country/Region Code");
            end;
        }
        field(37; "Ship-to Country/Region Code"; Code[10])
        {
            Caption = 'Ship-to Country/Region Code';
        }
        field(38; IBAN; Code[50])
        {
            Caption = 'IBAN';
            MaskType = Concealed;

            trigger OnValidate()
            var
                CompanyInfo: Record "Company Information";
            begin
                CompanyInfo.CheckIBAN(IBAN);
            end;
        }
        field(39; "SWIFT Code"; Code[20])
        {
            Caption = 'SWIFT Code';
        }
        field(40; "Industrial Classification"; Text[30])
        {
            Caption = 'Industrial Classification';
        }
        field(500; "Logo Position on Documents"; Option)
        {
            Caption = 'Logo Position on Documents';
            OptionCaption = 'No Logo,Left,Center,Right';
            OptionMembers = "No Logo",Left,Center,Right;
        }
        field(5700; "Responsibility Center"; Code[10])
        {
            Caption = 'Responsibility Center';
        }
        field(5791; "Check-Avail. Period Calc."; DateFormula)
        {
            Caption = 'Check-Avail. Period Calc.';
        }
        field(5792; "Check-Avail. Time Bucket"; Option)
        {
            Caption = 'Check-Avail. Time Bucket';
            OptionCaption = 'Day,Week,Month,Quarter,Year';
            OptionMembers = Day,Week,Month,Quarter,Year;
        }
        field(7600; "Base Calendar Code"; Code[10])
        {
            Caption = 'Base Calendar Code';
        }
        field(7601; "Cal. Convergence Time Frame"; DateFormula)
        {
            Caption = 'Cal. Convergence Time Frame';
            InitValue = '1Y';
        }
        field(8600; "Package File Name"; Text[250])
        {
            Caption = 'Package File Name';

            trigger OnValidate()
            begin
                ReadPackageHeader(DecompressPackage(false));
            end;
        }
        field(8601; "Package Code"; Code[20])
        {
            Caption = 'Package Code';
            Editable = false;
        }
        field(8602; "Language ID"; Integer)
        {
            Caption = 'Language ID';
            Editable = false;
            TableRelation = "Windows Language";
        }
        field(8603; "Product Version"; Text[80])
        {
            Caption = 'Product Version';
            Editable = false;
        }
        field(8604; "Package Name"; Text[50])
        {
            Caption = 'Package Name';
        }
        field(8605; "Your Profile Code"; Code[30])
        {
            Caption = 'Your Profile Code';
            TableRelation = "All Profile"."Profile ID";
        }
        field(8606; "Your Profile App ID"; Guid)
        {
            Caption = 'Your Profile App ID';
        }
        field(8607; "Your Profile Scope"; Option)
        {
            Caption = 'Your Profile Scope';
            OptionCaption = 'System,Tenant';
            OptionMembers = System,Tenant;
        }
        field(8608; "Package File"; BLOB)
        {
            Caption = 'Package File';
        }
    }

    keys
    {
        key(Key1; "Primary Key")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    var
        PostCode: Record "Post Code";
        HideDialog: Boolean;

        PackageAlreadyExistsQst: Label 'The imported package already exists. Do you want to import another package?';
        PackageDataNotDefinedErr: Label '%1 should be defined in the imported package.', Comment = '%1 = "Package Code"';
        ChooseFileTitleMsg: Label 'Choose the file to upload.';

    [Scope('OnPrem')]
    procedure CompleteWizard(): Boolean
    var
        Scope: Option System,Tenant;
        AppID: Guid;
    begin
        TestField("Package File Name");
        TestField("Package Code");
        TestField("Package Name");

        ImportPackage(DecompressPackage(false));
        ApplyPackages();
        ApplyAnswers();
        CopyCompInfo();
        SelectDefaultRoleCenter("Your Profile Code", AppID, Scope::System);
        exit(true);
    end;

    procedure SelectDefaultRoleCenter(ProfileID: Code[30]; AppID: Guid; Scope: Option System,Tenant)
    var
        AllProfile: Record "All Profile";
        ConfPersonalizationMgt: Codeunit "Conf./Personalization Mgt.";
    begin
        if AllProfile.Get(Scope, AppID, ProfileID) then begin
            AllProfile.Validate("Default Role Center", true);
            AllProfile.Modify();
            ConfPersonalizationMgt.ChangeDefaultRoleCenter(AllProfile);
        end;
    end;

    [Scope('OnPrem')]
    procedure ReadPackageHeader(DecompressedFileName: Text)
    var
        XMLDOMManagement: Codeunit "XML DOM Management";
        PackageXML: DotNet XmlDocument;
    begin
        if "Package File Name" <> '' then begin
            XMLDOMManagement.LoadXMLDocumentFromFile(DecompressedFileName, PackageXML);
            ReadPackageHeaderCommon(PackageXML);
        end else begin
            "Package Code" := '';
            "Package Name" := '';
            "Product Version" := '';
            "Language ID" := 0;
        end;
    end;

    procedure ReadPackageHeaderFromStream(InStream: InStream)
    var
        XMLDOMManagement: Codeunit "XML DOM Management";
        PackageXML: DotNet XmlDocument;
    begin
        if "Package File Name" <> '' then begin
            XMLDOMManagement.LoadXMLDocumentFromInStream(InStream, PackageXML);
            ReadPackageHeaderCommon(PackageXML);
        end else begin
            "Package Code" := '';
            "Package Name" := '';
            "Product Version" := '';
            "Language ID" := 0;
        end;
    end;

    local procedure ReadPackageHeaderCommon(PackageXML: DotNet XmlDocument)
    var
        ConfigPackage: Record "Config. Package";
        ConfigXMLExchange: Codeunit "Config. XML Exchange";
        DocumentElement: DotNet XmlElement;
        LanguageID: Text;
    begin
        DocumentElement := PackageXML.DocumentElement;
        "Package Code" :=
          CopyStr(
            ConfigXMLExchange.GetAttribute(
              ConfigXMLExchange.GetElementName(ConfigPackage.FieldName(Code)), DocumentElement),
            1, MaxStrLen("Package Code"));
        if "Package Code" = '' then
            Error(PackageDataNotDefinedErr, FieldCaption("Package Code"));
        "Package Name" :=
          CopyStr(
            ConfigXMLExchange.GetAttribute(
              ConfigXMLExchange.GetElementName(ConfigPackage.FieldName("Package Name")), DocumentElement),
            1, MaxStrLen("Package Name"));
        if "Package Name" = '' then
            Error(PackageDataNotDefinedErr, FieldCaption("Package Name"));
        "Product Version" :=
          CopyStr(
            ConfigXMLExchange.GetAttribute(
              ConfigXMLExchange.GetElementName(ConfigPackage.FieldName("Product Version")), DocumentElement),
            1, MaxStrLen("Product Version"));
        LanguageID := ConfigXMLExchange.GetAttribute(
            ConfigXMLExchange.GetElementName(ConfigPackage.FieldName("Language ID")), DocumentElement);
        if LanguageID <> '' then
            Evaluate("Language ID", LanguageID);
        Modify();
    end;

    [Scope('OnPrem')]
    procedure ImportPackage(DecompressedFileName: Text)
    var
        ConfigPackage: Record "Config. Package";
        ConfigXMLExchange: Codeunit "Config. XML Exchange";
    begin
        if ConfigPackage.Get("Package Code") then
            if not HideDialog then
                if Confirm(PackageAlreadyExistsQst, true) then begin
                    ConfigPackage.Delete(true);
                    Commit();
                end else
                    Error('');

        ConfigXMLExchange.SetHideDialog(HideDialog);
        ConfigXMLExchange.ImportPackageXML(DecompressedFileName);
        Commit();
    end;

    procedure ImportPackageFromStream(InStream: InStream)
    var
        ConfigPackage: Record "Config. Package";
        ConfigXMLExchange: Codeunit "Config. XML Exchange";
    begin
        if ConfigPackage.Get("Package Code") then
            if not HideDialog then
                if Confirm(PackageAlreadyExistsQst, true) then begin
                    ConfigPackage.Delete(true);
                    Commit();
                end else
                    Error('');

        ConfigXMLExchange.SetHideDialog(HideDialog);
        ConfigXMLExchange.ImportPackageXMLFromStream(InStream);
        Commit();
    end;

    procedure ApplyPackages() ErrorCount: Integer
    var
        ConfigPackage: Record "Config. Package";
        ConfigPackageTable: Record "Config. Package Table";
        ConfigPackageMgt: Codeunit "Config. Package Management";
    begin
        ConfigPackage.Get("Package Code");
        ConfigPackageTable.SetRange("Package Code", ConfigPackage.Code);
        ConfigPackageMgt.SetHideDialog(HideDialog);
        ErrorCount := ConfigPackageMgt.ApplyPackage(ConfigPackage, ConfigPackageTable, true);
    end;

    procedure ApplyAnswers()
    var
        ConfigQuestionnaire: Record "Config. Questionnaire";
        ConfigQuestionnaireMgt: Codeunit "Questionnaire Management";
    begin
        if ConfigQuestionnaire.FindSet() then
            repeat
                ConfigQuestionnaireMgt.ApplyAnswers(ConfigQuestionnaire);
            until ConfigQuestionnaire.Next() = 0;
    end;

    procedure CopyCompInfo()
    var
        CompanyInfo: Record "Company Information";
        SalesReceivablesSetup: Record "Sales & Receivables Setup";
    begin
        if not CompanyInfo.Get() then begin
            CompanyInfo.Init();
            CompanyInfo.Insert();
        end;
        CompanyInfo.TransferFields(Rec);
        CompanyInfo.Modify();

        if not SalesReceivablesSetup.Get() then begin
            SalesReceivablesSetup.Init();
            SalesReceivablesSetup.Insert();
        end;
        SalesReceivablesSetup."Logo Position on Documents" := "Logo Position on Documents";
        SalesReceivablesSetup.Modify();

        Commit();
    end;

    procedure SetHideDialog(NewHideDialog: Boolean)
    begin
        HideDialog := NewHideDialog;
    end;

    [Scope('OnPrem')]
    procedure DecompressPackage(UploadToServer: Boolean) DecompressedFileName: Text
    var
        ConfigXMLExchange: Codeunit "Config. XML Exchange";
        FileMgt: Codeunit "File Management";
    begin
        if UploadToServer then
            DecompressedFileName := ConfigXMLExchange.DecompressPackage(FileMgt.UploadFile(ChooseFileTitleMsg, ''))
        else
            DecompressedFileName := ConfigXMLExchange.DecompressPackage("Package File Name");
    end;

    procedure DecompressPackageToBlob(var TempBlob: Codeunit "Temp Blob"; var TempBlobUncompressed: Codeunit "Temp Blob")
    var
        ConfigXMLExchange: Codeunit "Config. XML Exchange";
    begin
        ConfigXMLExchange.DecompressPackageToBlob(TempBlob, TempBlobUncompressed);
    end;
}