Table 366 Analysis View Budget Entry, source in 29
Source29
src/Layers/W1/BaseApp/Finance/Analysis/AnalysisViewBudgetEntry.Table.al206 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.Analysis;
using Microsoft.Finance.Consolidation;
using Microsoft.Finance.Dimension;
using Microsoft.Finance.FinancialReports;
using Microsoft.Finance.GeneralLedger.Account;
using Microsoft.Finance.GeneralLedger.Budget;
/// <summary>
/// Stores aggregated budget data for analysis views with dimension breakdown.
/// Contains pre-calculated budget amounts for optimized budget vs. actual reporting and analysis.
/// </summary>
/// <remarks>
/// Analysis view budget entries are created and updated by the UpdateAnalysisView process from G/L Budget entries.
/// Each record represents aggregated budget data for a specific budget, account, business unit, date, and dimension combination.
/// Used for budget variance analysis and budget reporting in analysis views and account schedules.
/// </remarks>
table 366 "Analysis View Budget Entry"
{
Caption = 'Analysis View Budget Entry';
DrillDownPageID = "Analysis View Budget Entries";
LookupPageID = "Analysis View Budget Entries";
DataClassification = CustomerContent;
fields
{
/// <summary>
/// Analysis view code identifying the configuration used for this budget entry.
/// Links to the Analysis View table for dimension and account settings.
/// </summary>
field(1; "Analysis View Code"; Code[10])
{
Caption = 'Analysis View Code';
ToolTip = 'Specifies the analysis view.';
NotBlank = true;
TableRelation = "Analysis View";
}
/// <summary>
/// Budget name identifying the source G/L Budget for this analysis entry.
/// Links to G/L Budget Name table for budget configuration and parameters.
/// </summary>
field(2; "Budget Name"; Code[10])
{
Caption = 'Budget Name';
ToolTip = 'Specifies the name of the budget that the analysis view budget entries are linked to.';
TableRelation = "G/L Budget Name";
}
/// <summary>
/// Business unit code for consolidation and multi-company analysis.
/// Empty for single-company budget analysis, populated for consolidation scenarios.
/// </summary>
field(3; "Business Unit Code"; Code[20])
{
Caption = 'Business Unit Code';
ToolTip = 'Specifies the code for the business unit that the analysis view is based on.';
TableRelation = "Business Unit";
}
/// <summary>
/// G/L account number for the budget amount aggregation.
/// All budget entries for this account are aggregated into analysis view entries.
/// </summary>
field(4; "G/L Account No."; Code[20])
{
Caption = 'G/L Account No.';
ToolTip = 'Specifies the number of the account that the entry has been posted to.';
TableRelation = "G/L Account";
}
/// <summary>
/// First dimension value code for budget analysis breakdown.
/// Caption and available values determined by the analysis view dimension 1 setup.
/// </summary>
field(5; "Dimension 1 Value Code"; Code[20])
{
AccessByPermission = TableData Dimension = R;
CaptionClass = GetCaptionClass(1);
Caption = 'Dimension 1 Value Code';
ToolTip = 'Specifies the dimension value you selected for the analysis view dimension that you defined as Dimension 1 on the analysis view card.';
}
/// <summary>
/// Second dimension value code for budget analysis breakdown.
/// Caption and available values determined by the analysis view dimension 2 setup.
/// </summary>
field(6; "Dimension 2 Value Code"; Code[20])
{
AccessByPermission = TableData Dimension = R;
CaptionClass = GetCaptionClass(2);
Caption = 'Dimension 2 Value Code';
ToolTip = 'Specifies the dimension value you selected for the analysis view dimension that you defined as Dimension 2 on the analysis view card.';
}
/// <summary>
/// Third dimension value code for budget analysis breakdown.
/// Caption and available values determined by the analysis view dimension 3 setup.
/// </summary>
field(7; "Dimension 3 Value Code"; Code[20])
{
AccessByPermission = TableData "Dimension Combination" = R;
CaptionClass = GetCaptionClass(3);
Caption = 'Dimension 3 Value Code';
ToolTip = 'Specifies the dimension value you selected for the analysis view dimension that you defined as Dimension 3 on the analysis view card.';
}
/// <summary>
/// Fourth dimension value code for budget analysis breakdown.
/// Caption and available values determined by the analysis view dimension 4 setup.
/// </summary>
field(8; "Dimension 4 Value Code"; Code[20])
{
AccessByPermission = TableData "Dimension Combination" = R;
CaptionClass = GetCaptionClass(4);
Caption = 'Dimension 4 Value Code';
ToolTip = 'Specifies the dimension value you selected for the analysis view dimension that you defined as Dimension 4 on the analysis view card.';
}
/// <summary>
/// Budget posting date for period-based analysis and reporting.
/// Used for date filtering and period aggregation in budget analysis views.
/// </summary>
field(9; "Posting Date"; Date)
{
Caption = 'Posting Date';
ToolTip = 'Specifies the entry''s posting date.';
}
/// <summary>
/// Sequential entry number for unique identification within the analysis view.
/// Part of the primary key to distinguish entries with identical dimension combinations.
/// </summary>
field(10; "Entry No."; Integer)
{
Caption = 'Entry No.';
}
/// <summary>
/// Budget amount aggregated from G/L budget entries for this dimension combination.
/// Automatically formatted according to currency and amount display settings.
/// </summary>
field(11; Amount; Decimal)
{
AutoFormatExpression = '';
AutoFormatType = 1;
Caption = 'Amount';
ToolTip = 'Specifies the amount of the analysis view budget entry.';
}
}
keys
{
key(Key1; "Analysis View Code", "Budget Name", "G/L Account No.", "Dimension 1 Value Code", "Dimension 2 Value Code", "Dimension 3 Value Code", "Dimension 4 Value Code", "Business Unit Code", "Posting Date", "Entry No.")
{
Clustered = true;
}
key(Key2; "Analysis View Code", "Business Unit Code", "Budget Name", "G/L Account No.", "Posting Date", "Dimension 1 Value Code", "Dimension 2 Value Code", "Dimension 3 Value Code", "Dimension 4 Value Code")
{
SumIndexFields = Amount;
}
}
fieldgroups
{
}
/// <summary>
/// Gets the caption class for dimension fields based on analysis view configuration.
/// Provides dynamic field captions based on the analysis view's dimension setup.
/// </summary>
/// <param name="AnalysisViewDimType">Dimension number (1-4) to get caption class for</param>
/// <returns>Caption class string for dynamic field captioning</returns>
procedure GetCaptionClass(AnalysisViewDimType: Integer): Text[250]
var
AnalysisViewEntry: Record "Analysis View Entry";
begin
AnalysisViewEntry.Init();
AnalysisViewEntry."Analysis View Code" := "Analysis View Code";
exit(AnalysisViewEntry.GetCaptionClass(AnalysisViewDimType));
end;
/// <summary>
/// Copies dimension filters from account schedule line to analysis view budget entry.
/// Transfers filter criteria for dimension-based budget analysis and reporting.
/// </summary>
/// <param name="AccSchedLine">Account schedule line containing dimension filters to copy</param>
procedure CopyDimFilters(var AccSchedLine: Record "Acc. Schedule Line")
begin
AccSchedLine.CopyFilter("Dimension 1 Filter", "Dimension 1 Value Code");
AccSchedLine.CopyFilter("Dimension 2 Filter", "Dimension 2 Value Code");
AccSchedLine.CopyFilter("Dimension 3 Filter", "Dimension 3 Value Code");
AccSchedLine.CopyFilter("Dimension 4 Filter", "Dimension 4 Value Code");
end;
/// <summary>
/// Sets dimension filters on analysis view budget entry using text filter expressions.
/// Applies filter criteria for all four dimensions in budget analysis queries.
/// </summary>
/// <param name="DimFilter1">Filter expression for dimension 1 value code</param>
/// <param name="DimFilter2">Filter expression for dimension 2 value code</param>
/// <param name="DimFilter3">Filter expression for dimension 3 value code</param>
/// <param name="DimFilter4">Filter expression for dimension 4 value code</param>
procedure SetDimFilters(DimFilter1: Text; DimFilter2: Text; DimFilter3: Text; DimFilter4: Text)
begin
SetFilter("Dimension 1 Value Code", DimFilter1);
SetFilter("Dimension 2 Value Code", DimFilter2);
SetFilter("Dimension 3 Value Code", DimFilter3);
SetFilter("Dimension 4 Value Code", DimFilter4);
end;
}