Codeunit 5611 "Calculate Normal Depreciation"
Base Application · Microsoft.FixedAssets.Depreciation
Across versions
- BC23present
- BC243 events added, 3 events removed
- BC251 events added, 1 events removed
- BC261 events added
- BC27unchanged
- BC281 procedures added, 1 events added
- BC291 procedures added
- BC30unchanged
Neighbourhood 5 connected objects and pages
Base Application · Microsoft.FixedAssets.Depreciation · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| Permissions | TableData “FA Ledger Entry” = r, TableData “FA Posting Type Setup” = r |
Events published
OnBeforeCalculate(var DeprAmount: Decimal; var NumberOfDays4: Integer; FANo: Code[20]; DeprBookCode2: Code[10]; UntilDate2: Date; EntryAmounts2: array[4] of Decimal; DateFromProjection2: Date; DaysInPeriod2: Integer; var IsHandled: Boolean)(integration)OnAfterGetDeprBooks(var DepreciationBook: Record "Depreciation Book"; var FADepreciationBook: Record "FA Depreciation Book")(integration)OnCalculateOnBeforeTransferValue(FANo: Code[20]; var StorageDecimal: Dictionary of [Text, Decimal]; var StorageInterger: Dictionary of [Text, Integer]; var StorageDate: Dictionary of [Text, Date]; var StorageCode: Dictionary of [Text, Code[10]]; var EntryAmounts2: array[4] of Decimal; var EntryAmounts: array[4] of Decimal; var DeprMethod: Enum "FA Depr. Method Internal"; var Year365Days: Boolean; var IsHandled: Boolean)(integration)OnBeforeSkipRecord(FixedAsset: Record "Fixed Asset"; DeprBook: Record "Depreciation Book"; DisposalDate: date; AcquisitionDate: date; UntilDate: Date; FADeprMethod: Enum "FA Depreciation Method"; BookValue: Decimal; DeprBasis: Decimal; SalvageValue: Decimal; MinusBookValue: Decimal; var ReturnValue: Boolean; var IsHandled: Boolean)(integration)OnBeforeCalcTransferValueSetVariables(var FirstDate: date; var Year365Days: Boolean; var UseDeprStartingDate: Boolean; var NumberOfDays2: integer; var UseHalfYearConvention: Boolean)(integration)OnBeforeNumberofDayCalculateNumberofDays(FixedAsset: Record "Fixed Asset"; DeprBook: Record "Depreciation Book"; var NumberofDays: Integer; FirstDeprDate: date; var UntilDate: Date; Year365Days: Boolean; var IsHandled: Boolean; FADepreciationBook: Record "FA Depreciation Book")(integration)UpdateDaysInFiscalYear(FixedAsset: Record "Fixed Asset"; DeprBook: Record "Depreciation Book"; var NumberofDays: Integer; var DaysInFiscalYear: Integer; var IsHandled: Boolean)(integration)OnAfterBookValueRecalculateBookValue(FixedAsset: Record "Fixed Asset"; DeprBook: Record "Depreciation Book"; FAledgEntry2: Record "FA Ledger Entry"; var DeprBasis: Decimal; var BookValue: Decimal; var DeprEndingDate: Date; DisposalDate: Date; var FADepreciationBook: Record "FA Depreciation Book"; DateFromProjection: Date; var SalvageValue: Decimal)+ BC24 − BC24 (integration)OnAfterBookValueCheckAddedDeprApplicable(FADepBook: Record "FA Depreciation Book"; DeprBook: Record "Depreciation Book"; FALedgerEntry: Record "FA Ledger Entry"; UntilDate: Date; var DBPercent: Decimal; var SlPercent: Decimal)(integration)OnAfterDaysinFYRecalculateDaysInFiscalYear(FADepBook: Record "FA Depreciation Book"; DeprBook: Record "Depreciation Book"; UntilDate: Date; var DaysInFiscalYear: Integer; Year365Days: Boolean; var IsHandled: Boolean)(integration)OnAfterCalculateFinalAmount(DepreBook: Record "Depreciation Book"; var Amount: Decimal; var IsHandled: Boolean; FA: Record "Fixed Asset"; UntilDate: Date; BookValue: Decimal)+ BC25 − BC25 (integration)OnAfterSkipOnZeroValue(DepreBook: Record "Depreciation Book"; var SkipOnZero: Boolean; var IsHandled: Boolean)(integration)OnAfterCalcFinalDeprAmount(FANo: Code[20]; FADeprBook: Record "FA Depreciation Book"; DepreBook: Record "Depreciation Book"; Sign: Integer; BookValue: Decimal; var DeprAmount: Decimal; var IsHandled: Boolean; var NumberOfDays: Integer)(integration)OnAfterCalculateDeprAmount(FixedAsset: Record "Fixed Asset"; SkipOnZero: Boolean; DeprBookCode: Code[20]; var Amount: Decimal; BookValue: Decimal; SalvageValue: Decimal; EndingBookValue: Decimal; FinalRoundingAmount: Decimal)(integration)OnAfterCalcSL(FixedAsset: Record "Fixed Asset"; FADepreciationBook: Record "FA Depreciation Book"; UntilDate: Date; BookValue: Decimal; DeprBasis: Decimal; DeprYears: Decimal; NumberOfDays: Integer; DaysInFiscalYear: Integer; var ExitValue: Decimal; var IsHandled: Boolean; var RemainingLife: Decimal; var FirstDeprDate: Date)(integration)OnAfterCalcDB1Amount(DBPercent: Decimal; NumberOfDays: Integer; DaysInFiscalYear: Integer; BookValue: Decimal; SalvageValue: Decimal; MinusBookValue: Decimal; Sign: Integer; DeprInFiscalYear: Decimal; var Result: Decimal; FADepreciationBook: Record "FA Depreciation Book"; FirstDeprDate: Date)(integration)OnAfterTransferValues2(FixedAsset: Record "Fixed Asset"; FADepreciationBook: Record "FA Depreciation Book"; Year365Days: Boolean; var DeprYears: Decimal; var DeprMethod: Enum "FA Depr. Method Internal"; var DeprBasis: Decimal; var BookValue: Decimal)(integration)OnAfterProcessDaysInPeriod(var NumberofDays: Integer; var DaysInPeriod: Integer; var Factor: Decimal; FixedAsset: Record "Fixed Asset"; DeprBook: Record "Depreciation Book"; var FirstDeprDate: date; UntilDate: Date; Year365Days: Boolean)(integration)OnBeforeCalcHalfYearPercent(FADeprBook: Record "FA Depreciation Book"; NewYearDate: Date; Year365Days: Boolean; DaysInFiscalYear: Integer; DeprMethod: Enum "FA Depr. Method Internal"; SLPercent: Decimal; var HalfYearPercent: Decimal; var IsHandled: Boolean)(integration)OnCalculateDeprAmountOnAfterAssignAmountLastEntry(FADepreciationBook: Record "FA Depreciation Book"; UntilDate: Date; DateFromProjection: Date; BookValue: Decimal; UseHalfYearConvention: Boolean; DaysInFiscalYear: Integer; NumberOfDays: Integer)(integration)OnCalcSLAmountOnAfterCalcFromSLPercent(FixedAsset: Record "Fixed Asset"; FADepreciationBook: Record "FA Depreciation Book"; BookValue: Decimal; DeprBasis: Decimal; DaysInFiscalYear: Integer; NumberOfDays: Integer; SLPercent: Decimal; var Result: Decimal)(integration)OnCalcSLAmountOnAfterCalcResultForRemainingLifeExpired(FixedAsset: Record "Fixed Asset"; FADepreciationBook: Record "FA Depreciation Book"; BookValue: Decimal; var Result: Decimal)(integration)OnCalculateDeprAmountOnDeprMethodCaseLastEntry(FADepreciationBook: Record "FA Depreciation Book"; BookValue: Decimal; DeprBasis: Decimal; DeprYears: Decimal; DaysInFiscalYear: Integer; NumberOfDays: Integer; var Amount: Decimal; DateFromProjection: Date; UntilDate: Date; DeprMethod: Enum "FA Depr. Method Internal")+ BC24 − BC24 (integration)OnCalculateDeprAmountOnDeprMethodCaseLastDeprEntry(FADepreciationBook: Record "FA Depreciation Book"; BookValue: Decimal; DeprBasis: Decimal; DeprYears: Decimal; DaysInFiscalYear: Integer; NumberOfDays: Integer; var Amount: Decimal; DateFromProjection: Date; UntilDate: Date; DeprMethod: Enum "FA Depr. Method Internal")+ BC24 − BC24 (integration)OnCalcHalfYearConventionDeprOnAfterFirstCalcDeprAmount(FADeprBook: Record "FA Depreciation Book"; FixedAmount: Decimal; NumberOfDays: Integer; DaysInFiscalYear: Integer; HalfYearFactor: Decimal; UntilDate: Date; HalfYearPercent: Decimal; NewYearDate: Date; FirstDeprDate: Date; var DeprAmount: Decimal)(integration)OnTransferValuesOnAfterSetDeprMethod(var FADepreciationBook: Record "FA Depreciation Book"; UntilDate: Date)(integration)OnCalculateDeprAmountOnBeforeCalculateDeprAmount(FixedAsset: Record "Fixed Asset"; SkipOnZero: Boolean; DeprBookCode: Code[20]; var Amount: Decimal; BookValue: Decimal; SalvageValue2: Decimal; EndingBookValue: Decimal; FinalRoundingAmount: Decimal; var IsHandled: Boolean)(integration)OnCalculateOnBeforeAssignSkipOnZeroValue(FANo: Code[20]; FADepreciationBook: Record "FA Depreciation Book"; var Sign: Integer; var BookValue: Decimal; var DeprBasis: Decimal; var SalvageValue: Decimal; var MinusBookValue: Decimal; var SkipOnZero: Boolean; EndingBookValue: Decimal; var IsHandled: Boolean)(integration)OnAfterCalcDBSLAmount(var DBAmount: Decimal; SLAmount: Decimal; FADepreciationBook: Record "FA Depreciation Book"; DateFromProjection: Date)(integration)OnCalcSLAmountOnBeforeCheckFixedAmount(FixedAsset: Record "Fixed Asset"; FixedAmount: Decimal; NumberOfDays: Integer; DaysInFiscalYear: Integer; var IsHandled: Boolean; var Result: Decimal)(integration)OnBeforeSetHalfYearConventionMethod(FADeprBook: Record "FA Depreciation Book"; DeprMethod: Enum "FA Depr. Method Internal"; Year365Days: Boolean; FirstDeprDate: Date; NewYearDate: Date; var Result: Boolean; var IsHandled: Boolean; var NewYearDateOverride: Date)+ BC26 + BC28 − BC28 (integration)
Procedures
Calculate(var DeprAmount: Decimal; var NumberOfDays4: Integer; FANo: Code[20]; DeprBookCode2: Code[10]; UntilDate2: Date; EntryAmounts2: array[4] of Decimal; DateFromProjection2: Date; DaysInPeriod2: Integer)CalcDB1Amount(): Decimal
Plus 19 local procedures.
Triggers
OnRun
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 5616 “Depreciation Calculation” (23 calls:
CalcDB1Amount → DeprInFiscalYear,CalcHalfYearConventionDepr → DeprDays,CalcHalfYearConventionDepr → Yesterday, …) - Codeunit 5617 “FA Date Calculation” (1 call:
CalcDBSLAmount → GetFiscalYear) - Codeunit 5618 “Table Depr. Calculation” (1 call:
CalcUserDefinedAmount → GetTablePercent)
Called by
- Codeunit 5610 “Calculate Depreciation” (1 call:
Calculate → Calculate) - Codeunit 5615 “Budget Depreciation” (1 call:
Calculate → Calculate)
Recent changes
- 2026-08-19 #10337 Let subscribers override the half-year new year date in SetHalfYearConventionMethod (main, BC30, feature)
Countries that replace it
Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "Calculate Normal Depreciation"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.