microsoft / ALAppExtensions

Repository for collaboration on Microsoft AL application add-on and localization extensions for Microsoft Dynamics 365 Business Central.
MIT License
785 stars 621 forks source link

page 255 "Cash Receipt Journal" - OnOnOpenPage & OnAfterOnOpenPage - Event Request #13925

Closed ZacRyon closed 3 years ago

ZacRyon commented 3 years ago

page 255 "Cash Receipt Journal" { AdditionalSearchTerms = 'customer payment'; ApplicationArea = Basic, Suite; AutoSplitKey = true; Caption = 'Cash Receipt Journals'; DataCaptionExpression = DataCaption; DelayedInsert = true; PageType = Worksheet; PromotedActionCategories = 'New,Process,Report,Approve,Page,Post/Print,Line,Account'; SaveValues = true; SourceTable = "Gen. Journal Line"; UsageCategory = Tasks;

layout
{
    area(content)
    {
        field(CurrentJnlBatchName; CurrentJnlBatchName)
        {
            ApplicationArea = Basic, Suite;
            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;
        }
        repeater(Control1)
        {
            ShowCaption = false;
            field("Posting Date"; "Posting Date")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the posting date for the entry.';
            }
            field("Document Date"; "Document Date")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the date when the related document was created.';
                Visible = false;
            }
            field("Document Type"; "Document Type")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the type of document that the entry on the journal line is.';
            }
            field("Document No."; "Document No.")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies a document number for the journal line.';
                ShowMandatory = true;
            }
            field("Incoming Document Entry No."; "Incoming Document Entry No.")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the number of the incoming document that this general journal line is created for.';
                Visible = false;

                trigger OnAssistEdit()
                begin
                    if "Incoming Document Entry No." > 0 then
                        HyperLink(GetIncomingDocumentURL);
                end;
            }
            field("External Document No."; "External Document No.")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies a document number that refers to the customer''s or vendor''s numbering system.';
                Visible = false;
            }
            field("Account Type"; "Account Type")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the type of account that the entry on the journal line will be posted to.';

                trigger OnValidate()
                begin
                    GenJnlManagement.GetAccounts(Rec, AccName, BalAccName);
                    EnableApplyEntriesAction;
                    CurrPage.SaveRecord();
                end;
            }
            field("Account No."; "Account No.")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the account number that the entry on the journal line will be posted to.';

                trigger OnValidate()
                begin
                    GenJnlManagement.GetAccounts(Rec, AccName, BalAccName);
                    ShowShortcutDimCode(ShortcutDimCode);
                    CurrPage.SaveRecord();
                end;
            }
            field(Description; Description)
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies a description of the entry.';
            }
            field("Salespers./Purch. Code"; "Salespers./Purch. Code")
            {
                ApplicationArea = Suite;
                ToolTip = 'Specifies the salesperson or purchaser who is linked to the journal line.';
                Visible = false;
            }
            field("Campaign No."; "Campaign No.")
            {
                ApplicationArea = RelationshipMgmt;
                ToolTip = 'Specifies the number of the campaign that the journal line is linked to.';
                Visible = false;
            }
            field("Currency Code"; "Currency Code")
            {
                ApplicationArea = Suite;
                AssistEdit = true;
                ToolTip = 'Specifies the code of the currency for the amounts on the journal line.';
                Visible = false;

                trigger OnAssistEdit()
                begin
                    ChangeExchangeRate.SetParameter("Currency Code", "Currency Factor", "Posting Date");
                    if ChangeExchangeRate.RunModal = ACTION::OK then
                        Validate("Currency Factor", ChangeExchangeRate.GetParameter);

                    Clear(ChangeExchangeRate);
                end;
            }
            field("Gen. Posting Type"; "Gen. Posting Type")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the type of transaction.';
                Visible = false;
            }
            field("Gen. Bus. Posting Group"; "Gen. Bus. Posting Group")
            {
                ApplicationArea = Suite;
                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.';
                Visible = false;
            }
            field("Gen. Prod. Posting Group"; "Gen. Prod. Posting Group")
            {
                ApplicationArea = Suite;
                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.';
                Visible = false;
            }
            field("VAT Bus. Posting Group"; "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"; "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; Amount)
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the total amount (including VAT) that the journal line consists of.';
                Visible = AmountVisible;
            }
            field("Amount (LCY)"; "Amount (LCY)")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the total amount in local currency (including VAT) that the journal line consists of.';
                Visible = AmountVisible;
            }
            field("Debit Amount"; "Debit Amount")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the total of the ledger entries that represent debits.';
                Visible = DebitCreditVisible;
            }
            field("Credit Amount"; "Credit Amount")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the total of the ledger entries that represent credits.';
                Visible = DebitCreditVisible;
            }
            field("VAT Amount"; "VAT Amount")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the amount of VAT that is included in the total amount.';
                Visible = false;
            }
            field("VAT Difference"; "VAT Difference")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the difference between the calculated VAT amount and a VAT amount that you have entered manually.';
                Visible = false;
            }
            field("Bal. VAT Amount"; "Bal. VAT Amount")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the amount of Bal. VAT included in the total amount.';
                Visible = false;
            }
            field("Bal. VAT Difference"; "Bal. VAT Difference")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the difference between the calculate VAT amount and the VAT amount that you have entered manually.';
                Visible = false;
            }
            field("Bal. Account Type"; "Bal. Account Type")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the type of account that a balancing entry is posted to, such as BANK for a cash account.';
            }
            field("Bal. Account No."; "Bal. Account No.")
            {
                ApplicationArea = Basic, Suite;
                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);
                    ShowShortcutDimCode(ShortcutDimCode);
                end;
            }
            field("Bal. Gen. Posting Type"; "Bal. Gen. Posting Type")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the general posting type associated with the balancing account that will be used when you post the entry on the journal line.';
                Visible = false;
            }
            field("Bal. Gen. Bus. Posting Group"; "Bal. Gen. Bus. Posting Group")
            {
                ApplicationArea = Suite;
                ToolTip = 'Specifies the general business posting group code associated with the balancing account that will be used when you post the entry.';
                Visible = false;
            }
            field("Bal. Gen. Prod. Posting Group"; "Bal. Gen. Prod. Posting Group")
            {
                ApplicationArea = Suite;
                ToolTip = 'Specifies the general product posting group code associated with the balancing account that will be used when you post the entry.';
                Visible = false;
            }
            field("Bal. VAT Bus. Posting Group"; "Bal. VAT Bus. Posting Group")
            {
                ApplicationArea = Basic, Suite;
                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("Bal. VAT Prod. Posting Group"; "Bal. VAT Prod. Posting Group")
            {
                ApplicationArea = Basic, Suite;
                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("Applied (Yes/No)"; IsApplied)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Applied (Yes/No)';
                ToolTip = 'Specifies if the payment has been applied.';
            }
            field("Applies-to Doc. Type"; "Applies-to Doc. Type")
            {
                ApplicationArea = Basic, Suite;
                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.';
            }
            field("Applies-to Doc. No."; "Applies-to Doc. No.")
            {
                ApplicationArea = Basic, Suite;
                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.';
            }
            field("Applies-to ID"; "Applies-to ID")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the ID of entries that will be applied to when you choose the Apply Entries action.';
                Visible = false;
            }
            field("Reason Code"; "Reason Code")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the reason code, a supplementary source code that enables you to trace the entry.';
                Visible = false;
            }
            field(Correction; Correction)
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the entry as a corrective entry. You can use the field if you need to post a corrective entry to an account.';
            }
            field(Comments; Comment)
            {
                ApplicationArea = Comments;
                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("Direct Debit Mandate ID"; "Direct Debit Mandate ID")
            {
                ApplicationArea = Basic, Suite;
                ToolTip = 'Specifies the identification of the direct-debit mandate that is being used on the journal lines to process a direct debit collection.';
                Visible = false;
            }
            field("Job Queue Status"; "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 "Job Queue Status" = "Job Queue Status"::" " then
                        exit;
                    JobQueueEntry.ShowStatusMsg("Job Queue Entry ID");
                end;
            }
            field("Shortcut Dimension 1 Code"; "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"; "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));
                Visible = DimVisible3;

                trigger OnValidate()
                begin
                    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));
                Visible = DimVisible4;

                trigger OnValidate()
                begin
                    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));
                Visible = DimVisible5;

                trigger OnValidate()
                begin
                    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));
                Visible = DimVisible6;

                trigger OnValidate()
                begin
                    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));
                Visible = DimVisible7;

                trigger OnValidate()
                begin
                    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));
                Visible = DimVisible8;

                trigger OnValidate()
                begin
                    ValidateShortcutDimCode(8, ShortcutDimCode[8]);

                    OnAfterValidateShortcutDimCode(Rec, ShortcutDimCode, 8);
                end;
            }
        }
        group(Control24)
        {
            ShowCaption = false;
            fixed(Control1903561801)
            {
                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 = Basic, Suite;
                        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 = Basic, Suite;
                        Caption = 'Bal. Account Name';
                        Editable = false;
                        ToolTip = 'Specifies the name of the balancing account that has been entered on the journal line.';
                    }
                }
                group(Control1900545401)
                {
                    Caption = 'Balance';
                    field(Balance; Balance + "Balance (LCY)" - xRec."Balance (LCY)")
                    {
                        ApplicationArea = All;
                        AutoFormatType = 1;
                        Caption = 'Balance';
                        Editable = false;
                        ToolTip = 'Specifies the balance that has accumulated in the cash receipt journal on the line where the cursor is.';
                        Visible = BalanceVisible;
                    }
                }
                group("Total Balance")
                {
                    Caption = 'Total Balance';
                    field(TotalBalance; TotalBalance + "Balance (LCY)" - xRec."Balance (LCY)")
                    {
                        ApplicationArea = All;
                        AutoFormatType = 1;
                        Caption = 'Total Balance';
                        Editable = false;
                        ToolTip = 'Specifies the total balance in the cash receipt 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(Control1900919607; "Dimension Set Entries FactBox")
        {
            ApplicationArea = Basic, Suite;
            SubPageLink = "Dimension Set ID" = FIELD("Dimension Set ID");
            Visible = 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;
                Promoted = true;
                PromotedCategory = Category7;
                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
                    ShowDimensions();
                    CurrPage.SaveRecord;
                end;
            }
            action(IncomingDoc)
            {
                AccessByPermission = TableData "Incoming Document" = R;
                ApplicationArea = Basic, Suite;
                Caption = 'Incoming Document';
                Image = Document;
                Promoted = true;
                PromotedCategory = Category7;
                Scope = Repeater;
                ToolTip = 'View or create an incoming document record that is linked to the entry or document.';

                trigger OnAction()
                var
                    IncomingDocument: Record "Incoming Document";
                begin
                    Validate("Incoming Document Entry No.", IncomingDocument.SelectIncomingDocument("Incoming Document Entry No.", RecordId));
                end;
            }
        }
        group("A&ccount")
        {
            Caption = 'A&ccount';
            Image = ChartOfAccounts;
            action(Card)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Card';
                Image = EditLines;
                Promoted = true;
                PromotedCategory = Category8;
                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 = Basic, Suite;
                Caption = 'Ledger E&ntries';
                Image = GLRegisters;
                Promoted = true;
                PromotedCategory = Category8;
                RunObject = Codeunit "Gen. Jnl.-Show Entries";
                ShortCutKey = 'Ctrl+F7';
                ToolTip = 'View the history of transactions that have been posted for the selected record.';
            }
        }
        action(Approvals)
        {
            AccessByPermission = TableData "Approval Entry" = R;
            ApplicationArea = Suite;
            Caption = 'Approvals';
            Image = Approvals;
            Promoted = true;
            PromotedCategory = Category7;
            ToolTip = 'View a list of the records that are waiting to be approved. For example, you can see who requested the record to be approved, when it was sent, and when it is due to be approved.';

            trigger OnAction()
            var
                GenJournalLine: Record "Gen. Journal Line";
                ApprovalsMgmt: Codeunit "Approvals Mgmt.";
            begin
                GetCurrentlySelectedLines(GenJournalLine);
                ApprovalsMgmt.ShowJournalApprovalEntries(GenJournalLine);
            end;
        }
        group(Errors)
        {
            Image = ErrorLog;
            Visible = BackgroundErrorCheck;
            action(ShowLinesWithErrors)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Show Lines with Issues';
                Image = Error;
                Promoted = true;
                PromotedCategory = Category4;
                Visible = BackgroundErrorCheck;
                Enabled = not ShowAllLinesEnabled;
                ToolTip = 'View a list of journal lines that have issues before you post the journal.';

                trigger OnAction()
                begin
                    SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
                end;
            }
            action(ShowAllLines)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Show All Lines';
                Image = ExpandAll;
                Promoted = true;
                PromotedCategory = Category4;
                Visible = BackgroundErrorCheck;
                Enabled = ShowAllLinesEnabled;
                ToolTip = 'View all journal lines, including lines with and without issues.';

                trigger OnAction()
                begin
                    SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
                end;
            }
        }
    }
    area(processing)
    {
        group("F&unctions")
        {
            Caption = 'F&unctions';
            Image = "Action";
            action("Renumber Document Numbers")
            {
                ApplicationArea = Basic, Suite;
                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
                    RenumberDocumentNo
                end;
            }
            action("Apply Entries")
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Apply Entries';
                Ellipsis = true;
                Enabled = ApplyEntriesActionEnabled;
                Image = ApplyEntries;
                Promoted = true;
                PromotedCategory = Process;
                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 = Basic, Suite;
                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 = Basic, Suite;
                Caption = 'Reconcile';
                Image = Reconcile;
                Promoted = true;
                PromotedCategory = Process;
                PromotedIsBig = true;
                ShortCutKey = 'Ctrl+F11';
                ToolTip = 'View the balances on bank accounts that are marked for reconciliation, usually liquid accounts.';

                trigger OnAction()
                begin
                    GLReconcile.SetGenJnlLine(Rec);
                    GLReconcile.Run;
                end;
            }
            action("Test Report")
            {
                ApplicationArea = Basic, Suite;
                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()
                begin
                    ReportPrint.PrintGenJnlLine(Rec);
                end;
            }
            action(Post)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'P&ost';
                Image = PostOrder;
                Promoted = true;
                PromotedCategory = Category6;
                PromotedIsBig = true;
                ShortCutKey = 'F9';
                ToolTip = 'Finalize the document or journal by posting the amounts and quantities to the related accounts in your company books.';

                trigger OnAction()
                begin
                    CODEUNIT.Run(CODEUNIT::"Gen. Jnl.-Post", Rec);
                    CurrentJnlBatchName := GetRangeMax("Journal Batch Name");
                    SetJobQueueVisibility();
                    CurrPage.Update(false);
                end;
            }
            action(Preview)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Preview Posting';
                Image = ViewPostedOrder;
                Promoted = true;
                PromotedCategory = Category6;
                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";
                begin
                    GenJnlPost.Preview(Rec);
                end;
            }
            action("Post and &Print")
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Post and &Print';
                Image = PostPrint;
                Promoted = true;
                PromotedCategory = Category6;
                PromotedIsBig = true;
                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()
                begin
                    CODEUNIT.Run(CODEUNIT::"Gen. Jnl.-Post+Print", Rec);
                    CurrentJnlBatchName := GetRangeMax("Journal Batch Name");
                    SetJobQueueVisibility();
                    CurrPage.Update(false);
                end;
            }
            action("Remove From Job Queue")
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Remove From Job Queue';
                Image = RemoveLine;
                Promoted = true;
                PromotedCategory = Category6;
                PromotedIsBig = true;
                ToolTip = 'Remove the scheduled processing of this record from the job queue.';
                Visible = JobQueueVisible;

                trigger OnAction()
                begin
                    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;
                    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;
                    Image = SendApprovalRequest;
                    ToolTip = 'Send selected journal lines for approval.';

                    trigger OnAction()
                    var
                        GenJournalLine: Record "Gen. Journal Line";
                        ApprovalsMgmt: Codeunit "Approvals Mgmt.";
                    begin
                        GetCurrentlySelectedLines(GenJournalLine);
                        ApprovalsMgmt.TrySendJournalLineApprovalRequests(GenJournalLine);
                    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);
                        SetControlAppearanceFromBatch;
                        SetControlAppearance;
                    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
                        GenJournalLine: Record "Gen. Journal Line";
                        ApprovalsMgmt: Codeunit "Approvals Mgmt.";
                    begin
                        GetCurrentlySelectedLines(GenJournalLine);
                        ApprovalsMgmt.TryCancelJournalLineApprovalRequests(GenJournalLine);
                    end;
                }
            }
            action(CreateFlow)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Create a flow';
                Image = Flow;
                ToolTip = 'Create a new flow in Power Automate from a list of relevant flow templates.';
                Visible = IsSaaS;

                trigger OnAction()
                var
                    FlowServiceManagement: Codeunit "Flow Service Management";
                    FlowTemplateSelector: Page "Flow Template Selector";
                begin
                    // Opens page 6400 where the user can use filtered templates to create new flows.
                    FlowTemplateSelector.SetSearchText(FlowServiceManagement.GetJournalTemplateFilter);
                    FlowTemplateSelector.Run;
                end;
            }
            action(SeeFlows)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'See my flows';
                Image = Flow;
                RunObject = Page "Flow Selector";
                ToolTip = 'View and configure Power Automate flows that you created.';
            }
        }
        group(Approval)
        {
            Caption = 'Approval';
            action(Approve)
            {
                ApplicationArea = All;
                Caption = 'Approve';
                Image = Approve;
                Promoted = true;
                PromotedCategory = Category4;
                PromotedIsBig = true;
                PromotedOnly = true;
                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;
                Promoted = true;
                PromotedCategory = Category4;
                PromotedIsBig = true;
                PromotedOnly = true;
                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;
                Promoted = true;
                PromotedCategory = Category4;
                PromotedOnly = true;
                ToolTip = 'Delegate the approval to a substitute approver.';
                Visible = OpenApprovalEntriesExistForCurrUser;

                trigger OnAction()
                var
                    ApprovalsMgmt: Codeunit "Approvals Mgmt.";
                begin
                    ApprovalsMgmt.DelegateGenJournalLineRequest(Rec);
                end;
            }
            action(Comment)
            {
                ApplicationArea = All;
                Caption = 'Comments';
                Image = ViewComments;
                Promoted = true;
                PromotedCategory = Category4;
                PromotedOnly = true;
                ToolTip = 'View or add comments for the record.';
                Visible = OpenApprovalEntriesExistForCurrUser;

                trigger OnAction()
                var
                    GenJournalBatch: Record "Gen. Journal Batch";
                    ApprovalsMgmt: Codeunit "Approvals Mgmt.";
                begin
                    if OpenApprovalEntriesOnJnlLineExist then
                        ApprovalsMgmt.GetApprovalComment(Rec)
                    else
                        if OpenApprovalEntriesOnJnlBatchExist then
                            if GenJournalBatch.Get("Journal Template Name", "Journal Batch Name") then
                                ApprovalsMgmt.GetApprovalComment(GenJournalBatch);
                end;
            }
        }
        group("Page")
        {
            Caption = 'Page';
            action(EditInExcel)
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Edit in Excel';
                Image = Excel;
                Promoted = true;
                PromotedCategory = Category5;
                PromotedIsBig = true;
                PromotedOnly = true;
                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(CurrPage.Caption, CurrPage.ObjectId(false), "Journal Batch Name", "Journal Template Name");
                end;
            }
        }
    }
}

trigger OnAfterGetCurrRecord()
var
    GenJournalBatch: Record "Gen. Journal Batch";
begin
    GenJnlManagement.GetAccounts(Rec, AccName, BalAccName);
    UpdateBalance;
    EnableApplyEntriesAction;
    SetControlAppearance;
    //CurrPage.IncomingDocAttachFactBox.PAGE.LoadDataFromRecord(Rec);

    // if GenJournalBatch.Get("Journal Template Name", "Journal Batch Name") then
    //     ShowWorkflowStatusOnBatch := CurrPage.WorkflowStatusBatch.PAGE.SetFilterOnWorkflowRecord(GenJournalBatch.RecordId);
    // ShowWorkflowStatusOnLine := CurrPage.WorkflowStatusLine.PAGE.SetFilterOnWorkflowRecord(RecordId);
    SetJobQueueVisibility();
end;

trigger OnAfterGetRecord()
begin
    ShowShortcutDimCode(ShortcutDimCode);
    SetControlAppearance();
    GenJnlManagement.GetAccounts(Rec, AccName, BalAccName);
    CurrPage.IncomingDocAttachFactBox.PAGE.SetCurrentRecordID(RecordId);
end;

trigger OnInit()
begin
    TotalBalanceVisible := true;
    BalanceVisible := true;
    AmountVisible := true;
    GeneralLedgerSetup.Get();
    SetJobQueueVisibility();
end;

trigger OnInsertRecord(BelowxRec: Boolean): Boolean
begin
    CurrPage.IncomingDocAttachFactBox.PAGE.SetCurrentRecordID(RecordId);
end;

trigger OnNewRecord(BelowxRec: Boolean)
begin
    UpdateBalance;
    EnableApplyEntriesAction;
    SetUpNewLine(xRec, Balance, BelowxRec);
    Clear(ShortcutDimCode);
end;

trigger OnOpenPage()
var
    ServerSetting: Codeunit "Server Setting";
    EnvironmentInfo: Codeunit "Environment Information";
    JnlSelected: Boolean;
    IsHandled: Boolean;
begin
    IsSaaSExcelAddinEnabled := ServerSetting.GetIsSaasExcelAddinEnabled();
    IsSaaS := EnvironmentInfo.IsSaaS;
    if ClientTypeManagement.GetCurrentClientType = CLIENTTYPE::ODataV4 then
        exit;
    BalAccName := '';
    SetControlVisibility;
    SetDimensionsVisibility;

    if IsOpenedFromBatch then begin
        CurrentJnlBatchName := "Journal Batch Name";
        GenJnlManagement.OpenJnl(CurrentJnlBatchName, Rec);
        SetControlAppearanceFromBatch();
        exit;
    end;

    IsHandled := false;
    OnOnOpenPageOnBeforeTemplateSelection(Rec, JnlSelected, CurrentJnlBatchName, IsHandled);
    if IsHandled then
        exit;

    GenJnlManagement.TemplateSelection(PAGE::"Cash Receipt Journal", "Gen. Journal Template Type"::"Cash Receipts", false, Rec, JnlSelected);
    if not JnlSelected then
        Error('');
    GenJnlManagement.OpenJnl(CurrentJnlBatchName, Rec);
    //SetControlAppearanceFromBatch();
    OnAfterOnOpenPage(CurrentJnlBatchName);
end;

var
    GeneralLedgerSetup: Record "General Ledger Setup";
    GenJnlManagement: Codeunit GenJnlManagement;
    ReportPrint: Codeunit "Test Report-Print";
    ClientTypeManagement: Codeunit "Client Type Management";
    JournalErrorsMgt: Codeunit "Journal Errors Mgt.";
    ChangeExchangeRate: Page "Change Exchange Rate";
    GLReconcile: Page Reconciliation;
    CurrentJnlBatchName: Code[10];
    AccName: Text[100];
    BalAccName: Text[100];
    Balance: Decimal;
    TotalBalance: Decimal;
    NumberOfRecords: Integer;
    ShowBalance: Boolean;
    ShowTotalBalance: Boolean;
    ApplyEntriesActionEnabled: Boolean;
    [InDataSet]
    BalanceVisible: Boolean;
    [InDataSet]
    TotalBalanceVisible: Boolean;
    OpenApprovalEntriesExistForCurrUser: Boolean;
    OpenApprovalEntriesExistForCurrUserBatch: Boolean;
    OpenApprovalEntriesOnJnlBatchExist: Boolean;
    OpenApprovalEntriesOnJnlLineExist: Boolean;
    OpenApprovalEntriesOnBatchOrCurrJnlLineExist: Boolean;
    OpenApprovalEntriesOnBatchOrAnyJnlLineExist: Boolean;
    ShowWorkflowStatusOnBatch: Boolean;
    ShowWorkflowStatusOnLine: Boolean;
    CanCancelApprovalForJnlBatch: Boolean;
    CanCancelApprovalForJnlLine: Boolean;
    IsSaaSExcelAddinEnabled: Boolean;
    CanRequestFlowApprovalForBatch: Boolean;
    CanRequestFlowApprovalForBatchAndAllLines: Boolean;
    CanRequestFlowApprovalForBatchAndCurrentLine: Boolean;
    CanCancelFlowApprovalForBatch: Boolean;
    CanCancelFlowApprovalForLine: Boolean;
    AmountVisible: Boolean;
    DebitCreditVisible: Boolean;
    IsSaaS: Boolean;
    JobQueuesUsed: Boolean;
    JobQueueVisible: Boolean;
    BackgroundErrorCheck: Boolean;
    ShowAllLinesEnabled: 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 UpdateBalance()
begin
    GenJnlManagement.CalcBalance(
      Rec, xRec, Balance, TotalBalance, ShowBalance, ShowTotalBalance);
    BalanceVisible := ShowBalance;
    TotalBalanceVisible := ShowTotalBalance;
    if ShowTotalBalance then
        NumberOfRecords := Count();
    OnAfterUpdateBalance(Rec, xRec, Balance, TotalBalance);
end;

local procedure EnableApplyEntriesAction()
begin
    ApplyEntriesActionEnabled :=
      ("Account Type" in ["Account Type"::Customer, "Account Type"::Vendor]) or
      ("Bal. Account Type" in ["Bal. Account Type"::Customer, "Bal. Account Type"::Vendor]);
end;

local procedure CurrentJnlBatchNameOnAfterVali()
begin
    CurrPage.SaveRecord;
    GenJnlManagement.SetName(CurrentJnlBatchName, Rec);
    SetControlAppearanceFromBatch;
    CurrPage.Update(false);
end;

local procedure GetCurrentlySelectedLines(var GenJournalLine: Record "Gen. Journal Line"): Boolean
begin
    CurrPage.SetSelectionFilter(GenJournalLine);
    exit(GenJournalLine.FindSet);
end;

local procedure SetControlAppearanceFromBatch()
var
    GenJournalBatch: Record "Gen. Journal Batch";
    ApprovalsMgmt: Codeunit "Approvals Mgmt.";
    WorkflowWebhookManagement: Codeunit "Workflow Webhook Management";
    CanRequestFlowApprovalForAllLines: Boolean;
begin
    if not GenJournalBatch.Get(GetRangeMax("Journal Template Name"), CurrentJnlBatchName) then
        exit;

    CheckOpenApprovalEntries(GenJournalBatch.RecordId);

    CanCancelApprovalForJnlBatch := ApprovalsMgmt.CanCancelApprovalForRecord(GenJournalBatch.RecordId);

    WorkflowWebhookManagement.GetCanRequestAndCanCancelJournalBatch(
      GenJournalBatch, CanRequestFlowApprovalForBatch, CanCancelFlowApprovalForBatch, CanRequestFlowApprovalForAllLines);
    CanRequestFlowApprovalForBatchAndAllLines := CanRequestFlowApprovalForBatch and CanRequestFlowApprovalForAllLines;
    BackgroundErrorCheck := GenJournalBatch."Background Error Check";
    ShowAllLinesEnabled := true;
    SwitchLinesWithErrorsFilter(ShowAllLinesEnabled);
    JournalErrorsMgt.SetFullBatchCheck(true);
end;

local procedure CheckOpenApprovalEntries(BatchRecordId: RecordID)
var
    ApprovalsMgmt: Codeunit "Approvals Mgmt.";
begin
    OpenApprovalEntriesExistForCurrUserBatch := ApprovalsMgmt.HasOpenApprovalEntriesForCurrentUser(BatchRecordId);

    OpenApprovalEntriesOnJnlBatchExist := ApprovalsMgmt.HasOpenApprovalEntries(BatchRecordId);

    OpenApprovalEntriesOnBatchOrAnyJnlLineExist :=
      OpenApprovalEntriesOnJnlBatchExist or
      ApprovalsMgmt.HasAnyOpenJournalLineApprovalEntries("Journal Template Name", "Journal Batch Name");
end;

//local procedure SetControlAppearance()
procedure SetControlAppearance()
var
    ApprovalsMgmt: Codeunit "Approvals Mgmt.";
    WorkflowWebhookManagement: Codeunit "Workflow Webhook Management";
    CanRequestFlowApprovalForLine: Boolean;
begin
    OpenApprovalEntriesExistForCurrUser :=
      OpenApprovalEntriesExistForCurrUserBatch or ApprovalsMgmt.HasOpenApprovalEntriesForCurrentUser(RecordId);

    OpenApprovalEntriesOnJnlLineExist := ApprovalsMgmt.HasOpenApprovalEntries(RecordId);
    OpenApprovalEntriesOnBatchOrCurrJnlLineExist := OpenApprovalEntriesOnJnlBatchExist or OpenApprovalEntriesOnJnlLineExist;

    CanCancelApprovalForJnlLine := ApprovalsMgmt.CanCancelApprovalForRecord(RecordId);

    WorkflowWebhookManagement.GetCanRequestAndCanCancel(RecordId, CanRequestFlowApprovalForLine, CanCancelFlowApprovalForLine);
    CanRequestFlowApprovalForBatchAndCurrentLine := CanRequestFlowApprovalForBatch and CanRequestFlowApprovalForLine;
end;

local procedure SetControlVisibility()
var
    GLSetup: Record "General Ledger Setup";
begin
    GLSetup.Get();
    AmountVisible := not (GLSetup."Show Amounts" = GLSetup."Show Amounts"::"Debit/Credit Only");
    DebitCreditVisible := not (GLSetup."Show Amounts" = GLSetup."Show Amounts"::"Amount Only");
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;

procedure CurrentJnlBatchNameSet(var _currentJnlBatchName: code[10])
begin
    CurrentJnlBatchName := _currentJnlBatchName;
end;

procedure CurrentJnlBatchNameGet(): code[10]
begin
    exit(CurrentJnlBatchName);
end;

local procedure SetJobQueueVisibility()
begin
    JobQueueVisible := "Job Queue Status" = "Job Queue Status"::"Scheduled for Posting";
    JobQueuesUsed := GeneralLedgerSetup.JobQueueActive;
end;

[IntegrationEvent(false, false)]
local procedure OnAfterValidateShortcutDimCode(var GenJournalLine: Record "Gen. Journal Line"; var ShortcutDimCode: array[8] of Code[20]; DimIndex: Integer)
begin
end;

[IntegrationEvent(true, false)]
local procedure OnAfterUpdateBalance(var GenJnlLine: Record "Gen. Journal Line"; var xGenJnlLine: Record "Gen. Journal Line"; var Balance: Decimal; var TotalBalance: Decimal)
begin
end;

[IntegrationEvent(false, false)]
local procedure OnOnOpenPageOnBeforeTemplateSelection(var GenJournalLine: Record "Gen. Journal Line"; var JnlSelected: Boolean; CurrentJnlBatchName: Code[10]; var IsHandled: Boolean)
begin
end;

[IntegrationEvent(true, false)]
local procedure OnOnOpenPage(var IsHandled: Boolean; var CurrentJnlBatchName: Code[10]; GenJnlManagement: Codeunit GenJnlManagement)
begin
end;

[IntegrationEvent(true, false)]
local procedure OnAfterOnOpenPage(var CurrentJnlBatchName: Code[10])
begin
end;

}

JesperSchulz commented 3 years ago

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.