Page 2674 Allocation Account Preview, source in 29

Source29

src/Layers/W1/BaseApp/Finance/AllocationAccount/AllocationAccountPreview.Page.al134 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>
/// Preview interface for allocation line calculations showing detailed distribution results.
/// Provides read-only view of how allocation amounts will be distributed across destination accounts.
/// </summary>
page 2674 "Allocation Account Preview"
{
    PageType = Worksheet;
    SourceTable = "Allocation Line";
    DeleteAllowed = false;
    Caption = 'Allocation Account Preview';

    layout
    {
        area(Content)
        {
            group(MainGroup)
            {
                ShowCaption = false;
                field(AmountToAllocate; AmountToAllocate)
                {
                    Caption = 'Amount to Allocate';
                    AutoFormatType = 1;
                    AutoFormatExpression = '';
                    ApplicationArea = All;
                    ToolTip = 'Specifies the amount to be allocated to the Destination Account.';
                    trigger OnValidate()
                    begin
                        UpdateData()
                    end;
                }
                field(PostingDate; PostingDate)
                {
                    Caption = 'Posting Date';
                    ApplicationArea = All;
                    ToolTip = 'Specifies the date on which the allocation is posted.';
                    trigger OnValidate()
                    begin
                        UpdateData()
                    end;
                }
            }

            repeater(MainContent)
            {
                Editable = false;
                field(DestinationAccountNumber; Rec."Destination Account Number")
                {
                    Caption = 'Destination Account No.';
                    ApplicationArea = All;
                }
                field(DestinationAccountName; Rec."Destination Account Name")
                {
                    Caption = 'Destination Account Name';
                    ApplicationArea = All;
                    Editable = false;
                }
                field(Amount; Rec.Amount)
                {
                    Caption = 'Amount';
                    ApplicationArea = All;
                }
                field(BreakdownAccountNumber; Rec."Breakdown Account Number")
                {
                    Caption = 'Breakdown Account No.';
                    ApplicationArea = All;
                    Visible = not FixedAllocation;
                }
                field("Breakdown Account Name"; Rec."Breakdown Account Name")
                {
                    Caption = 'Breakdown Account Name';
                    ApplicationArea = All;
                    Visible = not FixedAllocation;
                }
                field(BreakdownAccountBalance; Rec."Breakdown Account Balance")
                {
                    Caption = 'Breakdown Account Balance';
                    ApplicationArea = All;
                    Visible = not FixedAllocation;
                }
                field(Percentage; Rec.Percentage)
                {
                    Caption = 'Percentage';
                    ApplicationArea = All;
                }
            }
        }
    }

    trigger OnOpenPage()
    var
        AllocationAccountMgt: Codeunit "Allocation Account Mgt.";
    begin
        PostingDate := WorkDate();
        AmountToAllocate := AllocationAccountMgt.GetDefaultAmountForPreview();
        UpdateData();
    end;

    local procedure UpdateData()
    var
        AllocationAccountMgt: Codeunit "Allocation Account Mgt.";
    begin
        Rec.DeleteAll();
        if FixedAllocation then
            AllocationAccountMgt.GenerateFixedAllocationLines(AllocationAccount, Rec, AmountToAllocate, 0, '')
        else
            AllocationAccountMgt.GenerateVariableAllocationLines(AllocationAccount, Rec, AmountToAllocate, PostingDate, 0, '');

        Rec.FindFirst();
        CurrPage.Update(false);
    end;

    internal procedure UpdateAllocationAccount(var NewAllocationAccount: Record "Allocation Account")
    begin
        AllocationAccount := NewAllocationAccount;
    end;

    internal procedure SetFixedAllocation(NewFixedAllocation: boolean)
    begin
        FixedAllocation := NewFixedAllocation;
    end;

    var
        AllocationAccount: Record "Allocation Account";
        AmountToAllocate: Decimal;
        PostingDate: Date;
        FixedAllocation: Boolean;
}