Table 1232 Positive Pay Entry Detail

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

Fields, 11Keys, 1Procedures, 1

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Bank/PositivePay/PositivePayEntryDetail.Table.al167 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.PositivePay;

using Microsoft.Bank.BankAccount;
using Microsoft.Finance.Currency;
using System.Security.AccessControl;

/// <summary>
/// Stores individual check details for positive pay entries, providing detailed information about each check in an upload.
/// This table maintains the detailed check information that was uploaded to the bank for positive pay validation.
/// </summary>
/// <remarks>
/// The Positive Pay Entry Detail table stores the individual check records that were submitted to the bank as part of
/// a positive pay upload. Each record represents a single check with its complete details including check number, amount,
/// payee, and document type. This table provides an audit trail of what check information was sent to the bank and when.
/// The records are linked to their parent Positive Pay Entry through the bank account and upload date-time fields.
/// </remarks>
table 1232 "Positive Pay Entry Detail"
{
    Caption = 'Positive Pay Entry Detail';
    DataClassification = CustomerContent;

    fields
    {
        /// <summary>
        /// Bank account number for which this positive pay entry detail was uploaded.
        /// </summary>
        field(1; "Bank Account No."; Code[20])
        {
            Caption = 'Bank Account No.';
            ToolTip = 'Specifies the bank account number. If you select Balance at Date, the balance as of the last day in the relevant time interval is displayed.';
            TableRelation = "Bank Account"."No.";
        }
        /// <summary>
        /// Date and time when this positive pay entry was uploaded to the bank.
        /// </summary>
        field(2; "Upload Date-Time"; DateTime)
        {
            Caption = 'Upload Date-Time';
            TableRelation = "Positive Pay Entry"."Upload Date-Time" where("Bank Account No." = field("Bank Account No."));
        }
        /// <summary>
        /// Sequential number identifying this detail record within the positive pay upload.
        /// </summary>
        field(3; "No."; Integer)
        {
            Caption = 'No.';
            ToolTip = 'Specifies the number of the involved entry or record, according to the specified number series.';
        }
        /// <summary>
        /// Check number as it appears on the physical check document.
        /// </summary>
        field(5; "Check No."; Code[20])
        {
            Caption = 'Check No.';
            ToolTip = 'Specifies the number on the check.';
        }
        /// <summary>
        /// Currency code for the check amount, typically matching the bank account's currency.
        /// </summary>
        field(6; "Currency Code"; Code[10])
        {
            Caption = 'Currency Code';
            ToolTip = 'Specifies the currency code for the amount on the line.';
            TableRelation = Currency.Code;
        }
        /// <summary>
        /// Type of document indicating whether this is a regular check or a voided check.
        /// </summary>
        field(7; "Document Type"; Option)
        {
            Caption = 'Document Type';
            ToolTip = 'Specifies the type of the document on the line.';
            OptionCaption = 'CHECK,VOID';
            OptionMembers = CHECK,VOID;
        }
        /// <summary>
        /// Date when the check was issued or printed.
        /// </summary>
        field(8; "Document Date"; Date)
        {
            Caption = 'Document Date';
            ToolTip = 'Specifies the date when the related document was created.';
        }
        /// <summary>
        /// Monetary amount of the check in the specified currency.
        /// </summary>
        field(9; Amount; Decimal)
        {
            AutoFormatExpression = Rec."Currency Code";
            AutoFormatType = 1;
            Caption = 'Amount';
            ToolTip = 'Specifies the payment amount.';
        }
        /// <summary>
        /// Name of the individual or organization to whom the check is payable.
        /// </summary>
        field(10; Payee; Text[100])
        {
            Caption = 'Payee';
            ToolTip = 'Specifies the recipient of the payment.';
            DataClassification = EndUserIdentifiableInformation;
        }
        /// <summary>
        /// User ID of the person who created or last updated this positive pay entry detail.
        /// </summary>
        field(11; "User ID"; Code[50])
        {
            Caption = 'User ID';
            ToolTip = 'Specifies the ID of the user who posted the entry, to be used, for example, in the change log.';
            DataClassification = EndUserIdentifiableInformation;
            TableRelation = User."User Name";
        }
        /// <summary>
        /// Date when this positive pay entry detail was last updated.
        /// </summary>
        field(12; "Update Date"; Date)
        {
            Caption = 'Update Date';
            ToolTip = 'Specifies when the Positive Pay export was updated.';
        }
    }

    keys
    {
        key(Key1; "Bank Account No.", "Upload Date-Time", "No.")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    /// <summary>
    /// Copies data from a Positive Pay Detail record into this entry detail record for tracking purposes.
    /// </summary>
    /// <param name="PosPayDetail">The source positive pay detail record to copy data from.</param>
    /// <param name="BankAcct">The bank account code to associate with this entry detail.</param>
    /// <remarks>
    /// This procedure is used to create audit trail records that track what check information was uploaded to the bank.
    /// It maps document types from the export format to the entry detail format and sets tracking fields.
    /// </remarks>
    procedure CopyFromPosPayEntryDetail(PosPayDetail: Record "Positive Pay Detail"; BankAcct: Code[20])
    begin
        "Bank Account No." := BankAcct;
        "No." := PosPayDetail."Entry No.";
        "Check No." := PosPayDetail."Check Number";
        "Currency Code" := PosPayDetail."Currency Code";
        if PosPayDetail."Record Type Code" = 'V' then
            "Document Type" := "Document Type"::VOID
        else
            "Document Type" := "Document Type"::CHECK;

        "Document Date" := PosPayDetail."Issue Date";
        Amount := PosPayDetail.Amount;
        Payee := PosPayDetail.Payee;
        "User ID" := CopyStr(UserId(), 1, MaxStrLen("User ID"));
        "Update Date" := Today;
    end;
}