Page 610 IC General Journal, source in 29
Source29
src/Layers/W1/BaseApp/Finance/Intercompany/Journal/ICGeneralJournal.Page.al1399 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.Intercompany.Journal;
using Microsoft.EServices.EDocument;
using Microsoft.Finance.Currency;
using Microsoft.Finance.Dimension;
using Microsoft.Finance.GeneralLedger.Journal;
using Microsoft.Finance.GeneralLedger.Posting;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Finance.ReceivablesPayables;
using Microsoft.Foundation.Reporting;
using Microsoft.Intercompany.GLAccount;
using Microsoft.Utilities;
using System.Automation;
using System.Environment;
using System.Environment.Configuration;
using System.Integration;
using System.Telemetry;
using System.Threading;
/// <summary>
/// Intercompany general journal interface for creating and managing intercompany transactions between related companies.
/// Provides specialized journal entry capabilities with intercompany partner validation, currency handling, and approval workflow integration.
/// </summary>
/// <remarks>
/// Primary data source: Gen. Journal Line with intercompany template context. Integrates with intercompany partner setup, G/L account mapping, and posting processes.
/// Navigation: Journal batch selection → Line entry → Posting and reconciliation operations.
/// Extensible via page extensions for additional intercompany fields and custom validation logic.
/// </remarks>
page 610 "IC General Journal"
{
ApplicationArea = Intercompany;
AutoSplitKey = true;
Caption = 'Intercompany General Journal';
DataCaptionFields = "Journal Batch Name";
DelayedInsert = true;
PageType = Worksheet;
AboutTitle = 'About Intercompany General Journal';
AboutText = 'Record and post intercompany transactions by entering journal lines that specify accounts, amounts, document details, and partner information, enabling accurate allocation of costs and balances between intercompany partners.';
SaveValues = true;
SourceTable = "Gen. Journal Line";
UsageCategory = Tasks;
layout
{
area(content)
{
group(JournalHeader)
{
ShowCaption = false;
field(CurrentJnlBatchName; CurrentJnlBatchName)
{
ApplicationArea = Intercompany;
Caption = 'Batch Name';
Lookup = true;
ToolTip = 'Specifies the name of the journal batch, a personalized journal layout, that the journal is based on.';
trigger OnLookup(var Text: Text): Boolean
begin
CurrPage.SaveRecord();
GenJnlManagement.LookupName(CurrentJnlBatchName, Rec);
SetControlAppearanceFromBatch();
CurrPage.Update(false);
end;
trigger OnValidate()
begin
GenJnlManagement.CheckName(CurrentJnlBatchName, Rec);
CurrentJnlBatchNameOnAfterVali();
end;
}
field(GenJnlBatchApprovalStatus; GeneralJournalBatchApprovalStatus)
{
ApplicationArea = Basic, Suite;
Caption = 'Approval Status';
Editable = false;
Visible = EnabledGeneralJournalBatchWorkflowsExist;
ToolTip = 'Specifies the approval status for general journal batch.';
}
}
repeater(Control1)
{
ShowCaption = false;
field("Posting Date"; Rec."Posting Date")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the entry''s posting date.';
}
field("Document Date"; Rec."Document Date")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the date when the related document was created.';
Visible = false;
}
field("Document Type"; Rec."Document Type")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the type of the related document.';
}
field("Document No."; Rec."Document No.")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the number of the related document.';
ShowMandatory = true;
}
field("External Document No."; Rec."External Document No.")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies a document number that refers to the customer''s or vendor''s numbering system.';
Visible = false;
}
field("Account Type"; Rec."Account Type")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the purpose of the account. Newly created accounts are automatically assigned the Posting account type, but you can change this.';
trigger OnValidate()
begin
GenJnlManagement.GetAccounts(Rec, AccName, BalAccName);
EnableApplyEntriesAction();
CurrPage.SaveRecord();
end;
}
field("Account No."; Rec."Account No.")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the account number that the entry on the journal line will be posted to.';
trigger OnValidate()
begin
GenJnlManagement.GetAccounts(Rec, AccName, BalAccName);
Rec.ShowShortcutDimCode(ShortcutDimCode);
CurrPage.SaveRecord();
end;
}
field(GenJnlLineApprovalStatus; GeneralJournalLineApprovalStatus)
{
ApplicationArea = Basic, Suite;
Caption = 'Approval Status';
Editable = false;
Visible = EnabledGeneralJournalLineWorkflowsExist;
ToolTip = 'Specifies the approval status for general journal line.';
}
field(Description; Rec.Description)
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies a description of the entry.';
}
field("Salespers./Purch. Code"; Rec."Salespers./Purch. Code")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the salesperson or purchaser who is linked to the journal line.';
Visible = false;
}
field("Campaign No."; Rec."Campaign No.")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the campaign number the document is linked to.';
Visible = false;
}
field("Currency Code"; Rec."Currency Code")
{
ApplicationArea = Intercompany;
AssistEdit = true;
ToolTip = 'Specifies the currency that is used on the entry.';
Visible = false;
trigger OnAssistEdit()
begin
ChangeExchangeRate.SetParameter(Rec."Currency Code", Rec."Currency Factor", Rec."Posting Date");
if ChangeExchangeRate.RunModal() = ACTION::OK then
Rec.Validate("Currency Factor", ChangeExchangeRate.GetParameter());
Clear(ChangeExchangeRate);
end;
}
field("Gen. Posting Type"; Rec."Gen. Posting Type")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the type of transaction.';
}
field("Gen. Bus. Posting Group"; Rec."Gen. Bus. Posting Group")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the vendor''s or customer''s trade type to link transactions made for this business partner with the appropriate general ledger account according to the general posting setup.';
}
field("Gen. Prod. Posting Group"; Rec."Gen. Prod. Posting Group")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the item''s product type to link transactions made for this item with the appropriate general ledger account according to the general posting setup.';
}
field("VAT Bus. Posting Group"; Rec."VAT Bus. Posting Group")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the VAT specification of the involved customer or vendor to link transactions made for this record with the appropriate general ledger account according to the VAT posting setup.';
Visible = false;
}
field("VAT Prod. Posting Group"; Rec."VAT Prod. Posting Group")
{
ApplicationArea = Basic, Suite;
ToolTip = 'Specifies the VAT specification of the involved item or resource to link transactions made for this record with the appropriate general ledger account according to the VAT posting setup.';
Visible = false;
}
field(Amount; Rec.Amount)
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the total amount (including VAT) that the journal line consists of.';
}
field("Debit Amount"; Rec."Debit Amount")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the total of the ledger entries that represent debits.';
Visible = false;
}
field("Credit Amount"; Rec."Credit Amount")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the total of the ledger entries that represent credits.';
Visible = false;
}
field("VAT Amount"; Rec."VAT Amount")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the amount of VAT that is included in the total amount.';
Visible = false;
}
field("VAT Difference"; Rec."VAT Difference")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the difference between the calculated VAT amount and a VAT amount that you have entered manually.';
Visible = false;
}
field("Bal. VAT Amount"; Rec."Bal. VAT Amount")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the amount of Bal. VAT included in the total amount.';
Visible = false;
}
field("Bal. VAT Difference"; Rec."Bal. VAT Difference")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the difference between the calculate VAT amount and the VAT amount that you have entered manually.';
Visible = false;
}
field("Bal. Account Type"; Rec."Bal. Account Type")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the type of account that a balancing entry is posted to, such as BANK for a cash account.';
trigger OnValidate()
begin
EnableApplyEntriesAction();
end;
}
field("Bal. Account No."; Rec."Bal. Account No.")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the number of the general ledger, customer, vendor, or bank account that the balancing entry is posted to, such as a cash account for cash purchases.';
trigger OnValidate()
begin
GenJnlManagement.GetAccounts(Rec, AccName, BalAccName);
Rec.ShowShortcutDimCode(ShortcutDimCode);
end;
}
field("Bal. Gen. Posting Type"; Rec."Bal. Gen. Posting Type")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the general posting type associated with the balancing account that will be used when you post the entry on the journal line.';
}
field("Bal. Gen. Bus. Posting Group"; Rec."Bal. Gen. Bus. Posting Group")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the general business posting group code associated with the balancing account that will be used when you post the entry.';
}
field("Bal. Gen. Prod. Posting Group"; Rec."Bal. Gen. Prod. Posting Group")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the general product posting group code associated with the balancing account that will be used when you post the entry.';
}
field("Bal. VAT Prod. Posting Group"; Rec."Bal. VAT Prod. Posting Group")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the code of the VAT product posting group that will be used when you post the entry on the journal line.';
Visible = false;
}
field("Bal. VAT Bus. Posting Group"; Rec."Bal. VAT Bus. Posting Group")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the code of the VAT business posting group that will be used when you post the entry on the journal line.';
Visible = false;
}
field("Bill-to/Pay-to No."; Rec."Bill-to/Pay-to No.")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the number of the bill-to customer or pay-to vendor that the entry is linked to.';
Visible = false;
}
field("Ship-to/Order Address Code"; Rec."Ship-to/Order Address Code")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the address code of the ship-to customer or order-from vendor that the entry is linked to.';
Visible = false;
}
field("Payment Terms Code"; Rec."Payment Terms Code")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies a formula that calculates the payment due date, payment discount date, and payment discount amount.';
Visible = false;
}
field("Applies-to Doc. Type"; Rec."Applies-to Doc. Type")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the type of the posted document that this document or journal line will be applied to when you post, for example to register payment.';
Visible = false;
}
field("Applies-to Doc. No."; Rec."Applies-to Doc. No.")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the number of the posted document that this document or journal line will be applied to when you post, for example to register payment.';
Visible = false;
}
field("Applies-to ID"; Rec."Applies-to ID")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the ID of entries that will be applied to when you choose the Apply Entries action.';
Visible = false;
}
field("On Hold"; Rec."On Hold")
{
ApplicationArea = Suite, Intercompany;
ToolTip = 'Specifies that the related entry represents an unpaid invoice for which either a payment suggestion, a reminder, or a finance charge memo exists.';
Visible = false;
}
field("Bank Payment Type"; Rec."Bank Payment Type")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the code for the payment type to be used for the entry on the journal line.';
Visible = false;
}
field("Reason Code"; Rec."Reason Code")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the reason code, a supplementary source code that enables you to trace the entry.';
Visible = false;
}
field(Comment; Rec.Comment)
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies a comment about the activity on the journal line. Note that the comment is not carried forward to posted entries.';
Visible = false;
}
field("Job Queue Status"; Rec."Job Queue Status")
{
ApplicationArea = All;
Importance = Additional;
ToolTip = 'Specifies the status of a job queue entry or task that handles the posting of general journals.';
Visible = JobQueuesUsed;
trigger OnDrillDown()
var
JobQueueEntry: Record "Job Queue Entry";
begin
if Rec."Job Queue Status" = Rec."Job Queue Status"::" " then
exit;
JobQueueEntry.ShowStatusMsg(Rec."Job Queue Entry ID");
end;
}
field(ICAccountType; Rec."IC Account Type")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the type of the account that you want to use for the transaction with your IC partner.';
}
field(ICAccountNo; Rec."IC Account No.")
{
ApplicationArea = Intercompany;
ToolTip = 'Specifies the number of the general ledger or bank account that the IC transaction is posted to.';
}
field("Shortcut Dimension 1 Code"; Rec."Shortcut Dimension 1 Code")
{
ApplicationArea = Dimensions;
ToolTip = 'Specifies the code for Shortcut Dimension 1, which is one of two global dimension codes that you set up in the General Ledger Setup window.';
Visible = DimVisible1;
}
field("Shortcut Dimension 2 Code"; Rec."Shortcut Dimension 2 Code")
{
ApplicationArea = Dimensions;
ToolTip = 'Specifies the code for Shortcut Dimension 2, which is one of two global dimension codes that you set up in the General Ledger Setup window.';
Visible = DimVisible2;
}
field(ShortcutDimCode3; ShortcutDimCode[3])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,3';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(3),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
ToolTip = 'Specifies the dimension value code linked to the journal line.';
Visible = DimVisible3;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(3, ShortcutDimCode[3]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 3);
end;
}
field(ShortcutDimCode4; ShortcutDimCode[4])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,4';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(4),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
ToolTip = 'Specifies the dimension value code linked to the journal line.';
Visible = DimVisible4;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(4, ShortcutDimCode[4]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 4);
end;
}
field(ShortcutDimCode5; ShortcutDimCode[5])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,5';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(5),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
ToolTip = 'Specifies the dimension value code linked to the journal line.';
Visible = DimVisible5;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(5, ShortcutDimCode[5]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 5);
end;
}
field(ShortcutDimCode6; ShortcutDimCode[6])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,6';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(6),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
ToolTip = 'Specifies the dimension value code linked to the journal line.';
Visible = DimVisible6;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(6, ShortcutDimCode[6]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 6);
end;
}
field(ShortcutDimCode7; ShortcutDimCode[7])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,7';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(7),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
ToolTip = 'Specifies the dimension value code linked to the journal line.';
Visible = DimVisible7;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(7, ShortcutDimCode[7]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 7);
end;
}
field(ShortcutDimCode8; ShortcutDimCode[8])
{
ApplicationArea = Dimensions;
CaptionClass = '1,2,8';
TableRelation = "Dimension Value".Code where("Global Dimension No." = const(8),
"Dimension Value Type" = const(Standard),
Blocked = const(false));
ToolTip = 'Specifies the dimension value code linked to the journal line.';
Visible = DimVisible8;
trigger OnValidate()
begin
Rec.ValidateShortcutDimCode(8, ShortcutDimCode[8]);
OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 8);
end;
}
}
group(Control30)
{
ShowCaption = false;
fixed(Control1901776101)
{
ShowCaption = false;
group("Number of Lines")
{
Caption = 'Number of Lines';
field(NumberOfJournalRecords; NumberOfRecords)
{
ApplicationArea = All;
AutoFormatType = 1;
ShowCaption = false;
Editable = false;
ToolTip = 'Specifies the number of lines in the current journal batch.';
}
}
group("Account Name")
{
Caption = 'Account Name';
Visible = false;
field(AccName; AccName)
{
ApplicationArea = Intercompany;
Editable = false;
ShowCaption = false;
ToolTip = 'Specifies the name of the account.';
}
}
group("Bal. Account Name")
{
Caption = 'Bal. Account Name';
Visible = false;
field(BalAccName; BalAccName)
{
ApplicationArea = Intercompany;
Caption = 'Bal. Account Name';
Editable = false;
ToolTip = 'Specifies the name of the balancing account that has been entered on the journal line.';
}
}
group(Control1902759701)
{
Caption = 'Balance';
field(Balance; Balance)
{
ApplicationArea = Intercompany;
AutoFormatType = 1;
AutoFormatExpression = '';
Caption = 'Balance';
Editable = false;
ToolTip = 'Specifies the balance that has accumulated in the general journal on the line where the cursor is.';
Visible = BalanceVisible;
}
}
group("Total Balance")
{
Caption = 'Total Balance';
field(TotalBalance; TotalBalance)
{
ApplicationArea = Intercompany;
AutoFormatType = 1;
AutoFormatExpression = '';
Caption = 'Total Balance';
Editable = false;
ToolTip = 'Specifies the total balance in the general journal.';
Visible = TotalBalanceVisible;
}
}
}
}
}
area(factboxes)
{
part(JournalErrorsFactBox; "Journal Errors FactBox")
{
ApplicationArea = Basic, Suite;
Visible = BackgroundErrorCheck;
SubPageLink = "Journal Template Name" = field("Journal Template Name"),
"Journal Batch Name" = field("Journal Batch Name"),
"Line No." = field("Line No.");
}
part(JournalLineDetails; "Journal Line Details FactBox")
{
ApplicationArea = Basic, Suite;
SubPageLink = "Journal Template Name" = field("Journal Template Name"),
"Journal Batch Name" = field("Journal Batch Name"),
"Line No." = field("Line No.");
}
part(IncomingDocAttachFactBox; "Incoming Doc. Attach. FactBox")
{
ApplicationArea = Basic, Suite;
ShowFilter = false;
}
part(WorkflowStatusBatch; "Workflow Status FactBox")
{
ApplicationArea = Suite;
Caption = 'Batch Workflows';
Editable = false;
Enabled = false;
ShowFilter = false;
Visible = ShowWorkflowStatusOnBatch;
}
part(WorkflowStatusLine; "Workflow Status FactBox")
{
ApplicationArea = Suite;
Caption = 'Line Workflows';
Editable = false;
Enabled = false;
ShowFilter = false;
Visible = ShowWorkflowStatusOnLine;
}
systempart(Control1900383207; Links)
{
ApplicationArea = RecordLinks;
Visible = false;
}
systempart(Control1905767507; Notes)
{
ApplicationArea = Notes;
Visible = false;
}
}
}
actions
{
area(navigation)
{
group("&Line")
{
Caption = '&Line';
Image = Line;
action(Dimensions)
{
AccessByPermission = TableData Dimension = R;
ApplicationArea = Dimensions;
Caption = 'Dimensions';
Image = Dimensions;
ShortCutKey = 'Alt+D';
ToolTip = 'View or edit dimensions, such as area, project, or department, that you can assign to sales and purchase documents to distribute costs and analyze transaction history.';
trigger OnAction()
begin
Rec.ShowDimensions();
CurrPage.SaveRecord();
end;
}
}
group("A&ccount")
{
Caption = 'A&ccount';
Image = ChartOfAccounts;
action(Card)
{
ApplicationArea = Intercompany;
Caption = 'Card';
Image = EditLines;
RunObject = Codeunit "Gen. Jnl.-Show Card";
ShortCutKey = 'Shift+F7';
ToolTip = 'View or change detailed information about the record on the document or journal line.';
}
action("Ledger E&ntries")
{
ApplicationArea = Intercompany;
Caption = 'Ledger E&ntries';
Image = GLRegisters;
RunObject = Codeunit "Gen. Jnl.-Show Entries";
ShortCutKey = 'Ctrl+F7';
ToolTip = 'View the history of transactions that have been posted for the selected record.';
}
}
}
area(processing)
{
group("F&unctions")
{
Caption = 'F&unctions';
Image = "Action";
action("Renumber Document Numbers")
{
ApplicationArea = Intercompany;
Caption = 'Renumber Document Numbers';
Image = EditLines;
ToolTip = 'Resort the numbers in the Document No. column to avoid posting errors because the document numbers are not in sequence. Entry applications and line groupings are preserved.';
trigger OnAction()
begin
Rec.RenumberDocumentNo();
end;
}
action("Apply Entries")
{
ApplicationArea = Intercompany;
Caption = 'Apply Entries';
Ellipsis = true;
Enabled = ApplyEntriesActionEnabled;
Image = ApplyEntries;
RunObject = Codeunit "Gen. Jnl.-Apply";
ShortCutKey = 'Shift+F11';
ToolTip = 'Apply the payment amount on a journal line to a sales or purchase document that was already posted for a customer or vendor. This updates the amount on the posted document, and the document can either be partially paid, or closed as paid or refunded.';
}
action("Insert Conv. LCY Rndg. Lines")
{
ApplicationArea = Intercompany;
Caption = 'Insert Conv. LCY Rndg. Lines';
Image = InsertCurrency;
RunObject = Codeunit "Adjust Gen. Journal Balance";
ToolTip = 'Insert a rounding correction line in the journal. This rounding correction line will balance in LCY when amounts in the foreign currency also balance. You can then post the journal.';
}
}
group("P&osting")
{
Caption = 'P&osting';
Image = Post;
action(Reconcile)
{
ApplicationArea = Intercompany;
Caption = 'Reconcile';
Image = Reconcile;
ShortCutKey = 'Ctrl+F11';
ToolTip = 'View the balances on bank accounts that are marked for reconciliation, usually liquid accounts.';
trigger OnAction()
var
FeatureTelemetry: Codeunit "Feature Telemetry";
ICMapping: Codeunit "IC Mapping";
begin
FeatureTelemetry.LogUptake('0000ILG', ICMapping.GetFeatureTelemetryName(), Enum::"Feature Uptake Status"::Used);
FeatureTelemetry.LogUsage('0000ILL', ICMapping.GetFeatureTelemetryName(), 'Reconcile General IC Journal');
GLReconcile.SetGenJnlLine(Rec);
GLReconcile.Run();
end;
}
action("Test Report")
{
ApplicationArea = Intercompany;
Caption = 'Test Report';
Ellipsis = true;
Image = TestReport;
ToolTip = 'View a test report so that you can find and correct any errors before you perform the actual posting of the journal or document.';
trigger OnAction()
var
FeatureTelemetry: Codeunit "Feature Telemetry";
ICMapping: Codeunit "IC Mapping";
begin
FeatureTelemetry.LogUptake('0000ILH', ICMapping.GetFeatureTelemetryName(), Enum::"Feature Uptake Status"::Used);
FeatureTelemetry.LogUsage('0000ILM', ICMapping.GetFeatureTelemetryName(), 'Test Report for General IC Journal');
ReportPrint.PrintGenJnlLine(Rec);
end;
}
action("P&ost")
{
ApplicationArea = Intercompany;
Caption = 'P&ost';
Image = PostOrder;
ShortCutKey = 'F9';
ToolTip = 'Finalize the document or journal by posting the amounts and quantities to the related accounts in your company books.';
trigger OnAction()
var
FeatureTelemetry: Codeunit "Feature Telemetry";
ICMapping: Codeunit "IC Mapping";
begin
FeatureTelemetry.LogUptake('0000ILI', ICMapping.GetFeatureTelemetryName(), Enum::"Feature Uptake Status"::Used);
FeatureTelemetry.LogUsage('0000ILN', ICMapping.GetFeatureTelemetryName(), 'Posting General IC journal');
Rec.SendToPosting(Codeunit::"Gen. Jnl.-Post");
CurrentJnlBatchName := Rec.GetRangeMax("Journal Batch Name");
SetJobQueueVisibility();
CurrPage.Update(false);
end;
}
action(Preview)
{
ApplicationArea = Intercompany;
Caption = 'Preview Posting';
Image = ViewPostedOrder;
ShortCutKey = 'Ctrl+Alt+F9';
ToolTip = 'Review the different types of entries that will be created when you post the document or journal.';
trigger OnAction()
var
GenJnlPost: Codeunit "Gen. Jnl.-Post";
FeatureTelemetry: Codeunit "Feature Telemetry";
ICMapping: Codeunit "IC Mapping";
begin
FeatureTelemetry.LogUptake('0000ILJ', ICMapping.GetFeatureTelemetryName(), Enum::"Feature Uptake Status"::Used);
FeatureTelemetry.LogUsage('0000ILO', ICMapping.GetFeatureTelemetryName(), 'Preview Posting General IC journal');
GenJnlPost.Preview(Rec);
end;
}
action("Post and &Print")
{
ApplicationArea = Intercompany;
Caption = 'Post and &Print';
Image = PostPrint;
ShortCutKey = 'Shift+F9';
ToolTip = 'Finalize and prepare to print the document or journal. The values and quantities are posted to the related accounts. A report request window where you can specify what to include on the print-out.';
trigger OnAction()
var
FeatureTelemetry: Codeunit "Feature Telemetry";
ICMapping: Codeunit "IC Mapping";
begin
FeatureTelemetry.LogUptake('0000ILK', ICMapping.GetFeatureTelemetryName(), Enum::"Feature Uptake Status"::Used);
FeatureTelemetry.LogUsage('0000ILP', ICMapping.GetFeatureTelemetryName(), 'Post and Print on General IC journal');
Rec.SendToPosting(Codeunit::"Gen. Jnl.-Post+Print");
CurrentJnlBatchName := Rec.GetRangeMax("Journal Batch Name");
SetJobQueueVisibility();
CurrPage.Update(false);
end;
}
action("Remove From Job Queue")
{
ApplicationArea = Basic, Suite;
Caption = 'Remove From Job Queue';
Image = RemoveLine;
ToolTip = 'Remove the scheduled processing of this record from the job queue.';
Visible = JobQueueVisible;
trigger OnAction()
begin
Rec.CancelBackgroundPosting();
SetJobQueueVisibility();
CurrPage.Update(false);
end;
}
}
group("Request Approval")
{
Caption = 'Request Approval';
group(SendApprovalRequest)
{
Caption = 'Send Approval Request';
Image = SendApprovalRequest;
action(SendApprovalRequestJournalBatch)
{
ApplicationArea = Basic, Suite;
Caption = 'Journal Batch';
Enabled = not OpenApprovalEntriesOnBatchOrAnyJnlLineExist and CanRequestFlowApprovalForBatchAndAllLines and EnabledGeneralJournalBatchWorkflowsExist;
Image = SendApprovalRequest;
ToolTip = 'Send all journal lines for approval, also those that you may not see because of filters.';
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.TrySendJournalBatchApprovalRequest(Rec);
SetControlAppearanceFromBatch();
SetControlAppearance();
end;
}
action(SendApprovalRequestJournalLine)
{
ApplicationArea = Basic, Suite;
Caption = 'Selected Journal Lines';
Enabled = not OpenApprovalEntriesOnBatchOrCurrJnlLineExist and CanRequestFlowApprovalForBatchAndCurrentLine and EnabledGeneralJournalLineWorkflowsExist;
Image = SendApprovalRequest;
ToolTip = 'Send selected journal lines for approval.';
trigger OnAction()
var
[SecurityFiltering(SecurityFilter::Filtered)]
GenJournalLine: Record "Gen. Journal Line";
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
GetCurrentlySelectedLines(GenJournalLine);
ApprovalsMgmt.TrySendJournalLineApprovalRequests(GenJournalLine);
SetControlAppearanceFromBatch();
end;
}
}
group(CancelApprovalRequest)
{
Caption = 'Cancel Approval Request';
Image = Cancel;
action(CancelApprovalRequestJournalBatch)
{
ApplicationArea = Basic, Suite;
Caption = 'Journal Batch';
Enabled = CanCancelApprovalForJnlBatch or CanCancelFlowApprovalForBatch;
Image = CancelApprovalRequest;
ToolTip = 'Cancel sending all journal lines for approval, also those that you may not see because of filters.';
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.TryCancelJournalBatchApprovalRequest(Rec);
SetControlAppearance();
SetControlAppearanceFromBatch();
end;
}
action(CancelApprovalRequestJournalLine)
{
ApplicationArea = Basic, Suite;
Caption = 'Selected Journal Lines';
Enabled = CanCancelApprovalForJnlLine or CanCancelFlowApprovalForLine;
Image = CancelApprovalRequest;
ToolTip = 'Cancel sending selected journal lines for approval.';
trigger OnAction()
var
[SecurityFiltering(SecurityFilter::Filtered)]
GenJournalLine: Record "Gen. Journal Line";
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
GetCurrentlySelectedLines(GenJournalLine);
ApprovalsMgmt.TryCancelJournalLineApprovalRequests(GenJournalLine);
end;
}
}
}
group(Approval)
{
Caption = 'Approval';
action(Approve)
{
ApplicationArea = All;
Caption = 'Approve';
Image = Approve;
ToolTip = 'Approve the requested changes.';
Visible = OpenApprovalEntriesExistForCurrUser;
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.ApproveGenJournalLineRequest(Rec);
end;
}
action(Reject)
{
ApplicationArea = All;
Caption = 'Reject';
Image = Reject;
ToolTip = 'Reject the approval request.';
Visible = OpenApprovalEntriesExistForCurrUser;
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.RejectGenJournalLineRequest(Rec);
end;
}
action(Delegate)
{
ApplicationArea = All;
Caption = 'Delegate';
Image = Delegate;
ToolTip = 'Delegate the approval to a substitute approver.';
Visible = OpenApprovalEntriesExistForCurrUser;
trigger OnAction()
var
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
ApprovalsMgmt.DelegateGenJournalLineRequest(Rec);
end;
}
action(Comments)
{
ApplicationArea = All;
Caption = 'Comments';
Image = ViewComments;
ToolTip = 'View or add comments for the record.';
Visible = OpenApprovalEntriesExistForCurrUser or ApprovalEntriesExistSentByCurrentUser;
trigger OnAction()
var
GenJournalBatch: Record "Gen. Journal Batch";
ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
if OpenApprovalEntriesOnJnlLineExist or ApprovalsMgmt.HasApprovalEntriesSentByCurrentUser(Rec.RecordId) then
ApprovalsMgmt.GetApprovalComment(Rec)
else
if GenJournalBatch.Get(Rec."Journal Template Name", Rec."Journal Batch Name") then
if OpenApprovalEntriesOnJnlBatchExist or ApprovalsMgmt.HasApprovalEntriesSentByCurrentUser(GenJournalBatch.RecordId) then
ApprovalsMgmt.GetApprovalComment(GenJournalBatch);
end;
}
}
group(Errors)
{
Image = ErrorLog;
Visible = BackgroundErrorCheck;
action(ShowLinesWithErrors)
{
ApplicationArea = Basic, Suite;
Caption = 'Show Lines with Issues';
Image = Error;
Visible = BackgroundErrorCheck;
Enabled = not ShowAllLinesEnabled;
ToolTip = 'View a list of journal lines that have issues before you post the journal.';
trigger OnAction()
begin
Rec.SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
end;
}
action(ShowAllLines)
{
ApplicationArea = Basic, Suite;
Caption = 'Show All Lines';
Image = ExpandAll;
Visible = BackgroundErrorCheck;
Enabled = ShowAllLinesEnabled;
ToolTip = 'View all journal lines, including lines with and without issues.';
trigger OnAction()
begin
Rec.SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
end;
}
}
group("Page")
{
Caption = 'Page';
action(EditInExcel)
{
ApplicationArea = Basic, Suite;
Caption = 'Edit in Excel';
Image = Excel;
ToolTip = 'Send the data in the journal to an Excel file for analysis or editing.';
Visible = IsSaaSExcelAddinEnabled;
AccessByPermission = System "Allow Action Export To Excel" = X;
trigger OnAction()
var
ODataUtility: Codeunit ODataUtility;
begin
ODataUtility.EditJournalWorksheetInExcel(CopyStr(CurrPage.Caption, 1, 240), CurrPage.ObjectId(false), Rec."Journal Batch Name", Rec."Journal Template Name");
end;
}
}
}
area(Promoted)
{
group(Category_Process)
{
Caption = 'Process', Comment = 'Generated from the PromotedActionCategories property index 1.';
group(Category_Category6)
{
Caption = 'Post/Print', Comment = 'Generated from the PromotedActionCategories property index 5.';
ShowAs = SplitButton;
actionref("P&ost_Promoted"; "P&ost")
{
}
actionref(Preview_Promoted; Preview)
{
}
actionref("Post and &Print_Promoted"; "Post and &Print")
{
}
actionref("Test Report_Promoted"; "Test Report")
{
}
}
actionref(Reconcile_Promoted; Reconcile)
{
}
actionref("Apply Entries_Promoted"; "Apply Entries")
{
}
}
group(Category_Category4)
{
Caption = 'Prepare', Comment = 'Generated from the PromotedActionCategories property index 3.';
actionref("Renumber Document Numbers_Promoted"; "Renumber Document Numbers")
{
}
actionref("Insert Conv. LCY Rndg. Lines_Promoted"; "Insert Conv. LCY Rndg. Lines")
{
}
}
group(Category_Category5)
{
Caption = 'Posting', Comment = 'Generated from the PromotedActionCategories property index 4.';
}
group(Category_Category7)
{
Caption = 'Line', Comment = 'Generated from the PromotedActionCategories property index 6.';
actionref(Dimensions_Promoted; Dimensions)
{
}
}
group(Category_Approve)
{
Caption = 'Approve';
actionref(Approve_Promoted; Approve)
{
}
actionref(Reject_Promoted; Reject)
{
}
actionref(Comments_Promoted; Comments)
{
}
actionref(Delegate_Promoted; Delegate)
{
}
}
group("Category_Request Approval")
{
Caption = 'Request Approval';
group("Category_Send Approval Request")
{
Caption = 'Send Approval Request';
actionref(SendApprovalRequestJournalBatch_Promoted; SendApprovalRequestJournalBatch)
{
}
actionref(SendApprovalRequestJournalLine_Promoted; SendApprovalRequestJournalLine)
{
}
}
group("Category_Cancel Approval Request")
{
Caption = 'Cancel Approval Request';
actionref(CancelApprovalRequestJournalBatch_Promoted; CancelApprovalRequestJournalBatch)
{
}
actionref(CancelApprovalRequestJournalLine_Promoted; CancelApprovalRequestJournalLine)
{
}
}
}
group(Category_Category8)
{
Caption = 'Account', Comment = 'Generated from the PromotedActionCategories property index 7.';
}
group(Category_Category9)
{
Caption = 'Page', Comment = 'Generated from the PromotedActionCategories property index 8.';
actionref(EditInExcel_Promoted; EditInExcel)
{
}
actionref(ShowLinesWithErrors_Promoted; ShowLinesWithErrors)
{
}
actionref(ShowAllLines_Promoted; ShowAllLines)
{
}
}
group(Category_Report)
{
Caption = 'Report', Comment = 'Generated from the PromotedActionCategories property index 2.';
}
}
}
trigger OnModifyRecord(): Boolean
begin
ApprovalMgmt.CleanGenJournalApprovalStatus(Rec, GeneralJournalBatchApprovalStatus, GeneralJournalLineApprovalStatus);
end;
trigger OnAfterGetCurrRecord()
var
GenJournalBatch: Record "Gen. Journal Batch";
begin
GenJnlManagement.GetAccounts(Rec, AccName, BalAccName);
UpdateBalance();
EnableApplyEntriesAction();
SetControlAppearance();
if GenJournalBatch.Get(GetGenJournalTemplateName(), CurrentJnlBatchName) then
GeneralJournal.SetApprovalStateForBatch(GenJournalBatch, Rec, OpenApprovalEntriesExistForCurrUser, OpenApprovalEntriesOnJnlBatchExist, OpenApprovalEntriesOnBatchOrAnyJnlLineExist, CanCancelApprovalForJnlBatch, CanRequestFlowApprovalForBatch, CanCancelFlowApprovalForBatch, CanRequestFlowApprovalForBatchAndAllLines, ApprovalEntriesExistSentByCurrentUser, EnabledGeneralJournalBatchWorkflowsExist, EnabledGeneralJournalLineWorkflowsExist);
CurrPage.IncomingDocAttachFactBox.PAGE.SetCurrentRecordID(Rec.RecordId);
CurrPage.IncomingDocAttachFactBox.PAGE.LoadDataFromRecord(Rec);
SetJobQueueVisibility();
ApprovalMgmt.GetGenJnlBatchApprovalStatus(Rec, GeneralJournalBatchApprovalStatus, EnabledGeneralJournalBatchWorkflowsExist);
end;
trigger OnAfterGetRecord()
begin
Rec.ShowShortcutDimCode(ShortcutDimCode);
ApprovalMgmt.GetGenJnlLineApprovalStatus(Rec, GeneralJournalLineApprovalStatus, EnabledGeneralJournalLineWorkflowsExist);
end;
trigger OnInit()
begin
TotalBalanceVisible := true;
BalanceVisible := true;
GeneralLedgerSetup.Get();
SetJobQueueVisibility();
end;
trigger OnInsertRecord(BelowxRec: Boolean): Boolean
begin
CurrPage.IncomingDocAttachFactBox.PAGE.SetCurrentRecordID(Rec.RecordId);
end;
trigger OnNewRecord(BelowxRec: Boolean)
begin
UpdateBalance();
EnableApplyEntriesAction();
Rec.SetUpNewLine(xRec, Balance, BelowxRec);
Clear(ShortcutDimCode);
Clear(AccName);
Clear(GeneralJournalLineApprovalStatus);
end;
trigger OnOpenPage()
var
ServerSetting: Codeunit "Server Setting";
JnlSelected: Boolean;
begin
IsSaaSExcelAddinEnabled := ServerSetting.GetIsSaasExcelAddinEnabled();
if ClientTypeManagement.GetCurrentClientType() = CLIENTTYPE::ODataV4 then
exit;
SetDimensionsVisibility();
if Rec.IsOpenedFromBatch() then begin
CurrentJnlBatchName := Rec."Journal Batch Name";
GenJnlManagement.OpenJnl(CurrentJnlBatchName, Rec);
SetControlAppearanceFromBatch();
exit;
end;
GenJnlManagement.TemplateSelection(PAGE::"IC General Journal", "Gen. Journal Template Type"::Intercompany, false, Rec, JnlSelected);
if not JnlSelected then
Error('');
GenJnlManagement.OpenJnl(CurrentJnlBatchName, Rec);
SetControlAppearanceFromBatch();
end;
var
GeneralLedgerSetup: Record "General Ledger Setup";
GenJnlManagement: Codeunit GenJnlManagement;
ReportPrint: Codeunit "Test Report-Print";
JournalErrorsMgt: Codeunit "Journal Errors Mgt.";
BackgroundErrorHandlingMgt: Codeunit "Background Error Handling Mgt.";
ClientTypeManagement: Codeunit "Client Type Management";
ApprovalMgmt: Codeunit "Approvals Mgmt.";
ChangeExchangeRate: Page "Change Exchange Rate";
GeneralJournal: Page "General Journal";
GLReconcile: Page Reconciliation;
CurrentJnlBatchName: Code[10];
AccName: Text[100];
BalAccName: Text[100];
GeneralJournalBatchApprovalStatus: Text[20];
GeneralJournalLineApprovalStatus: Text[20];
Balance: Decimal;
TotalBalance: Decimal;
NumberOfRecords: Integer;
ShowBalance: Boolean;
ShowTotalBalance: Boolean;
ApplyEntriesActionEnabled: Boolean;
BalanceVisible: Boolean;
TotalBalanceVisible: Boolean;
JobQueuesUsed: Boolean;
JobQueueVisible: Boolean;
BackgroundErrorCheck: Boolean;
ShowAllLinesEnabled: Boolean;
IsSaaSExcelAddinEnabled: Boolean;
ApprovalEntriesExistSentByCurrentUser: Boolean;
OpenApprovalEntriesExistForCurrUser: Boolean;
OpenApprovalEntriesOnJnlBatchExist: Boolean;
OpenApprovalEntriesOnJnlLineExist: Boolean;
OpenApprovalEntriesOnBatchOrCurrJnlLineExist: Boolean;
OpenApprovalEntriesOnBatchOrAnyJnlLineExist: Boolean;
ShowWorkflowStatusOnBatch: Boolean;
ShowWorkflowStatusOnLine: Boolean;
CanCancelApprovalForJnlBatch: Boolean;
CanCancelApprovalForJnlLine: Boolean;
CanRequestFlowApprovalForBatch: Boolean;
CanRequestFlowApprovalForBatchAndAllLines: Boolean;
CanRequestFlowApprovalForBatchAndCurrentLine: Boolean;
CanCancelFlowApprovalForBatch: Boolean;
CanCancelFlowApprovalForLine: Boolean;
EnabledGeneralJournalBatchWorkflowsExist: Boolean;
EnabledGeneralJournalLineWorkflowsExist: Boolean;
protected var
ShortcutDimCode: array[8] of Code[20];
DimVisible1: Boolean;
DimVisible2: Boolean;
DimVisible3: Boolean;
DimVisible4: Boolean;
DimVisible5: Boolean;
DimVisible6: Boolean;
DimVisible7: Boolean;
DimVisible8: Boolean;
local procedure GetGenJournalTemplateName(): Code[10]
begin
if Rec.GetFilter("Journal Template Name") = '' then
exit('');
exit(Rec.GetRangeMax("Journal Template Name"));
end;
local procedure UpdateBalance()
begin
GenJnlManagement.CalcBalance(Rec, xRec, Balance, TotalBalance, ShowBalance, ShowTotalBalance);
BalanceVisible := ShowBalance;
TotalBalanceVisible := ShowTotalBalance;
if ShowTotalBalance then
NumberOfRecords := Rec.Count();
end;
local procedure EnableApplyEntriesAction()
begin
ApplyEntriesActionEnabled :=
(Rec."Account Type" in [Rec."Account Type"::Customer, Rec."Account Type"::Vendor]) or
(Rec."Bal. Account Type" in [Rec."Bal. Account Type"::Customer, Rec."Bal. Account Type"::Vendor]);
end;
local procedure CurrentJnlBatchNameOnAfterVali()
begin
CurrPage.SaveRecord();
GenJnlManagement.SetName(CurrentJnlBatchName, Rec);
SetControlAppearanceFromBatch();
CurrPage.Update(false);
end;
local procedure SetDimensionsVisibility()
var
DimMgt: Codeunit DimensionManagement;
begin
DimVisible1 := false;
DimVisible2 := false;
DimVisible3 := false;
DimVisible4 := false;
DimVisible5 := false;
DimVisible6 := false;
DimVisible7 := false;
DimVisible8 := false;
DimMgt.UseShortcutDims(
DimVisible1, DimVisible2, DimVisible3, DimVisible4, DimVisible5, DimVisible6, DimVisible7, DimVisible8);
Clear(DimMgt);
end;
local procedure SetControlAppearance()
begin
GeneralJournal.SetApprovalState(Rec.RecordId, OpenApprovalEntriesOnJnlBatchExist, CanRequestFlowApprovalForBatch, CanCancelFlowApprovalForLine, OpenApprovalEntriesExistForCurrUser, OpenApprovalEntriesOnJnlLineExist, OpenApprovalEntriesOnBatchOrCurrJnlLineExist, CanCancelApprovalForJnlLine, CanRequestFlowApprovalForBatchAndCurrentLine);
ShowWorkflowStatusOnLine := CurrPage.WorkflowStatusLine.Page.SetFilterOnWorkflowRecord(Rec.RecordId);
end;
local procedure SetControlAppearanceFromBatch()
var
GenJournalBatch: Record "Gen. Journal Batch";
begin
if ClientTypeManagement.GetCurrentClientType() = CLIENTTYPE::ODataV4 then
exit;
if not GenJournalBatch.Get(Rec.GetRangeMax("Journal Template Name"), CurrentJnlBatchName) then
exit;
ShowWorkflowStatusOnBatch := CurrPage.WorkflowStatusBatch.Page.SetFilterOnWorkflowRecord(GenJournalBatch.RecordId);
GeneralJournal.SetApprovalStateForBatch(GenJournalBatch, Rec, OpenApprovalEntriesExistForCurrUser, OpenApprovalEntriesOnJnlBatchExist, OpenApprovalEntriesOnBatchOrAnyJnlLineExist, CanCancelApprovalForJnlBatch, CanRequestFlowApprovalForBatch, CanCancelFlowApprovalForBatch, CanRequestFlowApprovalForBatchAndAllLines, ApprovalEntriesExistSentByCurrentUser, EnabledGeneralJournalBatchWorkflowsExist, EnabledGeneralJournalLineWorkflowsExist);
BackgroundErrorCheck := BackgroundErrorHandlingMgt.BackgroundValidationFeatureEnabled();
ShowAllLinesEnabled := true;
Rec.SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
JournalErrorsMgt.SetFullBatchCheck(true);
end;
local procedure SetJobQueueVisibility()
begin
JobQueueVisible := Rec."Job Queue Status" = Rec."Job Queue Status"::"Scheduled for Posting";
JobQueuesUsed := GeneralLedgerSetup.JobQueueActive();
end;
local procedure GetCurrentlySelectedLines(var GenJournalLine: Record "Gen. Journal Line"): Boolean
begin
CurrPage.SetSelectionFilter(GenJournalLine);
exit(GenJournalLine.FindSet());
end;
#pragma warning disable AL0523
/// <summary>
/// Integration event raised after validating shortcut dimension codes on general journal lines.
/// Enables custom processing and validation logic for dimension value changes in intercompany journal context.
/// </summary>
/// <param name="GenJournalLine">General journal line with validated dimension code</param>
/// <param name="ShortcutDimCode">Array of shortcut dimension codes after validation</param>
/// <param name="DimIndex">Index of the dimension code that was validated</param>
/// <remarks>
/// Raised from shortcut dimension field validation triggers after standard dimension validation completes.
/// </remarks>
[IntegrationEvent(false, false)]
local procedure OnAfterValidateShortcutDimCode(var GenJournalLine: Record "Gen. Journal Line"; var ShortcutDimCode: array[8] of Code[20]; DimIndex: Integer)
begin
end;
#pragma warning restore AL0523
}