Table 5605 FA Journal Setup, source in 29

Source29

src/Layers/W1/BaseApp/FixedAssets/FixedAsset/FAJournalSetup.Table.al408 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.FixedAssets.Journal;

using Microsoft.Finance.GeneralLedger.Journal;
using Microsoft.FixedAssets.Depreciation;
using Microsoft.FixedAssets.Insurance;
using Microsoft.Foundation.NoSeries;
using System.Security.AccessControl;
using System.Security.User;

table 5605 "FA Journal Setup"
{
    Caption = 'FA Journal Setup';
    DataClassification = CustomerContent;
    DrillDownPageID = "FA Journal Setup";
    LookupPageID = "FA Journal Setup";

    fields
    {
        field(1; "Depreciation Book Code"; Code[10])
        {
            Caption = 'Depreciation Book Code';
            ToolTip = 'Specifies the code for the depreciation book to which the line will be posted if you have selected Fixed Asset in the Type field for this line.';
            NotBlank = true;
            TableRelation = "Depreciation Book";
        }
        field(2; "User ID"; Code[50])
        {
            Caption = 'User ID';
            ToolTip = 'Specifies the ID of the user who posted the entry, to be used, for example, in the change log.';
            DataClassification = EndUserIdentifiableInformation;
            TableRelation = User."User Name";
            ValidateTableRelation = false;

            trigger OnValidate()
            var
                UserSelection: Codeunit "User Selection";
            begin
                UserSelection.ValidateUserName("User ID");
            end;
        }
        field(3; "FA Jnl. Template Name"; Code[10])
        {
            Caption = 'FA Jnl. Template Name';
            ToolTip = 'Specifies an FA journal template.';
            Editable = true;
            TableRelation = "FA Journal Template";

            trigger OnValidate()
            begin
                "FA Jnl. Batch Name" := '';
            end;
        }
        field(4; "FA Jnl. Batch Name"; Code[10])
        {
            Caption = 'FA Jnl. Batch Name';
            ToolTip = 'Specifies the relevant FA journal batch name.';
            TableRelation = "FA Journal Batch".Name where("Journal Template Name" = field("FA Jnl. Template Name"));
        }
        field(5; "Gen. Jnl. Template Name"; Code[10])
        {
            Caption = 'Gen. Jnl. Template Name';
            ToolTip = 'Specifies a general journal template.';
            TableRelation = "Gen. Journal Template";

            trigger OnValidate()
            begin
                "Gen. Jnl. Batch Name" := '';
            end;
        }
        field(6; "Gen. Jnl. Batch Name"; Code[10])
        {
            Caption = 'Gen. Jnl. Batch Name';
            ToolTip = 'Specifies the relevant general journal batch name.';
            TableRelation = "Gen. Journal Batch".Name where("Journal Template Name" = field("Gen. Jnl. Template Name"));
        }
        field(7; "Insurance Jnl. Template Name"; Code[10])
        {
            Caption = 'Insurance Jnl. Template Name';
            ToolTip = 'Specifies an insurance journal template.';
            TableRelation = "Insurance Journal Template";

            trigger OnValidate()
            begin
                "Insurance Jnl. Batch Name" := '';
            end;
        }
        field(8; "Insurance Jnl. Batch Name"; Code[10])
        {
            Caption = 'Insurance Jnl. Batch Name';
            ToolTip = 'Specifies the relevant insurance journal batch name.';
            TableRelation = "Insurance Journal Batch".Name where("Journal Template Name" = field("Insurance Jnl. Template Name"));
        }
    }

    keys
    {
        key(Key1; "Depreciation Book Code", "User ID")
        {
            Clustered = true;
        }
    }

    fieldgroups
    {
    }

    trigger OnInsert()
    begin
        DeprBook.LockTable();
        DeprBook.Get("Depreciation Book Code");
    end;

    var
        DeprBook: Record "Depreciation Book";

#pragma warning disable AA0074
#pragma warning disable AA0470
        Text000: Label 'You must specify %1.';
#pragma warning restore AA0470
#pragma warning restore AA0074

    procedure GenJnlName(var DeprBook: Record "Depreciation Book"; var GenJnlLine: Record "Gen. Journal Line"; var NextLineNo: Integer)
    var
        FAJnlSetup: Record "FA Journal Setup";
        GenJnlTemplate: Record "Gen. Journal Template";
        GenJnlBatch: Record "Gen. Journal Batch";
        FAGetJnl: Codeunit "FA Get Journal";
        TemplateName: Code[10];
        BatchName: Code[10];
    begin
        if not FAJnlSetup.Get(DeprBook.Code, UserId) then
            FAJnlSetup.Get(DeprBook.Code, '');
        FAJnlSetup.TestField("Gen. Jnl. Template Name");
        FAJnlSetup.TestField("Gen. Jnl. Batch Name");
        TemplateName := FAJnlSetup."Gen. Jnl. Template Name";
        BatchName := FAJnlSetup."Gen. Jnl. Batch Name";
        OnGenJnlNameOnBeforeGenJnlTemplateGet(DeprBook, GenJnlLine, NextLineNo, TemplateName, BatchName);
        GenJnlTemplate.Get(TemplateName);
        GenJnlBatch.Get(TemplateName, BatchName);
        FAGetJnl.SetGenJnlRange(GenJnlLine, TemplateName, BatchName);
        NextLineNo := GenJnlLine."Line No.";
    end;

    procedure FAJnlName(var DeprBook: Record "Depreciation Book"; var FAJnlLine: Record "FA Journal Line"; var NextLineNo: Integer)
    var
        FAJnlSetup: Record "FA Journal Setup";
        FAJnlTemplate: Record "FA Journal Template";
        FAJnlBatch: Record "FA Journal Batch";
        FAGetJnl: Codeunit "FA Get Journal";
        TemplateName: Code[10];
        BatchName: Code[10];
    begin
        if not FAJnlSetup.Get(DeprBook.Code, UserId) then
            FAJnlSetup.Get(DeprBook.Code, '');
        FAJnlSetup.TestField("FA Jnl. Template Name");
        FAJnlSetup.TestField("FA Jnl. Batch Name");
        TemplateName := FAJnlSetup."FA Jnl. Template Name";
        BatchName := FAJnlSetup."FA Jnl. Batch Name";
        OnFAJnlNameOnBeforeFAJnlTemplateGet(DeprBook, FAJnlLine, NextLineNo, TemplateName, BatchName);
        FAJnlTemplate.Get(TemplateName);
        FAJnlBatch.Get(TemplateName, BatchName);
        FAGetJnl.SetFAJnlRange(FAJnlLine, TemplateName, BatchName);
        NextLineNo := FAJnlLine."Line No.";
    end;

    procedure InsuranceJnlName(var DeprBook: Record "Depreciation Book"; var InsuranceJnlLine: Record "Insurance Journal Line"; var NextLineNo: Integer)
    var
        FAJnlSetup: Record "FA Journal Setup";
        InsuranceJnlTempl: Record "Insurance Journal Template";
        InsuranceJnlBatch: Record "Insurance Journal Batch";
        FAGetJnl: Codeunit "FA Get Journal";
        TemplateName: Code[10];
        BatchName: Code[10];
    begin
        if not FAJnlSetup.Get(DeprBook.Code, UserId) then
            FAJnlSetup.Get(DeprBook.Code, '');
        FAJnlSetup.TestField("Insurance Jnl. Template Name");
        FAJnlSetup.TestField("Insurance Jnl. Batch Name");
        TemplateName := FAJnlSetup."Insurance Jnl. Template Name";
        BatchName := FAJnlSetup."Insurance Jnl. Batch Name";
        InsuranceJnlTempl.Get(TemplateName);
        InsuranceJnlBatch.Get(TemplateName, BatchName);
        FAGetJnl.SetInsuranceJnlRange(InsuranceJnlLine, TemplateName, BatchName);
        NextLineNo := InsuranceJnlLine."Line No.";
    end;

    procedure SetGenJnlTrailCodes(var GenJnlLine: Record "Gen. Journal Line")
    var
        GenJnlTemplate: Record "Gen. Journal Template";
        GenJnlBatch: Record "Gen. Journal Batch";
        IsHandled: Boolean;
    begin
        OnBeforeSetGenJnlTrailCodes(GenJnlLine, IsHandled);
        if IsHandled then
            exit;

        GenJnlTemplate.Get(GenJnlLine."Journal Template Name");
        GenJnlBatch.Get(GenJnlLine."Journal Template Name", GenJnlLine."Journal Batch Name");
        GenJnlLine."Source Code" := GenJnlTemplate."Source Code";
        GenJnlLine."Reason Code" := GenJnlBatch."Reason Code";
        GenJnlBatch.TestField("Bal. Account Type", GenJnlLine."Bal. Account Type"::"G/L Account");
        GenJnlBatch.TestField("Bal. Account No.", '');
    end;

    procedure GetFAJnlDocumentNo(var FAJnlLine: Record "FA Journal Line"; PostingDate: Date; CreateError: Boolean): Code[20]
    var
        FAJnlBatch: Record "FA Journal Batch";
        NoSeries: Codeunit "No. Series";
        DocumentNo: Code[20];
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeGetFAJnlDocumentNo(FAJnlLine, IsHandled);
        if IsHandled then
            exit;

        FAJnlBatch.Get(FAJnlLine."Journal Template Name", FAJnlLine."Journal Batch Name");
        if (FAJnlBatch."No. Series" <> '') and not FAJnlLine.Find('=><') then
            DocumentNo := NoSeries.PeekNextNo(FAJnlBatch."No. Series", PostingDate);
        if (DocumentNo = '') and CreateError then
            Error(Text000, FAJnlLine.FieldCaption("Document No."));
        exit(DocumentNo);
    end;

    procedure GetGenJnlDocumentNo(var GenJnlLine: Record "Gen. Journal Line"; PostingDate: Date; CreateError: Boolean): Code[20]
    var
        GenJnlBatch: Record "Gen. Journal Batch";
        NoSeries: Codeunit "No. Series";
        DocumentNo: Code[20];
        IsHandled: Boolean;
    begin
        IsHandled := false;
        OnBeforeGetGenJnlDocumentNo(GenJnlLine, IsHandled);
        if IsHandled then
            exit;

        GenJnlBatch.Get(GenJnlLine."Journal Template Name", GenJnlLine."Journal Batch Name");
        if (GenJnlBatch."No. Series" <> '') and not GenJnlLine.Find('=><') then
            DocumentNo := NoSeries.PeekNextNo(GenJnlBatch."No. Series", PostingDate);
        if (DocumentNo = '') and CreateError then
            Error(Text000, GenJnlLine.FieldCaption("Document No."));
        exit(DocumentNo);
    end;

    procedure GetInsuranceJnlDocumentNo(var InsuranceJnlLine: Record "Insurance Journal Line"; PostingDate: Date): Code[20]
    var
        InsuranceJnlBatch: Record "Insurance Journal Batch";
        NoSeries: Codeunit "No. Series";
        DocumentNo: Code[20];
    begin
        InsuranceJnlBatch.Get(InsuranceJnlLine."Journal Template Name", InsuranceJnlLine."Journal Batch Name");
        if (InsuranceJnlBatch."No. Series" <> '') and not InsuranceJnlLine.Find('=><') then
            DocumentNo := NoSeries.PeekNextNo(InsuranceJnlBatch."No. Series", PostingDate);
        if DocumentNo = '' then
            Error(Text000, InsuranceJnlLine.FieldCaption("Document No."));
        exit(DocumentNo);
    end;

    procedure GetFANoSeries(var FAJnlLine: Record "FA Journal Line"): Code[20]
    var
        FAJnlBatch: Record "FA Journal Batch";
    begin
        FAJnlBatch.Get(FAJnlLine."Journal Template Name", FAJnlLine."Journal Batch Name");
        if FAJnlBatch."No. Series" <> FAJnlBatch."Posting No. Series" then
            exit(FAJnlBatch."Posting No. Series");
        exit('');
    end;

    procedure GetGenNoSeries(var GenJnlLine: Record "Gen. Journal Line"): Code[20]
    var
        GenJnlBatch: Record "Gen. Journal Batch";
    begin
        GenJnlBatch.Get(GenJnlLine."Journal Template Name", GenJnlLine."Journal Batch Name");
        if GenJnlBatch."No. Series" <> GenJnlBatch."Posting No. Series" then
            exit(GenJnlBatch."Posting No. Series");
        exit('');
    end;

    procedure GetInsuranceNoSeries(var InsuranceJnlLine: Record "Insurance Journal Line"): Code[20]
    var
        InsuranceJnlBatch: Record "Insurance Journal Batch";
    begin
        InsuranceJnlBatch.Get(InsuranceJnlLine."Journal Template Name", InsuranceJnlLine."Journal Batch Name");
        if InsuranceJnlBatch."No. Series" <> InsuranceJnlBatch."Posting No. Series" then
            exit(InsuranceJnlBatch."Posting No. Series");
        exit('');
    end;

    procedure SetFAJnlTrailCodes(var FAJnlLine: Record "FA Journal Line")
    var
        FAJnlTemplate: Record "FA Journal Template";
        FAJnlBatch: Record "FA Journal Batch";
        IsHandled: Boolean;
    begin
        OnBeforeSetFAJnlTrailCodes(FAJnlLine, IsHandled);
        if IsHandled then
            exit;

        FAJnlTemplate.Get(FAJnlLine."Journal Template Name");
        FAJnlBatch.Get(FAJnlLine."Journal Template Name", FAJnlLine."Journal Batch Name");
        FAJnlLine."Source Code" := FAJnlTemplate."Source Code";
        FAJnlLine."Reason Code" := FAJnlBatch."Reason Code";
    end;

    procedure SetInsuranceJnlTrailCodes(var InsuranceJnlLine: Record "Insurance Journal Line")
    var
        InsuranceJnlTempl: Record "Insurance Journal Template";
        InsuranceJnlBatch: Record "Insurance Journal Batch";
    begin
        InsuranceJnlTempl.Get(InsuranceJnlLine."Journal Template Name");
        InsuranceJnlBatch.Get(InsuranceJnlLine."Journal Template Name", InsuranceJnlLine."Journal Batch Name");
        InsuranceJnlLine."Source Code" := InsuranceJnlTempl."Source Code";
        InsuranceJnlLine."Reason Code" := InsuranceJnlBatch."Reason Code";
    end;

    procedure IncFAJnlBatchName(var FAJnlBatch: Record "FA Journal Batch")
    var
        FAJnlSetup: Record "FA Journal Setup";
    begin
        if FAJnlSetup.Find('-') then
            repeat
                if (FAJnlSetup."FA Jnl. Template Name" = FAJnlBatch."Journal Template Name") and
                   (FAJnlSetup."FA Jnl. Batch Name" = FAJnlBatch.Name)
                then begin
                    FAJnlSetup."FA Jnl. Batch Name" := IncStr(FAJnlSetup."FA Jnl. Batch Name");
                    FAJnlSetup.Modify();
                end;
            until FAJnlSetup.Next() = 0;
        OnAfterIncFAJnlBatchName(FAJnlBatch);
    end;

    procedure IncGenJnlBatchName(var GenJnlBatch: Record "Gen. Journal Batch")
    var
        FAJnlSetup: Record "FA Journal Setup";
    begin
        if FAJnlSetup.Find('-') then
            repeat
                if (FAJnlSetup."Gen. Jnl. Template Name" = GenJnlBatch."Journal Template Name") and
                   (FAJnlSetup."Gen. Jnl. Batch Name" = GenJnlBatch.Name)
                then begin
                    FAJnlSetup."Gen. Jnl. Batch Name" := IncStr(FAJnlSetup."Gen. Jnl. Batch Name");
                    FAJnlSetup.Modify();
                end;
            until FAJnlSetup.Next() = 0;
        OnAfterIncGenJnlBatchName(GenJnlBatch);
    end;

    procedure IncInsuranceJnlBatchName(var InsuranceJnlBatch: Record "Insurance Journal Batch")
    var
        FAJnlSetup: Record "FA Journal Setup";
    begin
        if FAJnlSetup.Find('-') then
            repeat
                if (FAJnlSetup."Insurance Jnl. Template Name" = InsuranceJnlBatch."Journal Template Name") and
                   (FAJnlSetup."Insurance Jnl. Batch Name" = InsuranceJnlBatch.Name)
                then begin
                    FAJnlSetup."Insurance Jnl. Batch Name" := IncStr(FAJnlSetup."Insurance Jnl. Batch Name");
                    FAJnlSetup.Modify();
                end;
            until FAJnlSetup.Next() = 0;
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeSetGenJnlTrailCodes(var GenJnlLine: Record "Gen. Journal Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeSetFAJnlTrailCodes(var FAJnlLine: Record "FA Journal Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnFAJnlNameOnBeforeFAJnlTemplateGet(var DepreciationBook: Record "Depreciation Book"; var FAJournalLine: Record "FA Journal Line"; NextLineNo: Integer; var TemplateName: Code[10]; var BatchName: Code[10])
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnGenJnlNameOnBeforeGenJnlTemplateGet(var DepreciationBook: Record "Depreciation Book"; var GenJournalLine: Record "Gen. Journal Line"; NextLineNo: Integer; var TemplateName: Code[10]; var BatchName: Code[10])
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeGetFAJnlDocumentNo(var FAJournalLine: Record "FA Journal Line"; var IsHandled: Boolean)
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterIncGenJnlBatchName(var GenJournalBatch: Record "Gen. Journal Batch")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterIncFAJnlBatchName(var FAJournalBatch: Record "FA Journal Batch")
    begin
    end;

    [IntegrationEvent(false, false)]
    local procedure OnBeforeGetGenJnlDocumentNo(var GenJournalLine: Record "Gen. Journal Line"; var IsHandled: Boolean)
    begin
    end;
}