Table 1249 Bank Stmt Multiple Match Line

App
Base Application
Namespace
Microsoft.Bank.Reconciliation
Versions
17-28

Fields, 6Keys, 1Procedures, 1Events, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Bank/Reconciliation/BankStmtMultipleMatchLine.Table.al117 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.Reconciliation;

using Microsoft.Finance.GeneralLedger.Journal;

/// <summary>
/// Temporary table for managing multiple match scenarios in bank statement reconciliation.
/// Stores information about multiple potential matches for a single bank statement line,
/// enabling users to review and select the most appropriate match from several candidates.
/// Used in complex matching scenarios where automatic algorithms identify multiple valid options.
/// </summary>
/// <remarks>
/// Contains match candidate details including entry numbers, account information, document references,
/// and due dates. Supports the review process for ambiguous matches where user intervention is
/// required to select the correct application. Facilitates one-to-many and many-to-one matching scenarios.
/// </remarks>
table 1249 "Bank Stmt Multiple Match Line"
{
    Caption = 'Bank Stmt Multiple Match Line';
    DataClassification = CustomerContent;

    fields
    {
        /// <summary>
        /// Sequential line number for organizing multiple match candidates.
        /// Used to group and order match options for a specific reconciliation scenario.
        /// </summary>
        field(1; "Line No."; Integer)
        {
            Caption = 'Line No.';
        }
        /// <summary>
        /// Ledger entry number of the potential match candidate.
        /// References the specific customer, vendor, or G/L entry that could be matched.
        /// </summary>
        field(2; "Entry No."; Integer)
        {
            Caption = 'Entry No.';
        }
        /// <summary>
        /// Type of account for the match candidate.
        /// Specifies whether the match is against G/L Account, Customer, or Vendor entries.
        /// </summary>
        field(4; "Account Type"; Option)
        {
            Caption = 'Account Type';
            OptionCaption = 'G/L Account,Customer,Vendor';
            OptionMembers = "G/L Account",Customer,Vendor;
        }
        /// <summary>
        /// Account number of the potential match candidate.
        /// Identifies the specific G/L account, customer, or vendor for the match.
        /// </summary>
        field(5; "Account No."; Code[20])
        {
            Caption = 'Account No.';
        }
        /// <summary>
        /// Document number associated with the match candidate entry.
        /// Provides reference information for identifying and validating the match.
        /// </summary>
        field(6; "Document No."; Code[20])
        {
            Caption = 'Document No.';
        }
        /// <summary>
        /// Due date of the match candidate entry.
        /// Used for temporal matching analysis and payment timing validation.
        /// </summary>
        field(10; "Due Date"; Date)
        {
            Caption = 'Due Date';
        }
    }

    keys
    {
        key(Key1; "Line No.", "Entry No.", "Account Type", "Account No.")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    /// <summary>
    /// Inserts a new multiple match line record from a ledger entry matching buffer.
    /// Populates match candidate information including account details, entry references,
    /// and document information for user review and selection in multiple match scenarios.
    /// </summary>
    /// <param name="TempLedgerEntryMatchingBuffer">Source ledger entry matching buffer containing match candidate data.</param>
    /// <param name="LineNo">Line number for organizing multiple match candidates.</param>
    /// <param name="AccountType">Type of account for the match candidate (G/L Account, Customer, Vendor).</param>
    procedure InsertLine(TempLedgerEntryMatchingBuffer: Record "Ledger Entry Matching Buffer" temporary; LineNo: Integer; AccountType: Enum "Gen. Journal Account Type")
    begin
        "Line No." := LineNo;
        "Account Type" := AccountType.AsInteger();
        "Account No." := TempLedgerEntryMatchingBuffer."Account No.";
        "Entry No." := TempLedgerEntryMatchingBuffer."Entry No.";
        "Due Date" := TempLedgerEntryMatchingBuffer."Due Date";
        "Document No." := TempLedgerEntryMatchingBuffer."Document No.";
        OnInsertLineOnBeforeInsert(Rec, TempLedgerEntryMatchingBuffer, LineNo, AccountType);
        Insert();
    end;

    [IntegrationEvent(false, false)]
    local procedure OnInsertLineOnBeforeInsert(var BankStmtMultipleMatchLine: Record "Bank Stmt Multiple Match Line"; TempLedgerEntryMatchingBuffer: Record "Ledger Entry Matching Buffer" temporary; LineNo: Integer; AccountType: Enum "Gen. Journal Account Type")
    begin
    end;
}