Page 103 Account Schedule Names, source in 29

Source29

src/Layers/W1/BaseApp/Finance/FinancialReports/AccountScheduleNames.Page.al199 lines, Copyright (c) Microsoft Corporation. MIT

// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Finance.FinancialReports;

/// <summary>
/// Provides management interface for financial report row definitions (formerly account schedules).
/// Enables creation, editing, copying, import/export, and where-used analysis of row definition templates.
/// </summary>
/// <remarks>
/// Primary functionality: Row definition management, copy operations, RapidStart import/export integration.
/// Navigation: Links to Account Schedule page for detailed row editing and Financial Report usage tracking.
/// Extensibility: Standard page extension patterns for additional fields and actions.
/// </remarks>
page 103 "Account Schedule Names"
{
    AboutTitle = 'About (Financial Report) Row Definitions';
    AboutText = 'Row definitions in financial reports provide a place for calculations that can''t be made directly in the chart of accounts. For example, you can create subtotals for groups of accounts and then include that total in other totals. You can also calculate intermediate steps that aren''t shown in the final report.';
    AdditionalSearchTerms = 'Account Schedules';
    AnalysisModeEnabled = false;
    ApplicationArea = Basic, Suite;
    Caption = '(Financial Report) Row Definitions';
    PageType = List;
    SourceTable = "Acc. Schedule Name";
    UsageCategory = ReportsAndAnalysis;

    layout
    {
        area(content)
        {
            repeater(Control1)
            {
                ShowCaption = false;
                field(Name; Rec.Name)
                {
                    ApplicationArea = Basic, Suite;
                }
                field(Description; Rec.Description)
                {
                    ApplicationArea = Basic, Suite;
                }
                field("Analysis View Name"; Rec."Analysis View Name")
                {
                    ApplicationArea = Suite;
                }
                field(Status; Rec.Status) { }
                field("Internal Description"; Rec."Internal Description")
                {
                    ApplicationArea = Suite;
                }
            }
        }
        area(factboxes)
        {
            systempart(Control1900383207; Links)
            {
                ApplicationArea = RecordLinks;
                Visible = false;
            }
            systempart(Control1905767507; Notes)
            {
                ApplicationArea = Notes;
                Visible = false;
            }
        }
    }

    actions
    {
        area(processing)
        {
            action(EditAccountSchedule)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Edit Row Definition';
                Image = Edit;
                ShortCutKey = 'Return';
                ToolTip = 'Change the row definition based on the current row definition.';

                trigger OnAction()
                var
                    AccSchedule: Page "Account Schedule";
                begin
                    AccSchedule.SetAccSchedName(Rec.Name);
                    AccSchedule.Run();
                end;
            }
            action(WhereUsed)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Where-Used';
                ToolTip = 'View or edit financial reports in which the row definition is used.';
                Image = Track;

                trigger OnAction()
                var
                    FinancialReport: Record "Financial Report";
                begin
                    FinancialReport.SetRange("Financial Report Row Group", Rec.Name);
                    Page.Run(0, FinancialReport);
                end;
            }
            action(CopyAccountSchedule)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Copy Row Definition';
                Image = Copy;
                Scope = Repeater;
                ToolTip = 'Create a copy of the current row definition.';

                trigger OnAction()
                var
                    AccScheduleName: Record "Acc. Schedule Name";
                begin
                    CurrPage.SetSelectionFilter(AccScheduleName);
                    REPORT.RunModal(REPORT::"Copy Account Schedule", true, true, AccScheduleName);
                end;
            }
            action(ImportAccountSchedule)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Import Row Definition';
                Image = Import;
                Scope = Repeater;
                ToolTip = 'Import a RapidStart configuration package that contains settings for a set of row definitions. Importing row definitions lets you share them, for example, with another business unit. This requires that the row definition has been exported.';

                trigger OnAction()
                begin
                    Rec.Import();
                end;
            }
            action(ExportAccountSchedule)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Export Row Definition';
                Image = Export;
                Scope = Repeater;
                ToolTip = 'Export settings for the selected row definition to a RapidStart configuration package. Exporting a row definition lets you share it with another business unit.';

                trigger OnAction()
                begin
                    Rec.Export();
                end;
            }
        }
        area(Promoted)
        {
            group(Category_Process)
            {
                Caption = 'Process', Comment = 'Generated from the PromotedActionCategories property index 1.';

                actionref(EditAccountSchedule_Promoted; EditAccountSchedule) { }
                actionref(WhereUsed_Promoted; WhereUsed) { }

                group(CopyExportImport)
                {
                    Caption = 'Copy/Export/Import';

                    actionref(CopyAccountSchedule_Promoted; CopyAccountSchedule) { }
                    actionref(ExportAccountSchedule_Promoted; ExportAccountSchedule) { }
                    actionref(ImportAccountSchedule_Promoted; ImportAccountSchedule) { }
                }
            }

            group(Category_Category4)
            {
                Caption = 'Print/Send', Comment = 'Generated from the PromotedActionCategories property index 3.';

            }
            group(Category_Report)
            {
                Caption = 'Report', Comment = 'Generated from the PromotedActionCategories property index 2.';
            }
        }
    }

    trigger OnOpenPage()
    var
        FinancialReportStatus: Record "Financial Report Status";
        LastFilterGroup: Integer;
    begin
        if not FinancialReportStatus.WritePermission() then begin
            LastFilterGroup := Rec.FilterGroup();
            Rec.FilterGroup(4);
            Rec.SetRange("Status Blocked", false);
            Rec.FilterGroup(LastFilterGroup);
        end;
    end;

    trigger OnNewRecord(BelowxRec: Boolean)
    var
        FinancialReportMgt: Codeunit "Financial Report Mgt.";
    begin
        Rec.Status := FinancialReportMgt.GetDefaultStatus();
    end;
}