Table 2584 Dim Correction Set Buffer, source in 29
Source29
src/Layers/W1/BaseApp/Finance/Dimension/Correction/DimCorrectionSetBuffer.Table.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.Dimension.Correction;
using Microsoft.Finance.Dimension;
/// <summary>
/// Temporary buffer table for managing dimension set transformations during dimension correction processing.
/// Stores mappings between original and target dimension set IDs with ledger entry tracking.
/// </summary>
table 2584 "Dim Correction Set Buffer"
{
DataClassification = CustomerContent;
fields
{
/// <summary>
/// Reference to the parent dimension correction entry.
/// </summary>
field(1; "Dimension Correction Entry No."; Integer)
{
DataClassification = CustomerContent;
TableRelation = "Dimension Correction"."Entry No.";
}
/// <summary>
/// Original dimension set ID to be corrected.
/// </summary>
field(2; "Dimension Set ID"; Integer)
{
DataClassification = CustomerContent;
TableRelation = "Dimension Set Entry"."Dimension Set ID";
}
/// <summary>
/// Target dimension set ID after correction is applied.
/// </summary>
field(3; "Target Set ID"; Integer)
{
DataClassification = CustomerContent;
TableRelation = "Dimension Set Entry"."Dimension Set ID";
}
/// <summary>
/// Indicates whether multiple target set IDs are required for this dimension set.
/// </summary>
field(4; "Multiple Target Set ID"; Boolean)
{
DataClassification = CustomerContent;
}
/// <summary>
/// BLOB field containing serialized ledger entry numbers affected by this dimension set correction.
/// </summary>
field(5; "Ledger Entries"; Blob)
{
DataClassification = CustomerContent;
}
}
keys
{
key(Key1; "Dimension Correction Entry No.", "Dimension Set ID")
{
Clustered = true;
}
key(Key2; "Dimension Correction Entry No.", "Target Set ID")
{
}
key(Key3; "Dimension Correction Entry No.", "Multiple Target Set ID")
{
}
}
/// <summary>
/// Adds a ledger entry number to the list of entries affected by this dimension set correction.
/// </summary>
/// <param name="EntryNo">Ledger entry number to add to the affected entries list</param>
procedure AddLedgerEntry(EntryNo: Integer)
var
LedgerEntries: Text;
begin
LedgerEntries := GetSetLedgerEntries();
LedgerEntries += StrSubstNo(LedgerEntryNoFormatTxt, EntryNo);
SetLedgerEntries(LedgerEntries);
end;
/// <summary>
/// Checks whether a specific ledger entry number is included in the affected entries list.
/// </summary>
/// <param name="EntryNo">Ledger entry number to check for inclusion</param>
/// <returns>True if the entry number is in the affected entries list, false otherwise</returns>
procedure ContainsLedgerEntry(EntryNo: Integer): Boolean
var
LedgerEntries: Text;
begin
LedgerEntries := GetSetLedgerEntries();
exit(LedgerEntries.Contains(StrSubstNo(LedgerEntryNoFormatTxt, EntryNo)));
end;
/// <summary>
/// Sets the list of affected ledger entry numbers in the BLOB field.
/// </summary>
/// <param name="LedgerEntries">Formatted text containing ledger entry numbers</param>
procedure SetLedgerEntries(LedgerEntries: Text)
var
LedgerEntriesOutStream: OutStream;
begin
Rec."Ledger Entries".CreateOutStream(LedgerEntriesOutStream);
LedgerEntriesOutStream.WriteText(LedgerEntries);
end;
/// <summary>
/// Retrieves the list of affected ledger entry numbers from the BLOB field.
/// </summary>
/// <returns>Formatted text containing ledger entry numbers</returns>
procedure GetSetLedgerEntries(): Text;
var
LedgerEntriesInStream: InStream;
LedgerEntries: Text;
begin
Rec.CalcFields("Ledger Entries");
Rec."Ledger Entries".CreateInStream(LedgerEntriesInStream);
LedgerEntriesInStream.ReadText(LedgerEntries);
exit(LedgerEntries);
end;
var
LedgerEntryNoFormatTxt: Label ';%1;', Locked = true, Comment = '%1 Entry No.';
}