Codeunit 115 G/L Entry-Edit, source in 29
Source29
src/Layers/W1/BaseApp/Finance/GeneralLedger/Ledger/GLEntryEdit.Codeunit.al66 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.GeneralLedger.Ledger;
using System.Diagnostics;
/// <summary>
/// Handles editing of G/L entries with validation and change logging capabilities.
/// Provides controlled modification of limited G/L entry fields with audit trail tracking.
/// </summary>
/// <remarks>
/// TableNo = G/L Entry. Validates critical fields remain unchanged during edit operations.
/// Includes event subscriber for automatic change logging of G/L Entry modifications.
/// Extensibility: OnBeforeGLLedgEntryModify event for custom validation logic.
/// </remarks>
codeunit 115 "G/L Entry-Edit"
{
EventSubscriberInstance = Manual;
Permissions = TableData "G/L Entry" = m;
TableNo = "G/L Entry";
trigger OnRun()
var
GLEntryEdit: Codeunit "G/L Entry-Edit";
begin
BindSubscription(GLEntryEdit);
GLEntry := Rec;
GLEntry.LockTable();
GLEntry.Find();
GLEntry.Description := Rec.Description;
OnBeforeGLLedgEntryModify(GLEntry, Rec);
GLEntry.TestField("Entry No.", Rec."Entry No.");
GLEntry.TestField("Posting Date", Rec."Posting Date");
GLEntry.TestField(Amount, Rec.Amount);
GLEntry.TestField("Document No.", Rec."Document No.");
GLEntry.TestField("VAT Amount", Rec."VAT Amount");
GLEntry.TestField("Debit Amount", Rec."Debit Amount");
GLEntry.TestField("Credit Amount", Rec."Credit Amount");
GLEntry.Modify(true);
Rec := GLEntry;
end;
var
GLEntry: Record "G/L Entry";
/// <summary>
/// Integration event raised before modifying a G/L entry.
/// </summary>
/// <param name="GLEntry">G/L entry being modified</param>
/// <param name="FromGLEntry">G/L entry with new values</param>
[IntegrationEvent(false, false)]
local procedure OnBeforeGLLedgEntryModify(var GLEntry: Record "G/L Entry"; FromGLEntry: Record "G/L Entry")
begin
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Change Log Management", 'OnAfterIsAlwaysLoggedTable', '', false, false)]
local procedure OnAfterIsAlwaysLoggedTable(TableID: Integer; var AlwaysLogTable: Boolean)
begin
if TableID = DATABASE::"G/L Entry" then
AlwaysLogTable := true;
end;
}