Codeunit 5601 FA Insert G/L Account
- App
- Base Application
- Namespace
- Microsoft.FixedAssets.Ledger
- Versions
- 17-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/FixedAssets/FixedAsset/FAInsertGLAccount.Codeunit.al988 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.Ledger;
using Microsoft.Finance.Dimension;
using Microsoft.Finance.GeneralLedger.Account;
using Microsoft.Finance.GeneralLedger.Journal;
using Microsoft.FixedAssets.Depreciation;
using Microsoft.FixedAssets.FixedAsset;
using Microsoft.FixedAssets.Journal;
using Microsoft.FixedAssets.Maintenance;
using Microsoft.Foundation.AuditCodes;
codeunit 5601 "FA Insert G/L Account"
{
TableNo = "FA Ledger Entry";
trigger OnRun()
var
DisposalEntry: Boolean;
IsHandled: Boolean;
begin
Clear(FAGLPostBuf);
DisposalEntry :=
(Rec."FA Posting Category" = Rec."FA Posting Category"::" ") and
(Rec."FA Posting Type" = Rec."FA Posting Type"::"Proceeds on Disposal");
if not BookValueEntry then
BookValueEntry :=
(Rec."FA Posting Category" = Rec."FA Posting Category"::Disposal) and
(Rec."FA Posting Type" = Rec."FA Posting Type"::"Book Value on Disposal");
IsHandled := false;
OnBeforeFAInsertGLAccount(
Rec, TempFAGLPostBuf, FAGLPostBuf, DisposalEntry, BookValueEntry, NextEntryNo, GLEntryNo, OrgGenJnlLine,
NetDisp, NumberOfEntries, DisposalEntryNo, DisposalAmount, GainLossAmount, FAPostingGr2, IsHandled);
if IsHandled then
exit;
if not DisposalEntry then
FAGLPostBuf."Account No." := FAGetGLAccNo.GetAccNo(Rec);
FAGLPostBuf.Amount := Rec.Amount;
FAGLPostBuf.Correction := Rec.Correction;
FAGLPostBuf."Global Dimension 1 Code" := Rec."Global Dimension 1 Code";
FAGLPostBuf."Global Dimension 2 Code" := Rec."Global Dimension 2 Code";
FAGLPostBuf."Dimension Set ID" := Rec."Dimension Set ID";
FAGLPostBuf."FA Entry No." := Rec."Entry No.";
OnAfterCopyFAGLPostBufFromFALederEntry(FAGLPostBuf, Rec);
if Rec."Entry No." > 0 then
FAGLPostBuf."FA Entry Type" := FAGLPostBuf."FA Entry Type"::"Fixed Asset";
FAGLPostBuf."Automatic Entry" := Rec."Automatic Entry";
GLEntryNo := Rec."G/L Entry No.";
InsertBufferEntry();
Rec."G/L Entry No." := TempFAGLPostBuf."Entry No.";
if DisposalEntry then
CalcDisposalAmount(Rec);
OnAfterRun(Rec, TempFAGLPostBuf, NumberOfEntries, OrgGenJnlLine, NetDisp,
FAGLPostBuf, DisposalEntry, BookValueEntry, NextEntryNo, GLEntryNo,
DisposalEntryNo, DisposalAmount, GainLossAmount, FAPostingGr2
);
end;
var
TempFAGLPostBuf: Record "FA G/L Posting Buffer" temporary;
FAGLPostBuf: Record "FA G/L Posting Buffer";
FAAlloc: Record "FA Allocation";
FAPostingGr: Record "FA Posting Group";
FAPostingGr2: Record "FA Posting Group";
FADeprBook: Record "FA Depreciation Book";
FAGetGLAccNo: Codeunit "FA Get G/L Account No.";
DepreciationCalc: Codeunit "Depreciation Calculation";
NextEntryNo: Integer;
GLEntryNo: Integer;
TotalAllocAmount: Decimal;
NewAmount: Decimal;
TotalPercent: Decimal;
NumberOfEntries: Integer;
NextLineNo: Integer;
NoOfEmptyLines: Integer;
NoOfEmptyLines2: Integer;
OrgGenJnlLine: Boolean;
DisposalEntryNo: Integer;
GainLossAmount: Decimal;
DisposalAmount: Decimal;
BookValueEntry: Boolean;
NetDisp: Boolean;
#pragma warning disable AA0074
Text000: Label 'must not be more than 100';
Text001: Label 'There is not enough space to insert the balance accounts.';
#pragma warning restore AA0074
TemporaryRecordExpectedErr: Label 'Use a temporary record as a parameter for GetBalAccBuffer.';
procedure InsertMaintenanceAccNo(var MaintenanceLedgEntry: Record "Maintenance Ledger Entry")
begin
Clear(FAGLPostBuf);
FAGLPostBuf."Account No." := FAGetGLAccNo.GetMaintenanceAccNo(MaintenanceLedgEntry);
FAGLPostBuf.Amount := MaintenanceLedgEntry.Amount;
FAGLPostBuf.Correction := MaintenanceLedgEntry.Correction;
FAGLPostBuf."Global Dimension 1 Code" := MaintenanceLedgEntry."Global Dimension 1 Code";
FAGLPostBuf."Global Dimension 2 Code" := MaintenanceLedgEntry."Global Dimension 2 Code";
FAGLPostBuf."Dimension Set ID" := MaintenanceLedgEntry."Dimension Set ID";
FAGLPostBuf."FA Entry No." := MaintenanceLedgEntry."Entry No.";
FAGLPostBuf."FA Entry Type" := FAGLPostBuf."FA Entry Type"::Maintenance;
GLEntryNo := MaintenanceLedgEntry."G/L Entry No.";
OnInsertMaintenanceAccNoOnBeforeInsertBufferEntry(FAGLPostBuf, MaintenanceLedgEntry);
InsertBufferEntry();
MaintenanceLedgEntry."G/L Entry No." := TempFAGLPostBuf."Entry No.";
OnAfterInsertMaintenanceAccNo(MaintenanceLedgEntry, FAGLPostBuf);
end;
procedure InsertBufferBalAcc(FAPostingType: Enum "FA Posting Group Account Type"; AllocAmount: Decimal; DeprBookCode: Code[10]; PostingGrCode: Code[20]; GlobalDim1Code: Code[20]; GlobalDim2Code: Code[20]; DimSetID: Integer; AutomaticEntry: Boolean; Correction: Boolean)
var
GLAccNo: Code[20];
DimensionSetIDArr: array[10] of Integer;
IsHandled: Boolean;
begin
NumberOfEntries := 0;
TotalAllocAmount := 0;
NewAmount := 0;
TotalPercent := 0;
FAPostingGr.Reset();
FAPostingGr.GetPostingGroup(PostingGrCode, DeprBookCode);
OnInsertBufferBalAccOnAfterGetFAPostingGroup(FAPostingGr);
GLAccNo := GetGLAccNoFromFAPostingGroup(FAPostingGr, FAPostingType);
DimensionSetIDArr[1] := DimSetID;
OnBeforeFillAllocationBuffer(
TempFAGLPostBuf, NextEntryNo, GLEntryNo, NumberOfEntries, OrgGenJnlLine, NetDisp, GLAccNo,
FAPostingType.AsInteger(), AllocAmount, DeprBookCode, PostingGrCode, GlobalDim1Code, GlobalDim2Code,
DimSetID, AutomaticEntry, Correction, IsHandled);
if IsHandled then
exit;
FAAlloc.Reset();
FAAlloc.SetRange(Code, PostingGrCode);
FAAlloc.SetRange("Allocation Type", FAPostingType);
OnInsertBufferBalAccOnAfterFAAllocSetFilters(FAAlloc);
if FAAlloc.Find('-') then
repeat
if (FAAlloc."Account No." = '') and (FAAlloc."Allocation %" > 0) then
FAAlloc.TestField("Account No.");
TotalPercent := TotalPercent + FAAlloc."Allocation %";
NewAmount :=
DepreciationCalc.CalcRounding(DeprBookCode, AllocAmount * TotalPercent / 100) - TotalAllocAmount;
TotalAllocAmount := TotalAllocAmount + NewAmount;
if Abs(TotalAllocAmount) > Abs(AllocAmount) then
NewAmount := AllocAmount - (TotalAllocAmount - NewAmount);
Clear(FAGLPostBuf);
FAGLPostBuf."Account No." := FAAlloc."Account No.";
SetCombinedDimensionSetID(DimensionSetIDArr);
FAGLPostBuf.Amount := NewAmount;
FAGLPostBuf."Automatic Entry" := AutomaticEntry;
FAGLPostBuf.Correction := Correction;
FAGLPostBuf."FA Posting Group" := FAAlloc.Code;
FAGLPostBuf."FA Allocation Type" := FAAlloc."Allocation Type";
FAGLPostBuf."FA Allocation Line No." := FAAlloc."Line No.";
OnInsertBufferBalAccOnAfterAssignFromFAAllocAcc(FAAlloc, FAGLPostBuf);
if NewAmount <> 0 then begin
InsertBufferEntry();
OnInsertBufferBalAccOnAfterInsertBufferEntryFromFAAllocAcc(FAAlloc, TempFAGLPostBuf, FAPostingType, DeprBookCode, PostingGrCode, NewAmount, AutomaticEntry, Correction, NumberOfEntries, OrgGenJnlLine, NetDisp);
end;
until FAAlloc.Next() = 0;
if Abs(TotalAllocAmount) < Abs(AllocAmount) then begin
NewAmount := AllocAmount - TotalAllocAmount;
Clear(FAGLPostBuf);
FAGLPostBuf."Account No." := GLAccNo;
FAGLPostBuf.Amount := NewAmount;
FAGLPostBuf."Global Dimension 1 Code" := GlobalDim1Code;
FAGLPostBuf."Global Dimension 2 Code" := GlobalDim2Code;
SetDefaultDimID(GLAccNo, DimSetID);
FAGLPostBuf."Automatic Entry" := AutomaticEntry;
FAGLPostBuf.Correction := Correction;
OnInsertBufferBalAccOnAfterAssignFromFAPostingGrAcc(FAAlloc, FAGLPostBuf, FAPostingType, AllocAmount);
if NewAmount <> 0 then begin
InsertBufferEntry();
OnInsertBufferBalAccOnAfterInsertBufferEntryFromFAPostingGrAcc(FAAlloc, TempFAGLPostBuf, FAPostingType, DeprBookCode, PostingGrCode, AllocAmount, TotalAllocAmount, GLAccNo, GlobalDim1Code, GlobalDim2Code, DimSetID, AutomaticEntry, Correction, NumberOfEntries, OrgGenJnlLine, NetDisp);
end;
end;
OnAfterInsertBufferBalAcc(FAGLPostBuf, TempFAGLPostBuf, GLEntryNo, NextEntryNo, NumberOfEntries, OrgGenJnlLine, NetDisp, FAPostingType);
end;
local procedure SetCombinedDimensionSetID(var DimensionSetIDArr: array[10] of Integer)
var
DimMgt: Codeunit DimensionManagement;
begin
DimensionSetIDArr[2] := FAAlloc."Dimension Set ID";
FAGLPostBuf."Dimension Set ID" :=
DimMgt.GetCombinedDimensionSetID(
DimensionSetIDArr, FAGLPostBuf."Global Dimension 1 Code", FAGLPostBuf."Global Dimension 2 Code");
OnAfterSetCombinedDimensionSetID(FAGLPostBuf, FAAlloc, DimensionSetIDArr);
end;
local procedure SetDefaultDimID(GLAccNo: Code[20]; DimSetID: Integer)
var
SourceCodeSetup: Record "Source Code Setup";
DimMgt: Codeunit DimensionManagement;
DefaultDimSource: List of [Dictionary of [Integer, Code[20]]];
begin
SourceCodeSetup.Get();
DimMgt.AddDimSource(DefaultDimSource, Database::"G/L Account", GLAccNo);
FAGLPostBuf."Dimension Set ID" :=
DimMgt.GetDefaultDimID(
DefaultDimSource, SourceCodeSetup."Fixed Asset G/L Journal", FAGLPostBuf."Global Dimension 1 Code",
FAGLPostBuf."Global Dimension 2 Code", DimSetID, Database::"Fixed Asset");
OnAfterSetDefaultDimID(FAGLPostBuf, GLAccNo, DimSetID);
end;
procedure InsertBalAcc(var FALedgEntry: Record "FA Ledger Entry")
begin
OnBeforeInsertBalAcc(FALedgEntry);
// Called from codeunit 5632
InsertBufferBalAcc(
GetPostingType(FALedgEntry), -FALedgEntry.Amount, FALedgEntry."Depreciation Book Code",
FALedgEntry."FA Posting Group", FALedgEntry."Global Dimension 1 Code", FALedgEntry."Global Dimension 2 Code", FALedgEntry."Dimension Set ID", FALedgEntry."Automatic Entry", FALedgEntry.Correction);
OnAfterInsertBalAcc(FALedgEntry);
end;
procedure GetPostingType(var FALedgEntry: Record "FA Ledger Entry"): Enum "FA Posting Group Account Type"
var
FAPostingGroupAccountType: Enum "FA Posting Group Account Type";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeGetPostingType(FALedgEntry, FAPostingGroupAccountType, IsHandled);
if IsHandled then
exit(FAPostingGroupAccountType);
case FALedgEntry."FA Posting Type" of
FALedgEntry."FA Posting Type"::"Gain/Loss":
begin
if FALedgEntry."Result on Disposal" = FALedgEntry."Result on Disposal"::Gain then
exit("FA Posting Group Account Type"::Gain);
exit("FA Posting Group Account Type"::Loss);
end;
FALedgEntry."FA Posting Type"::"Book Value on Disposal":
begin
if FALedgEntry."Result on Disposal" = FALedgEntry."Result on Disposal"::Gain then
exit("FA Posting Group Account Type"::"Book Value Gain");
exit("FA Posting Group Account Type"::"Book Value Loss");
end;
FALedgEntry."FA Posting Type"::"Bonus Depreciation":
exit("FA Posting Group Account Type"::Depreciation);
else
exit("FA Posting Group Account Type".FromInteger(FALedgEntry.ConvertPostingType()));
end;
end;
local procedure GetBalAccLocal(var GenJnlLine: Record "Gen. Journal Line"): Integer
var
TempGenJnlLine: Record "Gen. Journal Line" temporary;
NonBlankFAPostingType: Option;
SkipInsert: Boolean;
begin
OnBeforeGetBalAccLocal(GenJnlLine);
TempFAGLPostBuf.DeleteAll();
TempGenJnlLine.Init();
GenJnlLine.Reset();
GenJnlLine.Find();
GenJnlLine.TestField("Bal. Account No.", '');
CheckAccountType(GenJnlLine);
GenJnlLine.TestField("Account No.");
GenJnlLine.TestField("Depreciation Book Code");
GenJnlLine.TestField("Posting Group");
GenJnlLine.TestField("FA Posting Type");
TempGenJnlLine.Description := GenJnlLine.Description;
TempGenJnlLine."FA Add.-Currency Factor" := GenJnlLine."FA Add.-Currency Factor";
SkipInsert := false;
OnGetBalAccAfterSaveGenJnlLineFields(TempGenJnlLine, GenJnlLine, SkipInsert);
if not SkipInsert then begin
NonBlankFAPostingType := GenJnlLine."FA Posting Type".AsInteger() - 1;
InsertBufferBalAcc(
GetPostingType(GenJnlLine, NonBlankFAPostingType), -GenJnlLine.Amount, GenJnlLine."Depreciation Book Code",
GenJnlLine."Posting Group", GenJnlLine."Shortcut Dimension 1 Code", GenJnlLine."Shortcut Dimension 2 Code", GenJnlLine."Dimension Set ID", false, false);
end;
CalculateNoOfEmptyLines(GenJnlLine, NumberOfEntries);
GenJnlLine."Account Type" := GenJnlLine."Account Type"::"G/L Account";
GenJnlLine."Depreciation Book Code" := '';
GenJnlLine."Posting Group" := '';
GenJnlLine.Validate("FA Posting Type", GenJnlLine."FA Posting Type"::" ");
if TempFAGLPostBuf.FindFirst() then
repeat
GenJnlLine."Line No." := 0;
GenJnlLine.Validate("Account No.", TempFAGLPostBuf."Account No.");
GenJnlLine.Validate(Amount, TempFAGLPostBuf.Amount);
GenJnlLine.Validate("Depreciation Book Code", '');
GenJnlLine."Shortcut Dimension 1 Code" := TempFAGLPostBuf."Global Dimension 1 Code";
GenJnlLine."Shortcut Dimension 2 Code" := TempFAGLPostBuf."Global Dimension 2 Code";
GenJnlLine."Dimension Set ID" := TempFAGLPostBuf."Dimension Set ID";
GenJnlLine.Description := TempGenJnlLine.Description;
GenJnlLine."FA Add.-Currency Factor" := TempGenJnlLine."FA Add.-Currency Factor";
OnGetBalAccAfterRestoreGenJnlLineFields(GenJnlLine, TempGenJnlLine, TempFAGLPostBuf);
InsertGenJnlLine(GenJnlLine);
OnGetBalAccLocalOnAfterInsertGenJnlLine(GenJnlLine, TempFAGLPostBuf);
until TempFAGLPostBuf.Next() = 0;
TempFAGLPostBuf.DeleteAll();
exit(GenJnlLine."Line No.");
end;
local procedure GetPostingType(var GenJournalLine: Record "Gen. Journal Line"; NonBlankFAPostingType: Option): Enum "FA Posting Group Account Type"
begin
case GenJournalLine."FA Posting Type" of
GenJournalLine."FA Posting Type"::"Bonus Depreciation":
exit("FA Posting Group Account Type"::Depreciation);
else
exit("FA Posting Group Account Type".FromInteger(NonBlankFAPostingType));
end;
end;
local procedure CheckAccountType(var GenJnlLine: Record "Gen. Journal Line")
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCheckAccountType(GenJnlLine, IsHandled);
if IsHandled then
exit;
GenJnlLine.TestField("Account Type", Enum::"Gen. Journal Account Type"::"Fixed Asset");
end;
procedure GetBalAccBuffer(var GenJnlLine: Record "Gen. Journal Line"): Integer
begin
if not GenJnlLine.IsTemporary() then
Error(TemporaryRecordExpectedErr);
exit(GetBalAccLocal(GenJnlLine));
end;
procedure GetBalAcc(GenJnlLine: Record "Gen. Journal Line"): Integer
begin
exit(GetBalAccLocal(GenJnlLine));
end;
procedure GetBalAcc(var GenJnlLine: Record "Gen. Journal Line"; var NextLineNo2: Integer)
begin
NoOfEmptyLines2 := 1000;
GetBalAcc(GenJnlLine);
NextLineNo2 := NextLineNo;
end;
procedure GetBalAccWithBalAccountInfo(GenJnlLine: Record "Gen. Journal Line"; BalAccountType: Option; BalAccountNo: Code[20])
var
LineNo: Integer;
begin
LineNo := GetBalAcc(GenJnlLine);
GenJnlLine.Get(GenJnlLine."Journal Template Name", GenJnlLine."Journal Batch Name", LineNo);
GenJnlLine.Validate("Account Type", BalAccountType);
GenJnlLine.Validate("Account No.", BalAccountNo);
GenJnlLine.Modify(true);
end;
local procedure GetGLAccNoFromFAPostingGroup(FAPostingGr: Record "FA Posting Group"; FAPostingType: Enum "FA Posting Group Account Type") GLAccNo: Code[20]
var
FieldErrorText: Text[50];
IsHandled: Boolean;
begin
GLAccNo := '';
IsHandled := false;
OnBeforeGetGLAccNoFromFAPostingGroup(FAPostingGr, FAPostingType, GLAccNo, IsHandled);
if IsHandled then
exit(GlAccNo);
FieldErrorText := Text000;
case FAPostingType of
FAPostingType::"Acquisition Cost":
begin
GLAccNo := FAPostingGr.GetAcquisitionCostBalanceAccount();
FAPostingGr.CalcFields("Allocated Acquisition Cost %");
if FAPostingGr."Allocated Acquisition Cost %" > 100 then
FAPostingGr.FieldError("Allocated Acquisition Cost %", FieldErrorText);
end;
FAPostingType::Depreciation:
begin
GLAccNo := FAPostingGr.GetDepreciationExpenseAccount();
FAPostingGr.CalcFields("Allocated Depreciation %");
if FAPostingGr."Allocated Depreciation %" > 100 then
FAPostingGr.FieldError("Allocated Depreciation %", FieldErrorText);
end;
FAPostingType::"Write-Down":
begin
GLAccNo := FAPostingGr.GetWriteDownExpenseAccount();
FAPostingGr.CalcFields("Allocated Write-Down %");
if FAPostingGr."Allocated Write-Down %" > 100 then
FAPostingGr.FieldError("Allocated Write-Down %", FieldErrorText);
end;
FAPostingType::Appreciation:
begin
GLAccNo := FAPostingGr.GetAppreciationBalanceAccount();
FAPostingGr.CalcFields("Allocated Appreciation %");
if FAPostingGr."Allocated Appreciation %" > 100 then
FAPostingGr.FieldError("Allocated Appreciation %", FieldErrorText);
end;
FAPostingType::"Custom 1":
begin
GLAccNo := FAPostingGr.GetCustom1ExpenseAccount();
FAPostingGr.CalcFields("Allocated Custom 1 %");
if FAPostingGr."Allocated Custom 1 %" > 100 then
FAPostingGr.FieldError("Allocated Custom 1 %", FieldErrorText);
end;
FAPostingType::"Custom 2":
begin
GLAccNo := FAPostingGr.GetCustom2ExpenseAccount();
FAPostingGr.CalcFields("Allocated Custom 2 %");
if FAPostingGr."Allocated Custom 2 %" > 100 then
FAPostingGr.FieldError("Allocated Custom 2 %", FieldErrorText);
end;
FAPostingType::"Proceeds on Disposal":
begin
GLAccNo := FAPostingGr.GetSalesBalanceAccount();
FAPostingGr.CalcFields("Allocated Sales Price %");
if FAPostingGr."Allocated Sales Price %" > 100 then
FAPostingGr.FieldError("Allocated Sales Price %", FieldErrorText);
end;
FAPostingType::Maintenance:
begin
GLAccNo := FAPostingGr.GetMaintenanceBalanceAccount();
FAPostingGr.CalcFields("Allocated Maintenance %");
if FAPostingGr."Allocated Maintenance %" > 100 then
FAPostingGr.FieldError("Allocated Maintenance %", FieldErrorText);
end;
FAPostingType::Gain:
begin
GLAccNo := FAPostingGr.GetGainsAccountOnDisposal();
FAPostingGr.CalcFields("Allocated Gain %");
if FAPostingGr."Allocated Gain %" > 100 then
FAPostingGr.FieldError("Allocated Gain %", FieldErrorText);
end;
FAPostingType::Loss:
begin
GLAccNo := FAPostingGr.GetLossesAccountOnDisposal();
FAPostingGr.CalcFields("Allocated Loss %");
if FAPostingGr."Allocated Loss %" > 100 then
FAPostingGr.FieldError("Allocated Loss %", FieldErrorText);
end;
FAPostingType::"Book Value Gain":
begin
GLAccNo := FAPostingGr.GetBookValueAccountOnDisposalGain();
FAPostingGr.CalcFields("Allocated Book Value % (Gain)");
if FAPostingGr."Allocated Book Value % (Gain)" > 100 then
FAPostingGr.FieldError("Allocated Book Value % (Gain)", FieldErrorText);
end;
FAPostingType::"Book Value Loss":
begin
GLAccNo := FAPostingGr.GetBookValueAccountOnDisposalLoss();
FAPostingGr.CalcFields("Allocated Book Value % (Loss)");
if FAPostingGr."Allocated Book Value % (Loss)" > 100 then
FAPostingGr.FieldError("Allocated Book Value % (Loss)", FieldErrorText);
end;
end;
OnAfterGetGLAccNoFromFAPostingGroup(FAPostingGr, FAPostingType, GLAccNo);
end;
local procedure CalculateNoOfEmptyLines(var GenJnlLine: Record "Gen. Journal Line"; NumberOfEntries: Integer)
var
GenJnlLine2: Record "Gen. Journal Line";
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeCalculateNoOfEmptyLines(GenJnlLine, TempFAGLPostBuf, NextLineNo, NoOfEmptyLines, NoOfEmptyLines2, NumberOfEntries, IsHandled);
if IsHandled then
exit;
GenJnlLine2."Journal Template Name" := GenJnlLine."Journal Template Name";
GenJnlLine2."Journal Batch Name" := GenJnlLine."Journal Batch Name";
GenJnlLine2."Line No." := GenJnlLine."Line No.";
GenJnlLine2.SetRange("Journal Template Name", GenJnlLine."Journal Template Name");
GenJnlLine2.SetRange("Journal Batch Name", GenJnlLine."Journal Batch Name");
NextLineNo := GenJnlLine."Line No.";
if NoOfEmptyLines2 > 0 then
NoOfEmptyLines := NoOfEmptyLines2
else begin
if GenJnlLine2.Next() = 0 then
NoOfEmptyLines := 1000
else
NoOfEmptyLines := (GenJnlLine2."Line No." - NextLineNo) div (NumberOfEntries + 1);
if NoOfEmptyLines < 1 then
Error(Text001);
end;
end;
local procedure InsertGenJnlLine(var GenJnlLine: Record "Gen. Journal Line")
var
FAJnlSetup: Record "FA Journal Setup";
begin
NextLineNo := NextLineNo + NoOfEmptyLines;
GenJnlLine."Line No." := NextLineNo;
FAJnlSetup.SetGenJnlTrailCodes(GenJnlLine);
GenJnlLine.Insert(true);
end;
local procedure InsertBufferEntry()
begin
if TempFAGLPostBuf.IsEmpty() then
NextEntryNo := GLEntryNo
else
NextEntryNo := TempFAGLPostBuf.GetLastEntryNo() + 1;
TempFAGLPostBuf := FAGLPostBuf;
TempFAGLPostBuf."Entry No." := NextEntryNo;
TempFAGLPostBuf."Original General Journal Line" := OrgGenJnlLine;
TempFAGLPostBuf."Net Disposal" := NetDisp;
OnInsertBufferEntryOnBeforeBufferInsert(TempFAGLPostBuf, FAGLPostBuf);
TempFAGLPostBuf.Insert();
NumberOfEntries := NumberOfEntries + 1;
end;
procedure FindFirstGLAcc(var FAGLPostBuf: Record "FA G/L Posting Buffer"): Boolean
var
ReturnValue: Boolean;
begin
OnBeforeFindFirstGLAcc(TempFAGLPostBuf);
ReturnValue := TempFAGLPostBuf.Find('-');
FAGLPostBuf := TempFAGLPostBuf;
exit(ReturnValue);
end;
procedure GetNextGLAcc(var FAGLPostBuf: Record "FA G/L Posting Buffer"): Integer
var
ReturnValue: Integer;
begin
ReturnValue := TempFAGLPostBuf.Next();
FAGLPostBuf := TempFAGLPostBuf;
exit(ReturnValue);
end;
procedure DeleteAllGLAcc()
begin
TempFAGLPostBuf.DeleteAll();
DisposalEntryNo := 0;
BookValueEntry := false;
end;
procedure SetOrgGenJnlLine(OrgGenJnlLine2: Boolean)
begin
OrgGenJnlLine := OrgGenJnlLine2;
end;
local procedure CalcDisposalAmount(FALedgEntry: Record "FA Ledger Entry")
begin
DisposalEntryNo := TempFAGLPostBuf."Entry No.";
FADeprBook.Get(FALedgEntry."FA No.", FALedgEntry."Depreciation Book Code");
FADeprBook.CalcFields("Proceeds on Disposal", "Gain/Loss");
OnCalcDisposalAmountOnAfterCalcFields(FADeprBook);
DisposalAmount := FADeprBook."Proceeds on Disposal";
GainLossAmount := FADeprBook."Gain/Loss";
FAPostingGr2.Get(FALedgEntry."FA Posting Group");
OnAfterCalcDisposalAmount(FAPostingGr2);
end;
procedure CorrectEntries()
begin
if DisposalEntryNo = 0 then
exit;
CorrectDisposalEntry();
if not BookValueEntry then
CorrectBookValueEntry();
end;
local procedure CorrectDisposalEntry()
var
LastDisposal, IsHandled : Boolean;
GLAmount: Decimal;
begin
TempFAGLPostBuf.Get(DisposalEntryNo);
FADeprBook.CalcFields("Gain/Loss");
OnCorrectDisposalEntryOnAfterCalcGainLoss(FADeprBook);
LastDisposal := CalcLastDisposal(FADeprBook);
if LastDisposal then
GLAmount := GainLossAmount
else
GLAmount := FADeprBook."Gain/Loss";
IsHandled := false;
OnCorrectDisposalEntryOnBeforeSetGainLossAccount(FADeprBook, FAPostingGr2, TempFAGLPostBuf, GLAmount, IsHandled);
if not IsHandled then
if GLAmount <= 0 then
TempFAGLPostBuf."Account No." := FAPostingGr2.GetSalesAccountOnDisposalGain()
else
TempFAGLPostBuf."Account No." := FAPostingGr2.GetSalesAccountOnDisposalLoss();
OnBeforeTempFAGLPostBufModify(FAPostingGr2, TempFAGLPostBuf, GLAmount);
TempFAGLPostBuf.Modify();
FAGLPostBuf := TempFAGLPostBuf;
if LastDisposal then
exit;
if IdenticalSign(FADeprBook."Gain/Loss", GainLossAmount, DisposalAmount) then
exit;
if FAPostingGr2.GetSalesAccountOnDisposalGain() = FAPostingGr2.GetSalesAccountOnDisposalLoss() then
exit;
IsHandled := false;
OnCorrectDisposalEntryOnAfterCheckIdenticalAccountGainLoss(FADeprBook, FAPostingGr2, IsHandled);
if IsHandled then
exit;
FAGLPostBuf."FA Entry No." := 0;
FAGLPostBuf."FA Entry Type" := FAGLPostBuf."FA Entry Type"::" ";
FAGLPostBuf."Automatic Entry" := true;
OrgGenJnlLine := false;
if FADeprBook."Gain/Loss" <= 0 then begin
IsHandled := false;
OnCorrectDisposalEntryNonPositiveGainLossOnBeforeSetAccountGain(FADeprBook, FAPostingGr2, FAGLPostBuf, IsHandled);
if not IsHandled then
FAGLPostBuf."Account No." := FAPostingGr2.GetSalesAccountOnDisposalGain();
FAGLPostBuf.Amount := DisposalAmount;
InsertBufferEntry();
IsHandled := false;
OnCorrectDisposalEntryNonPositiveGainLossOnBeforeSetAccountLoss(FADeprBook, FAPostingGr2, FAGLPostBuf, IsHandled);
if not IsHandled then
FAGLPostBuf."Account No." := FAPostingGr2.GetSalesAccountOnDisposalLoss();
FAGLPostBuf.Amount := -DisposalAmount;
FAGLPostBuf.Correction := not FAGLPostBuf.Correction;
InsertBufferEntry();
end else begin
IsHandled := false;
OnCorrectDisposalEntryPositiveGainLossOnBeforeSetAccountLoss(FADeprBook, FAPostingGr2, FAGLPostBuf, IsHandled);
if not IsHandled then
FAGLPostBuf."Account No." := FAPostingGr2.GetSalesAccountOnDisposalLoss();
FAGLPostBuf.Amount := DisposalAmount;
InsertBufferEntry();
IsHandled := false;
OnCorrectDisposalEntryPositiveGainLossOnBeforeSetAccountGain(FADeprBook, FAPostingGr2, FAGLPostBuf, IsHandled);
if not IsHandled then
FAGLPostBuf."Account No." := FAPostingGr2.GetSalesAccountOnDisposalGain();
FAGLPostBuf.Amount := -DisposalAmount;
FAGLPostBuf.Correction := not FAGLPostBuf.Correction;
InsertBufferEntry();
end;
end;
local procedure CorrectBookValueEntry()
var
FALedgEntry: Record "FA Ledger Entry";
FAGLPostBuf: Record "FA G/L Posting Buffer";
DepreciationCalc: Codeunit "Depreciation Calculation";
BookValueAmount: Decimal;
IsHandled: Boolean;
begin
DepreciationCalc.SetFAFilter(
FALedgEntry, FADeprBook."FA No.", FADeprBook."Depreciation Book Code", true);
FALedgEntry.SetRange("FA Posting Category", FALedgEntry."FA Posting Category"::Disposal);
FALedgEntry.SetRange("FA Posting Type", FALedgEntry."FA Posting Type"::"Book Value on Disposal");
OnCorrectBookValueEntryOnAfterSetFilterFALedgEntry(FALedgEntry);
FALedgEntry.CalcSums(Amount);
BookValueAmount := FALedgEntry.Amount;
TempFAGLPostBuf.Get(DisposalEntryNo);
FAGLPostBuf := TempFAGLPostBuf;
if IdenticalSign(FADeprBook."Gain/Loss", GainLossAmount, BookValueAmount) then
exit;
IsHandled := false;
OnCorrectBookValueEntryOnAfterCheckIdenticalGainLossAmtSign(FADeprBook, FAPostingGr2, IsHandled);
if IsHandled then
exit;
if FAPostingGr2.GetBookValueAccountOnDisposalGain() = FAPostingGr2.GetBookValueAccountOnDisposalLoss() then
exit;
OrgGenJnlLine := false;
OnCorrectBookValueEntryOnBeforeInsertBufferBalAcc(FAGLPostBuf);
if FADeprBook."Gain/Loss" <= 0 then begin
InsertBufferBalAcc(
"FA Posting Group Account Type"::"Book Value Gain",
BookValueAmount,
FADeprBook."Depreciation Book Code",
FAPostingGr2.Code,
FAGLPostBuf."Global Dimension 1 Code",
FAGLPostBuf."Global Dimension 2 Code",
FAGLPostBuf."Dimension Set ID",
true, FAGLPostBuf.Correction);
InsertBufferBalAcc(
"FA Posting Group Account Type"::"Book Value Loss",
-BookValueAmount,
FADeprBook."Depreciation Book Code",
FAPostingGr2.Code,
FAGLPostBuf."Global Dimension 1 Code",
FAGLPostBuf."Global Dimension 2 Code",
FAGLPostBuf."Dimension Set ID",
true, not FAGLPostBuf.Correction);
end else begin
InsertBufferBalAcc(
"FA Posting Group Account Type"::"Book Value Loss",
BookValueAmount,
FADeprBook."Depreciation Book Code",
FAPostingGr2.Code,
FAGLPostBuf."Global Dimension 1 Code",
FAGLPostBuf."Global Dimension 2 Code",
FAGLPostBuf."Dimension Set ID",
true, FAGLPostBuf.Correction);
InsertBufferBalAcc(
"FA Posting Group Account Type"::"Book Value Gain",
-BookValueAmount,
FADeprBook."Depreciation Book Code",
FAPostingGr2.Code,
FAGLPostBuf."Global Dimension 1 Code",
FAGLPostBuf."Global Dimension 2 Code",
FAGLPostBuf."Dimension Set ID",
true, not FAGLPostBuf.Correction);
end;
OnAfterCorrectBookValueEntry(FAGLPostBuf);
end;
local procedure IdenticalSign(A: Decimal; B: Decimal; C: Decimal): Boolean
begin
exit(((A <= 0) = (B <= 0)) or (C = 0));
end;
procedure SetNetDisposal(NetDisp2: Boolean)
begin
NetDisp := NetDisp2;
end;
local procedure CalcLastDisposal(FADeprBook: Record "FA Depreciation Book"): Boolean
var
FALedgEntry: Record "FA Ledger Entry";
DepreciationCalc: Codeunit "Depreciation Calculation";
begin
DepreciationCalc.SetFAFilter(
FALedgEntry, FADeprBook."FA No.", FADeprBook."Depreciation Book Code", true);
FALedgEntry.SetRange("FA Posting Type", FALedgEntry."FA Posting Type"::"Proceeds on Disposal");
OnCalcLastDisposalOnAfterSetFilter(FALedgEntry);
exit(not FALedgEntry.FindFirst());
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCopyFAGLPostBufFromFALederEntry(var FAGLPostingBuffer: Record "FA G/L Posting Buffer"; FALedgerEntry: Record "FA Ledger Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCorrectBookValueEntry(var FAGLPostingBuffer: Record "FA G/L Posting Buffer")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterCalcDisposalAmount(var FAPostingGroup: Record "FA Posting Group")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetGLAccNoFromFAPostingGroup(FAPostingGroup: Record "FA Posting Group"; FAPostingType: Enum "FA Posting Group Account Type"; var GLAccNo: Code[20])
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterInsertBalAcc(var FALedgerEntry: Record "FA Ledger Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterRun(var FALedgerEntry: Record "FA Ledger Entry"; var TempFAGLPostingBuffer: Record "FA G/L Posting Buffer" temporary; var NumberOfEntries: Integer; var OrgGenJnlLine: Boolean; var NetDisp: Boolean;
var FAGLPostingBuffer: Record "FA G/L Posting Buffer"; var DisposalEntry: Boolean; var BookValueEntry: Boolean; var NextEntryNo: Integer;
var GLEntryNo: Integer; var DisposalEntryNo: Integer;
var DisposalAmount: Decimal; var GainLossAmount: Decimal; var FAPostingGroup2: Record "FA Posting Group")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterSetCombinedDimensionSetID(var FAGLPostBuf: Record "FA G/L Posting Buffer"; FAAlloc: Record "FA Allocation"; DimensionSetIDArr: array[10] of Integer)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterSetDefaultDimID(var FAGLPostBuf: Record "FA G/L Posting Buffer"; GLAccNo: Code[20]; DimSetID: Integer)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCheckAccountType(var GenJnlLine: Record "Gen. Journal Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeFillAllocationBuffer(var TempFAGLPostingBuffer: Record "FA G/L Posting Buffer" temporary; var NextEntryNo: Integer; var GLEntryNo: Integer; var NumberOfEntries: Integer; var OrgGenJnlLine: Boolean; var NetDisp: Boolean; GLAccNo: Code[20]; FAPostingType: Option Acquisition,Depr,WriteDown,Appr,Custom1,Custom2,Disposal,Maintenance,Gain,Loss,"Book Value Gain","Book Value Loss"; AllocAmount: Decimal; DeprBookCode: Code[10]; PostingGrCode: Code[20]; GlobalDim1Code: Code[20]; GlobalDim2Code: Code[20]; DimSetID: Integer; AutomaticEntry: Boolean; Correction: Boolean; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeGetBalAccLocal(var GenJournalLine: Record "Gen. Journal Line")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeInsertBalAcc(var FALedgerEntry: Record "FA Ledger Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertMaintenanceAccNoOnBeforeInsertBufferEntry(var FAGLPostBuf: Record "FA G/L Posting Buffer"; var MaintenanceLedgEntry: Record "Maintenance Ledger Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertBufferBalAccOnAfterFAAllocSetFilters(var FAAllocation: Record "FA Allocation")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeTempFAGLPostBufModify(var FAPostingGroup: Record "FA Posting Group"; var TempFAGLPostingBuffer: Record "FA G/L Posting Buffer" temporary; GLAmount: Decimal)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectBookValueEntryOnBeforeInsertBufferBalAcc(var FAGLPostBuf: Record "FA G/L Posting Buffer")
begin
end;
[IntegrationEvent(true, false)]
local procedure OnGetBalAccAfterSaveGenJnlLineFields(var ToGenJnlLine: Record "Gen. Journal Line"; FromGenJnlLine: Record "Gen. Journal Line"; var SkipInsert: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnGetBalAccAfterRestoreGenJnlLineFields(var ToGenJnlLine: Record "Gen. Journal Line"; FromGenJnlLine: Record "Gen. Journal Line"; var TempFAGLPostBuf: Record "FA G/L Posting Buffer")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnGetBalAccLocalOnAfterInsertGenJnlLine(var GenJnlLine: Record "Gen. Journal Line"; var TempFAGLPostBuf: Record "FA G/L Posting Buffer")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertBufferBalAccOnAfterAssignFromFAAllocAcc(FAAllocation: Record "FA Allocation"; var FAGLPostBuf: Record "FA G/L Posting Buffer")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertBufferBalAccOnAfterAssignFromFAPostingGrAcc(FAAllocation: Record "FA Allocation"; var FAGLPostBuf: Record "FA G/L Posting Buffer"; FAPostingType: Enum "FA Posting Group Account Type"; AllocAmount: Decimal)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertBufferBalAccOnAfterGetFAPostingGroup(var FAPostingGr: Record "FA Posting Group")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertBufferEntryOnBeforeBufferInsert(var TempFAGLPostBuf: Record "FA G/L Posting Buffer" temporary; FAGLPostBuf: Record "FA G/L Posting Buffer")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeFAInsertGLAccount(var FALedgerEntry: Record "FA Ledger Entry"; var TempFAGLPostBuf: Record "FA G/L Posting Buffer" temporary;
var FAGLPostBuf: Record "FA G/L Posting Buffer"; var DisposalEntry: Boolean; var BookValueEntry: Boolean; var NextEntryNo: Integer;
var GLEntryNo: Integer; var OrgGenJnlLine: Boolean; var NetDisp: Boolean; var NumberOfEntries: Integer; var DisposalEntryNo: Integer;
var DisposalAmount: Decimal; var GainLossAmount: Decimal; var FAPostingGr2: Record "FA Posting Group"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterInsertMaintenanceAccNo(var MaintenanceLedgEntry: Record "Maintenance Ledger Entry"; var FAGLPostBuf: Record "FA G/L Posting Buffer")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeCalculateNoOfEmptyLines(var GenJnlLine: Record "Gen. Journal Line"; var TempFAGLPostingBuffer: Record "FA G/L Posting Buffer" temporary; var NextLineNo: Integer; var NoOfEmptyLines: Integer; var NoOfEmptyLines2: Integer; var NumberOfEntries: Integer; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertBufferBalAccOnAfterInsertBufferEntryFromFAAllocAcc(FAAllocation: Record "FA Allocation"; var TempFAGLPostBuf: Record "FA G/L Posting Buffer" temporary; FAPostingType: Enum "FA Posting Group Account Type"; DeprBookCode: Code[10];
PostingGrCode: Code[20];
NewAmount: Decimal;
AutomaticEntry: Boolean;
Correction: Boolean; var NumberOfEntries: Integer; OrgGenJnlLine: Boolean; NetDisp: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnInsertBufferBalAccOnAfterInsertBufferEntryFromFAPostingGrAcc(FAAllocation: Record "FA Allocation"; var TempFAGLPostBuf: Record "FA G/L Posting Buffer" temporary; FAPostingType: Enum "FA Posting Group Account Type"; DeprBookCode: Code[10];
PostingGrCode: Code[20];
AllocAmount: Decimal;
TotalAllocAmount: Decimal;
GLAccNo: Code[20];
GlobalDim1Code: Code[20];
GlobalDim2Code: Code[20];
DimSetID: Integer;
AutomaticEntry: Boolean;
Correction: Boolean; var NumberOfEntries: Integer; OrgGenJnlLine: Boolean; NetDisp: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeFindFirstGLAcc(var TempFAGLPostingBuffer: Record "FA G/L Posting Buffer" temporary)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeGetGLAccNoFromFAPostingGroup(FAPostingGroup: Record "FA Posting Group"; FAPostingGroupAccountType: Enum "FA Posting Group Account Type"; var GLAccNo: Code[20]; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeGetPostingType(FALedgerEntry: Record "FA Ledger Entry"; var FAPostingGroupAccountType: Enum "FA Posting Group Account Type"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnAfterInsertBufferBalAcc(FAGLPostingBuffer: Record "FA G/L Posting Buffer"; var TempFAGLPostingBuffer: Record "FA G/L Posting Buffer" temporary;
GLEntryNo: Integer; var NextEntryNo: Integer; var NumberOfEntries: Integer;
OrgGenJnlLine: Boolean; NetDisp: Boolean; FAPostingType: Enum "FA Posting Group Account Type")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectDisposalEntryNonPositiveGainLossOnBeforeSetAccountGain(FADepreciationBook: Record "FA Depreciation Book"; FAPostingGroup: Record "FA Posting Group";
var FAGLPostingBuffer: Record "FA G/L Posting Buffer"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectDisposalEntryPositiveGainLossOnBeforeSetAccountGain(FADepreciationBook: Record "FA Depreciation Book"; FAPostingGroup: Record "FA Posting Group";
var FAGLPostingBuffer: Record "FA G/L Posting Buffer"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectDisposalEntryOnAfterCheckIdenticalAccountGainLoss(FADepreciationBook: Record "FA Depreciation Book"; FAPostingGroup: Record "FA Posting Group"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectDisposalEntryNonPositiveGainLossOnBeforeSetAccountLoss(FADepreciationBook: Record "FA Depreciation Book"; FAPostingGroup: Record "FA Posting Group";
var FAGLPostingBuffer: Record "FA G/L Posting Buffer"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectDisposalEntryPositiveGainLossOnBeforeSetAccountLoss(FADepreciationBook: Record "FA Depreciation Book"; FAPostingGroup: Record "FA Posting Group";
var FAGLPostingBuffer: Record "FA G/L Posting Buffer"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectDisposalEntryOnBeforeSetGainLossAccount(FADepreciationBook: Record "FA Depreciation Book"; FAPostingGroup: Record "FA Posting Group";
var TempFAGLPostingBuffer: Record "FA G/L Posting Buffer"; GLAmount: Decimal; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectBookValueEntryOnAfterSetFilterFALedgEntry(var FALedgerEntry: Record "FA Ledger Entry");
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCalcLastDisposalOnAfterSetFilter(var FALedgerEntry: Record "FA Ledger Entry")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectBookValueEntryOnAfterCheckIdenticalGainLossAmtSign(FADepreciationBook: Record "FA Depreciation Book"; FAPostingGroup: Record "FA Posting Group"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCalcDisposalAmountOnAfterCalcFields(var FADepreciationBook: Record "FA Depreciation Book")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnCorrectDisposalEntryOnAfterCalcGainLoss(var FADepreciationBook: Record "FA Depreciation Book")
begin
end;
}