Page 382 Apply Check Ledger Entries

App
Base Application
Namespace
Microsoft.Bank.Check
Versions
17-28
Source table
272

Procedures, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Bank/Check/ApplyCheckLedgerEntries.Page.al196 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.Bank.Check;

using Microsoft.Bank.Reconciliation;

/// <summary>
/// Provides interface for applying check ledger entries to bank account reconciliation lines.
/// Enables users to match checks with bank statement entries for accurate reconciliation.
/// </summary>
/// <remarks>
/// Source Table: Check Ledger Entry (272). Integrates with Bank Account Reconciliation.
/// Supports manual check matching and automated statement reconciliation processes.
/// </remarks>
page 382 "Apply Check Ledger Entries"
{
    Caption = 'Apply Check Ledger Entries';
    PageType = Worksheet;
    SourceTable = "Check Ledger Entry";

    layout
    {
        area(content)
        {
            repeater(Control1)
            {
                ShowCaption = false;
                field(LineApplied; LineApplied)
                {
                    ApplicationArea = Basic, Suite;
                    Caption = 'Applied';
                    ToolTip = 'Specifies if the check ledger entry has been applied.';

                    trigger OnValidate()
                    begin
                        LineAppliedOnPush();
                    end;
                }
                field("Posting Date"; Rec."Posting Date")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                }
                field("Document Type"; Rec."Document Type")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                }
                field("Document No."; Rec."Document No.")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                }
                field("Check Date"; Rec."Check Date")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                }
                field("Check No."; Rec."Check No.")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                }
                field(Amount; Rec.Amount)
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                }
                field("Check Type"; Rec."Check Type")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                }
                field(Open; Rec.Open)
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                }
                field("Statement Status"; Rec."Statement Status")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    Visible = false;
                }
                field("Statement No."; Rec."Statement No.")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    Visible = false;
                }
                field("Statement Line No."; Rec."Statement Line No.")
                {
                    ApplicationArea = Basic, Suite;
                    Editable = false;
                    Visible = false;
                }
            }
            group(Control25)
            {
                ShowCaption = false;
#pragma warning disable AA0100
                field("BankAccReconLine.""Statement Amount"""; BankAccReconLine."Statement Amount")
#pragma warning restore AA0100
                {
                    ApplicationArea = Basic, Suite;
                    AutoFormatType = 1;
                    Caption = 'Statement Amount';
                    Editable = false;
                    ToolTip = 'Specifies the amount that was applied in the selected check ledger entry line.';
                }
                field(AppliedAmount; BankAccReconLine."Applied Amount")
                {
                    ApplicationArea = Basic, Suite;
                    AutoFormatType = 1;
                    Caption = 'Applied Amount';
                    Editable = false;
                    ToolTip = 'Specifies the amount that was applied by the check ledger entry in the selected line.';
                }
                field("BankAccReconLine.Difference"; BankAccReconLine.Difference)
                {
                    ApplicationArea = Basic, Suite;
                    AutoFormatType = 1;
                    Caption = 'Difference';
                    Editable = false;
                    ToolTip = 'Specifies the difference between the applied amount and the statement amount in the selected line.';
                }
            }
        }
        area(factboxes)
        {
            systempart(Control1900383207; Links)
            {
                ApplicationArea = RecordLinks;
                Visible = false;
            }
            systempart(Control1905767507; Notes)
            {
                ApplicationArea = Notes;
                Visible = false;
            }
        }
    }

    actions
    {
    }

    trigger OnAfterGetCurrRecord()
    begin
        LineApplied :=
          (Rec."Statement Status" = Rec."Statement Status"::"Check Entry Applied") and
          (Rec."Statement No." = BankAccReconLine."Statement No.") and
          (Rec."Statement Line No." = BankAccReconLine."Statement Line No.");
    end;

    trigger OnAfterGetRecord()
    begin
        LineApplied :=
          (Rec."Statement Status" = Rec."Statement Status"::"Check Entry Applied") and
          (Rec."Statement No." = BankAccReconLine."Statement No.") and
          (Rec."Statement Line No." = BankAccReconLine."Statement Line No.");
    end;

    var
        CheckLedgEntry: Record "Check Ledger Entry";
        BankAccReconLine: Record "Bank Acc. Reconciliation Line";
        CheckSetStmtNo: Codeunit "Check Entry Set Recon.-No.";
        ChangeAmount: Boolean;
        LineApplied: Boolean;

    /// <summary>
    /// Initializes the page with bank account reconciliation line information.
    /// Sets up context for check entry application and amount change handling.
    /// </summary>
    /// <param name="NewBankAccReconLine">Bank reconciliation line to apply check entries against</param>
    procedure SetStmtLine(NewBankAccReconLine: Record "Bank Acc. Reconciliation Line")
    begin
        BankAccReconLine := NewBankAccReconLine;
        ChangeAmount := BankAccReconLine."Statement Amount" = 0;
    end;

    /// <summary>
    /// Toggles the application status of a check ledger entry to a bank reconciliation line.
    /// Updates statement numbers and reconciliation status based on current application state.
    /// </summary>
    local procedure LineAppliedOnPush()
    begin
        CheckLedgEntry.Copy(Rec);
        CheckSetStmtNo.ToggleReconNo(CheckLedgEntry, BankAccReconLine, ChangeAmount);
        CurrPage.Update();
    end;
}