Report 8616 Get Package Tables, source in 29

Source29

src/Layers/W1/BaseApp/System/RapidStart/GetPackageTables.Report.al144 lines, Copyright (c) Microsoft Corporation. MIT

namespace System.IO;

using System.Environment;

report 8616 "Get Package Tables"
{
    Caption = 'Get Package Tables';
    ProcessingOnly = true;

    dataset
    {
    }

    requestpage
    {

        layout
        {
            area(content)
            {
                group(Options)
                {
                    Caption = 'Options';
                    field(SelectTables; SelectedTables)
                    {
                        ApplicationArea = Basic, Suite;
                        Caption = 'Select Tables';
                        Editable = false;
                        ToolTip = 'Specifies which tables to include. When you choose the field, the Config. Selection windows opens in which you can select tables.';

                        trigger OnAssistEdit()
                        var
                            ConfigSelection: Page "Config. Selection";
                        begin
                            ConfigSelection.Set(TempConfigSelection);
                            Commit();
                            if ConfigSelection.RunModal() = ACTION::OK then
                                SelectedTables := ConfigSelection.Get(TempConfigSelection);
                        end;
                    }
                    field(WithDataOnly; WithDataOnly)
                    {
                        ApplicationArea = Basic, Suite;
                        Caption = 'With Data Only';
                        ToolTip = 'Specifies if only data from the tables is included.';
                    }
                }
            }
        }

        actions
        {
        }

        trigger OnInit()
        begin
            InitSelection();
        end;
    }

    labels
    {
    }

    trigger OnPreReport()
    var
        ConfigLine: Record "Config. Line";
    begin
        if PackageCode = '' then
            Error(PackageNotSetErr);

        TempConfigSelection.Reset();
        TempConfigSelection.SetRange("Line Type", TempConfigSelection."Line Type"::Table);
        TempConfigSelection.SetRange(Selected, true);
        if TempConfigSelection.FindSet() then
            repeat
                if DataExists(TempConfigSelection."Table ID") and not ConfigPackageTable.Get(PackageCode, TempConfigSelection."Table ID") then begin
                    ConfigPackageTable.Init();
                    ConfigPackageTable.Validate("Package Code", PackageCode);
                    ConfigPackageTable.Validate("Table ID", TempConfigSelection."Table ID");
                    ConfigPackageTable.Insert(true);
                    ConfigLine.Get(TempConfigSelection."Line No.");
                    if ConfigLine."Package Code" = '' then begin
                        ConfigLine."Package Code" := PackageCode;
                        ConfigLine.Modify();
                    end;
                end;
            until TempConfigSelection.Next() = 0;

        CurrReport.Break();
    end;

    var
        ConfigPackageTable: Record "Config. Package Table";
        TempConfigSelection: Record "Config. Selection" temporary;
        TableInfo: Record "Table Information";
        SelectedTables: Integer;
        PackageCode: Code[20];
        WithDataOnly: Boolean;
        PackageNotSetErr: Label 'Package is not set.';

    procedure Set(NewPackageCode: Code[20])
    begin
        PackageCode := NewPackageCode;
    end;

    local procedure DataExists(TableID: Integer): Boolean
    begin
        if not WithDataOnly then
            exit(true);

        TableInfo.SetRange("Company Name", CompanyName);
        TableInfo.SetRange("Table No.", TableID);
        if TableInfo.FindFirst() then
            if TableInfo."No. of Records" > 0 then
                exit(true);

        exit(false);
    end;

    local procedure InitSelection()
    var
        ConfigLine: Record "Config. Line";
    begin
        TempConfigSelection.Reset();
        ConfigLine.SetFilter("Table ID", '<>0');
        if ConfigLine.FindSet() then
            repeat
                if (ConfigLine."Line Type" <> ConfigLine."Line Type"::Table) or
                   ((ConfigLine."Line Type" = ConfigLine."Line Type"::Table) and (ConfigLine."Package Code" = ''))
                then
                    if not TempConfigSelection.Get(ConfigLine."Line No.") then begin
                        TempConfigSelection.Init();
                        TempConfigSelection."Line No." := ConfigLine."Line No.";
                        TempConfigSelection."Table ID" := ConfigLine."Table ID";
                        TempConfigSelection.Name := ConfigLine.Name;
                        TempConfigSelection."Line Type" := ConfigLine."Line Type";
                        TempConfigSelection.Insert();
                    end;
            until ConfigLine.Next() = 0;
    end;
}