Page 9120 Journal Line Details FactBox

App
Base Application
Namespace
Microsoft.Finance.GeneralLedger.Journal
Versions
17-28
Source table
81

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Finance/GeneralLedger/Journal/JournalLineDetailsFactBox.Page.al230 lines, Copyright (c) Microsoft Corporation. MIT

// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Finance.GeneralLedger.Journal;

using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Finance.VAT.Setup;
using Microsoft.FixedAssets.FixedAsset;
using Microsoft.Purchases.Vendor;
using Microsoft.Sales.Customer;

/// <summary>
/// Provides detailed information about selected general journal lines in a factbox format for enhanced data visibility.
/// Displays posting groups, VAT information, account details, and other relevant line attributes for user reference.
/// </summary>
/// <remarks>
/// Information factbox for journal line detail display. Provides read-only access to extended journal line information
/// including posting setup details, account relationships, and transaction attributes for user assistance.
/// Key features: Posting group display, VAT information, account details, transaction attribute visibility.
/// Integration: Used with journal pages to provide contextual information about selected journal lines.
/// </remarks>
page 9120 "Journal Line Details FactBox"
{
    PageType = CardPart;
    Caption = 'Journal Line Details';
    Editable = false;
    LinksAllowed = false;
    UsageCategory = Administration;
    SourceTable = "Gen. Journal Line";

    layout
    {
        area(Content)
        {
            field(PostingGroup; Rec."Posting Group")
            {
                ApplicationArea = Basic, Suite;
                Caption = 'Posting Group';
                Editable = false;
                Enabled = VATPostingSetupEnabled;
                ToolTip = 'Specifies the account posting group that the entry on the journal line will be posted to.';

                trigger OnDrillDown()
                begin
                    DrillDownPostingGroup();
                end;
            }
            group(Account)
            {
                Caption = 'Account';
                field(AccountName; AccName)
                {
                    ApplicationArea = Basic, Suite;
                    Caption = 'Account Name';
                    Editable = false;
                    Enabled = AccountEnabled;
                    ToolTip = 'Specifies the account name that the entry on the journal line will be posted to.';

                    trigger OnDrillDown()
                    begin
                        Codeunit.Run(Codeunit::"Gen. Jnl.-Show Card", Rec);
                    end;
                }
                field(GenPostingSetup; GenPostingSetupText)
                {
                    ApplicationArea = Basic, Suite;
                    Caption = 'General Posting Setup';
                    Editable = false;
                    Enabled = GenPostingSetupEnabled;
                    ToolTip = 'Specifies the account name that the entry on the journal line will be posted to.';

                    trigger OnDrillDown()
                    var
                        GeneralPostingSetup: Record "General Posting Setup";
                    begin
                        if GeneralPostingSetup.Get(Rec."Gen. Bus. Posting Group", Rec."Gen. Prod. Posting Group") then
                            Page.Run(Page::"General Posting Setup", GeneralPostingSetup);
                    end;
                }
                field(VATPostingSetup; VATPostingSetupText)
                {
                    ApplicationArea = Basic, Suite;
                    Caption = 'VAT Posting Setup';
                    Editable = false;
                    Enabled = VATPostingSetupEnabled;
                    ToolTip = 'Specifies the account name that the entry on the journal line will be posted to.';

                    trigger OnDrillDown()
                    var
                        VATPostingSetupLocal: Record "VAT Posting Setup";
                    begin
                        if VATPostingSetupLocal.Get(Rec."VAT Bus. Posting Group", Rec."VAT Prod. Posting Group") then
                            Page.Run(Page::"VAT Posting Setup", VATPostingSetupLocal);
                    end;
                }
            }
            group(BalAccount)
            {
                Caption = 'Balance Account';
                field(BalAccountName; BalAccName)
                {
                    ApplicationArea = Basic, Suite;
                    Caption = 'Bal. Account Name';
                    Editable = false;
                    Enabled = BalAccountEnabled;
                    ToolTip = 'Specifies the name of the balancing account that has been entered on the journal line.';

                    trigger OnDrillDown()
                    var
                        GenJnlLine: Record "Gen. Journal Line";
                    begin
                        if Rec."Bal. Account No." <> '' then begin
                            GenJnlLine.TransferFields(Rec);
                            CODEUNIT.Run(CODEUNIT::"Exchange Acc. G/L Journal Line", GenJnlLine);
                            Codeunit.Run(Codeunit::"Gen. Jnl.-Show Card", GenJnlLine);
                        end;
                    end;
                }
                field(BalGenPostingSetup; BalGenPostingSetupText)
                {
                    ApplicationArea = Basic, Suite;
                    Caption = 'General Posting Setup';
                    Editable = false;
                    Enabled = BalGenPostingSetupEnabled;
                    ToolTip = 'Specifies the account name that the entry on the journal line will be posted to.';

                    trigger OnDrillDown()
                    var
                        GeneralPostingSetup: Record "General Posting Setup";
                    begin
                        if GeneralPostingSetup.Get(Rec."Bal. Gen. Bus. Posting Group", Rec."Bal. Gen. Prod. Posting Group") then
                            Page.Run(Page::"General Posting Setup", GeneralPostingSetup);
                    end;
                }
                field(BalVATPostingSetup; BalVATPostingSetupText)
                {
                    ApplicationArea = Basic, Suite;
                    Caption = 'VAT Posting Setup';
                    Editable = false;
                    Enabled = BalVATPostingSetupEnabled;
                    ToolTip = 'Specifies the account name that the entry on the journal line will be posted to.';

                    trigger OnDrillDown()
                    var
                        VATPostingSetupLocal: Record "VAT Posting Setup";
                    begin
                        if VATPostingSetupLocal.Get(Rec."Bal. VAT Bus. Posting Group", Rec."Bal. VAT Prod. Posting Group") then
                            Page.Run(Page::"VAT Posting Setup", VATPostingSetupLocal);
                    end;
                }
            }
        }
    }

    trigger OnAfterGetCurrRecord()
    begin
        GenJnlManagement.GetAccounts(Rec, AccName, BalAccName);
        SetControlEnabled();
        MakePostingSetupText();
    end;

    var
        GenJnlManagement: Codeunit GenJnlManagement;
        AccName: Text[100];
        BalAccName: Text[100];
        GenPostingSetupText: Text;
        VATPostingSetupText: Text;
        BalGenPostingSetupText: Text;
        BalVATPostingSetupText: Text;
        AccountEnabled: Boolean;
        BalAccountEnabled: Boolean;
        GenPostingSetupEnabled: Boolean;
        VATPostingSetupEnabled: Boolean;
        BalGenPostingSetupEnabled: Boolean;
        BalVATPostingSetupEnabled: Boolean;

    local procedure MakePostingSetupText()
    begin
        GenPostingSetupText := GetPostingSetupText(Rec."Gen. Bus. Posting Group", Rec."Gen. Prod. Posting Group");
        VATPostingSetupText := GetPostingSetupText(Rec."VAT Bus. Posting Group", Rec."VAT Prod. Posting Group");
        BalGenPostingSetupText := GetPostingSetupText(Rec."Bal. Gen. Bus. Posting Group", Rec."Bal. Gen. Prod. Posting Group");
        BalVATPostingSetupText := GetPostingSetupText(Rec."Bal. VAT Bus. Posting Group", Rec."Bal. VAT Prod. Posting Group");
    end;

    local procedure GetPostingSetupText(BusPostingGroup: Code[20]; ProdPostingGroup: Code[20]): Text
    begin
        if (BusPostingGroup = '') and (ProdPostingGroup = '') then
            exit('');

        exit(BusPostingGroup + ', ' + ProdPostingGroup);
    end;

    local procedure SetControlEnabled()
    var
        GeneralPostingSetup: Record "General Posting Setup";
        VATPostingSetupLocal: Record "VAT Posting Setup";
    begin
        AccountEnabled := Rec."Account No." <> '';
        BalAccountEnabled := Rec."Bal. Account No." <> '';
        GenPostingSetupEnabled := AccountEnabled and GeneralPostingSetup.Get(Rec."Gen. Bus. Posting Group", Rec."Gen. Prod. Posting Group");
        VATPostingSetupEnabled := AccountEnabled and VATPostingSetupLocal.Get(Rec."VAT Bus. Posting Group", Rec."VAT Prod. Posting Group");
        BalGenPostingSetupEnabled := BalAccountEnabled and GeneralPostingSetup.Get(Rec."Bal. Gen. Bus. Posting Group", Rec."Bal. Gen. Prod. Posting Group");
        BalVATPostingSetupEnabled := BalAccountEnabled and VATPostingSetupLocal.Get(Rec."Bal. VAT Bus. Posting Group", Rec."Bal. VAT Prod. Posting Group");

    end;

    local procedure DrillDownPostingGroup()
    var
        CustomerPostingGroup: Record "Customer Posting Group";
        VendorPostingGroup: Record "Vendor Posting Group";
        FAPostingGroup: Record "FA Posting Group";
    begin
        case true of
            (Rec."Account Type" = Rec."Account Type"::Customer) or
            (Rec."Bal. Account Type" = Rec."Bal. Account Type"::Customer):
                if CustomerPostingGroup.Get(Rec."Posting Group") then
                    Page.Run(Page::"Customer Posting Groups", CustomerPostingGroup);
            (Rec."Account Type" = Rec."Account Type"::Vendor) or
            (Rec."Bal. Account Type" = Rec."Bal. Account Type"::Vendor):
                if VendorPostingGroup.Get(Rec."Posting Group") then
                    Page.Run(Page::"Vendor Posting Groups", VendorPostingGroup);
            (Rec."Account Type" = Rec."Account Type"::"Fixed Asset") or
            (Rec."Bal. Account Type" = Rec."Bal. Account Type"::"Fixed Asset"):
                if FAPostingGroup.Get(Rec."Posting Group") then
                    Page.Run(Page::"FA Posting Groups", FAPostingGroup);
        end;
    end;
}