Page 543 Default Dimension Priorities, source in 29
Source29
src/Layers/W1/BaseApp/Finance/Dimension/DefaultDimensionPriorities.Page.al208 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.Dimension;
using Microsoft.Foundation.AuditCodes;
/// <summary>
/// Manages default dimension priority settings for source codes to control dimension inheritance behavior.
/// Configures the order of dimension precedence when multiple sources provide dimension values for the same dimension.
/// </summary>
page 543 "Default Dimension Priorities"
{
ApplicationArea = Dimensions;
Caption = 'Default Dimension Priorities';
DelayedInsert = true;
PageType = Worksheet;
SaveValues = true;
SourceTable = "Default Dimension Priority";
SourceTableView = sorting("Source Code", Priority);
UsageCategory = Administration;
layout
{
area(content)
{
group(General)
{
Caption = 'General';
field(CurrentSourceCode; CurrentSourceCode)
{
ApplicationArea = Dimensions;
Caption = 'Source Code';
Lookup = true;
TableRelation = "Source Code".Code;
ToolTip = 'Specifies the source.';
trigger OnLookup(var Text: Text): Boolean
begin
CurrPage.SaveRecord();
LookupSourceCode(CurrentSourceCode, Rec);
CurrPage.Update(false);
end;
trigger OnValidate()
var
SourceCode: Record "Source Code";
begin
SourceCode.Get(CurrentSourceCode);
CurrentSourceCodeOnAfterValida();
end;
}
}
repeater(Control1)
{
ShowCaption = false;
field("Table ID"; Rec."Table ID")
{
ApplicationArea = Dimensions;
trigger OnValidate()
begin
TableIDOnAfterValidate();
end;
}
field("Table Caption"; Rec."Table Caption")
{
ApplicationArea = Dimensions;
DrillDown = false;
}
field(Priority; Rec.Priority)
{
ApplicationArea = Dimensions;
trigger OnValidate()
begin
PriorityOnAfterValidate();
end;
}
}
}
area(factboxes)
{
systempart(Control1900383207; Links)
{
ApplicationArea = RecordLinks;
Visible = false;
}
systempart(Control1905767507; Notes)
{
ApplicationArea = Notes;
Visible = false;
}
}
}
actions
{
area(Processing)
{
action(Initialize)
{
ApplicationArea = All;
Caption = 'Initialize Dimension Priorities';
ToolTip = 'Initialize Default Dimension Priorities for Source Code.';
Image = SetPriorities;
Promoted = true;
PromotedCategory = Process;
PromotedIsBig = true;
trigger OnAction()
begin
Rec.InitializeDefaultDimPrioritiesForSourceCode();
end;
}
}
}
trigger OnAfterGetRecord()
begin
PriorityOnFormat(Format(Rec.Priority));
end;
trigger OnOpenPage()
begin
if Rec."Source Code" <> '' then
CurrentSourceCode := Rec."Source Code";
OpenSourceCode(CurrentSourceCode, Rec);
end;
var
#pragma warning disable AA0074
Text000: Label '<auto>';
Text001: Label 'You need to define a source code.';
#pragma warning restore AA0074
CurrentSourceCode: Code[20];
local procedure OpenSourceCode(var CurrentSourceCode: Code[20]; var DefaultDimPriority: Record "Default Dimension Priority")
begin
CheckSourceCode(CurrentSourceCode);
DefaultDimPriority.FilterGroup := 2;
DefaultDimPriority.SetRange("Source Code", CurrentSourceCode);
DefaultDimPriority.FilterGroup := 0;
end;
local procedure CheckSourceCode(var CurrentSourceCode: Code[20])
var
SourceCode: Record "Source Code";
begin
if not SourceCode.Get(CurrentSourceCode) then
if SourceCode.FindFirst() then
CurrentSourceCode := SourceCode.Code
else
Error(Text001);
end;
/// <summary>
/// Sets the source code for default dimension priority filtering and management.
/// </summary>
/// <param name="CurrentSourceCode">Source code to set for dimension priority context</param>
/// <param name="DefaultDimPriority">Default dimension priority record to update with source code</param>
procedure SetSourceCode(CurrentSourceCode: Code[20]; var DefaultDimPriority: Record "Default Dimension Priority")
begin
DefaultDimPriority.FilterGroup := 2;
DefaultDimPriority.SetRange("Source Code", CurrentSourceCode);
DefaultDimPriority.FilterGroup := 0;
if DefaultDimPriority.Find('-') then;
end;
local procedure LookupSourceCode(var CurrentSourceCode: Code[20]; var DefaultDimPriority: Record "Default Dimension Priority")
var
SourceCode: Record "Source Code";
begin
Commit();
SourceCode.Code := DefaultDimPriority.GetRangeMax("Source Code");
if PAGE.RunModal(0, SourceCode) = ACTION::LookupOK then begin
CurrentSourceCode := SourceCode.Code;
SetSourceCode(CurrentSourceCode, DefaultDimPriority);
end;
end;
local procedure TableIDOnAfterValidate()
begin
Rec.CalcFields("Table Caption");
end;
local procedure PriorityOnAfterValidate()
begin
CurrPage.Update();
end;
local procedure CurrentSourceCodeOnAfterValida()
begin
CurrPage.SaveRecord();
SetSourceCode(CurrentSourceCode, Rec);
CurrPage.Update(false);
end;
local procedure PriorityOnFormat(Text: Text[1024])
begin
if Rec.Priority = 0 then
Text := Text000;
end;
}