Page 2671 Variable Account Distribution
- App
- Base Application
- Namespace
- Microsoft.Finance.AllocationAccount
- Versions
- 23-28
- Source table
- 2671
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Finance/AllocationAccount/VariableAccountDistribution.Page.al230 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.AllocationAccount;
/// <summary>
/// Configuration interface for variable allocation distribution rules with dynamic calculation capabilities.
/// Provides setup for breakdown accounts, calculation periods, and dimension filters for variable allocation methods.
/// </summary>
page 2671 "Variable Account Distribution"
{
PageType = ListPart;
SourceTable = "Alloc. Account Distribution";
AutoSplitKey = true;
DelayedInsert = true;
layout
{
area(content)
{
repeater(Control1)
{
ShowCaption = false;
field("Destination Account Type"; Rec."Destination Account Type")
{
ApplicationArea = All;
}
field("Destination Account Number"; Rec."Destination Account Number")
{
ApplicationArea = All;
}
field("Destination Account Name"; Rec.LookupDistributionAccountName())
{
Caption = 'Destination Account Name';
ApplicationArea = All;
ToolTip = 'Specifies the account name that the amount will be posted to.';
Editable = false;
}
field("Breakdown Account Type"; Rec."Breakdown Account Type")
{
ApplicationArea = All;
}
field("Breakdown Account Number"; Rec."Breakdown Account Number")
{
ApplicationArea = All;
}
field("Breakdown Account Name"; Rec.LookupBreakdownAccountName())
{
Caption = 'Breakdown Account Name';
Editable = false;
ApplicationArea = All;
ToolTip = 'Specifies the name of the Account that is used to calculate percentage for the distributions.';
}
field("Calculation Period"; Rec."Calculation Period")
{
ApplicationArea = All;
}
field(Filters; FiltersTxt)
{
ApplicationArea = All;
Caption = 'Breakdown Account Balance Filters';
ToolTip = 'Specifies the fitlers that will be used when the balance is calculated.';
Editable = false;
trigger OnAssistEdit()
begin
Page.RunModal(Page::"Alloc. Acc. Dist. Filters", Rec);
FiltersTxt := GetFiltersText();
end;
}
field("Dimension 1 Filter"; Rec."Dimension 1 Filter")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Dimension 2 Filter"; Rec."Dimension 2 Filter")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Dimension 3 Filter"; Rec."Dimension 3 Filter")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Dimension 4 Filter"; Rec."Dimension 4 Filter")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Dimension 5 Filter"; Rec."Dimension 5 Filter")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Dimension 6 Filter"; Rec."Dimension 6 Filter")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Dimension 7 Filter"; Rec."Dimension 7 Filter")
{
ApplicationArea = Dimensions;
Visible = false;
}
field("Dimension 8 Filter"; Rec."Dimension 8 Filter")
{
ApplicationArea = Dimensions;
Visible = false;
}
}
}
}
actions
{
area(processing)
{
action(PreviewDistributions)
{
ApplicationArea = Basic, Suite;
Caption = 'Test Allocation';
Image = Translation;
#pragma warning disable AA0219
ToolTip = 'Test the allocation account''s setup by distributing an amount on different dates.';
#pragma warning restore AA0219
Scope = Page;
trigger OnAction()
var
AllocationAccount: Record "Allocation Account";
AllocationAccountPreview: Page "Allocation Account Preview";
begin
AllocationAccount.Get(Rec."Allocation Account No.");
AllocationAccountPreview.UpdateAllocationAccount(AllocationAccount);
AllocationAccountPreview.Run();
end;
}
action(Dimensions)
{
ApplicationArea = Basic, Suite;
Caption = 'Dimensions';
Image = Dimensions;
ShortCutKey = 'Shift+Ctrl+D';
#pragma warning disable AA0219
ToolTip = 'View or edit dimensions, such as area, project, or department, that you can assign to journal lines to distribute costs and analyze transaction history.';
#pragma warning restore AA0219
trigger OnAction()
begin
Rec.ShowDimensions();
if Rec."Dimension Set ID" <> xRec."Dimension Set ID" then
Rec.Modify();
end;
}
action(DefineFilters)
{
ApplicationArea = Basic, Suite;
Caption = 'Breakdown account balance filters';
Image = FilterLines;
ToolTip = 'Specifies the fitlers that will be used when the balance is calculated.';
trigger OnAction()
begin
Page.RunModal(Page::"Alloc. Acc. Dist. Filters", Rec);
FiltersTxt := GetFiltersText();
end;
}
}
}
trigger OnNewRecord(BelowxRec: Boolean)
begin
Rec."Account Type" := Rec."Account Type"::Variable;
Rec."Calculation Period" := xRec."Calculation Period";
Rec."Destination Account Type" := xRec."Destination Account Type";
end;
trigger OnOpenPage()
begin
if (Rec.GetFilters() <> '') then
if (not Rec.Find()) then
if Rec.FindFirst() then;
end;
trigger OnAfterGetRecord()
begin
FiltersTxt := GetFiltersText();
end;
trigger OnAfterGetCurrRecord()
begin
FiltersTxt := GetFiltersText();
end;
local procedure GetFiltersText(): Text
var
FiltersTextBuilder: TextBuilder;
begin
if Rec."Dimension 1 Filter" <> '' then
FiltersTextBuilder.Append(StrSubstNo(FilterCaptionLbl, Rec.GetDimensionCaption(1), Rec."Dimension 1 Filter"));
if Rec."Dimension 2 Filter" <> '' then
FiltersTextBuilder.Append(StrSubstNo(FilterCaptionLbl, Rec.GetDimensionCaption(2), Rec."Dimension 2 Filter"));
if Rec."Dimension 3 Filter" <> '' then
FiltersTextBuilder.Append(StrSubstNo(FilterCaptionLbl, Rec.GetDimensionCaption(3), Rec."Dimension 3 Filter"));
if Rec."Dimension 4 Filter" <> '' then
FiltersTextBuilder.Append(StrSubstNo(FilterCaptionLbl, Rec.GetDimensionCaption(4), Rec."Dimension 4 Filter"));
if Rec."Dimension 5 Filter" <> '' then
FiltersTextBuilder.Append(StrSubstNo(FilterCaptionLbl, Rec.GetDimensionCaption(5), Rec."Dimension 5 Filter"));
if Rec."Dimension 6 Filter" <> '' then
FiltersTextBuilder.Append(StrSubstNo(FilterCaptionLbl, Rec.GetDimensionCaption(6), Rec."Dimension 6 Filter"));
if Rec."Dimension 7 Filter" <> '' then
FiltersTextBuilder.Append(StrSubstNo(FilterCaptionLbl, Rec.GetDimensionCaption(7), Rec."Dimension 7 Filter"));
if Rec."Dimension 8 Filter" <> '' then
FiltersTextBuilder.Append(StrSubstNo(FilterCaptionLbl, Rec.GetDimensionCaption(8), Rec."Dimension 8 Filter"));
if Rec."Business Unit Code Filter" <> '' then
FiltersTextBuilder.Append(StrSubstNo(FilterCaptionLbl, BusinessUnitCodeFilterLblLbl, Rec."Business Unit Code Filter"));
exit(FiltersTextBuilder.ToText());
end;
var
FilterCaptionLbl: Label '%1 - %2; ', Locked = true;
BusinessUnitCodeFilterLblLbl: Label 'Business Unit Code Filter';
FiltersTxt: Text;
}