Codeunit 699 "Exch. Rate Adjmt. Process"
Base Application · Microsoft.Finance.Currency
Across versions
- BC23present
- BC2419 procedures added, 14 events added
- BC255 events added
- BC266 events added, 3 events changed
- BC27unchanged
- BC289 procedures added, 5 procedures removed
- BC29-30unchanged
Neighbourhood 9 connected objects and pages
Base Application · Microsoft.Finance.Currency · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| TableNo | Exch. Rate Adjmt. Parameters |
| Permissions | TableData “Cust. Ledger Entry” = rimd, TableData “Vendor Ledger Entry” = rimd, TableData “Employee Ledger Entry” = rimd, TableData “Exch. Rate Adjmt. Reg.” = rimd, TableData “Exch. Rate Adjmt. Ledg. Entry” = rimd, TableData Currency = rim, TableData “VAT Entry” = rimd, TableData “Detailed Cust. Ledg… |
Events published
OnAfterInitDtldCustLedgerEntry(var DetailedCustLedgEntry: Record "Detailed Cust. Ledg. Entry")(integration)OnAfterInitDtldVendLedgerEntry(var DetailedVendorLedgEntry: Record "Detailed Vendor Ledg. Entry")(integration)OnAfterInitDtldEmplLedgerEntry(var DetailedEmployeeLedgEntry: Record "Detailed Employee Ledger Entry")+ BC24 (integration)OnAfterInitVariablesForSetLedgEntry(var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters"; GenJournalLine: Record "Gen. Journal Line")(integration)OnAfterSetDtldCustLedgEntryFilters(var DtldCustLedgEntry: Record "Detailed Cust. Ledg. Entry"; CustLedgEntry: Record "Cust. Ledger Entry")(integration)OnAfterSetDtldVendLedgEntryFilters(var DtldVendLedgEntry: Record "Detailed Vendor Ledg. Entry"; VendLedgEntry: Record "Vendor Ledger Entry")(integration)OnAfterSetDtldEmplLedgEntryFilters(var DtldEmplLedgEntry: Record "Detailed Employee Ledger Entry"; EmplLedgEntry: Record "Employee Ledger Entry")+ BC24 (integration)OnAfterShouldAdjustCurrency(Currency: Record Currency; var ShouldAdjust: Boolean)(integration)OnAfterShouldAdjustCustLedgEntry(CustLedgEntry: Record "Cust. Ledger Entry"; var ShouldAdjust: Boolean)(integration)OnAfterShouldAdjustVendLedgEntry(VendLedgEntry: Record "Vendor Ledger Entry"; var ShouldAdjust: Boolean)(integration)OnAfterShouldAdjustEmplLedgEntry(EmplLedgEntry: Record "Employee Ledger Entry"; var ShouldAdjust: Boolean)+ BC24 (integration)OnAfterSetVATEntryFilters(var VATEntry: Record "VAT Entry")+ BC24 (integration)OnAdjustCustomerLedgerEntryOnBeforeInitDtldCustLedgEntry(var Customer: Record Customer; CusLedgerEntry: Record "Cust. Ledger Entry")(integration)OnAdjustCustomerLedgerEntryOnAfterPrepareAdjust(var CustLedgerEntry: Record "Cust. Ledger Entry"; CurrAdjAmount: Decimal; OldAdjAmount: Decimal)(integration)OnAfterAdjustCustomerLedgerEntryOnAfterCalcAdjmtAmount(CustLedgerEntry: Record "Cust. Ledger Entry"; var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters"; AdjmtAmount: Decimal; Application: Boolean; var ShouldExit: Boolean)Δ BC26 (integration)OnAdjustVendorLedgerEntryOnBeforeInitDtldVendLedgEntry(var Vendor: Record Vendor; VendLedgerEntry: Record "Vendor Ledger Entry")(integration)OnAdjustVendorLedgerEntryOnAfterPrepareAdjust(var VendorLedgerEntry: Record "Vendor Ledger Entry"; CurrAdjAmount: Decimal; OldAdjAmount: Decimal)(integration)OnAfterAdjustVendorLedgerEntryOnAfterCalcAdjmtAmount(VendLedgerEntry: Record "Vendor Ledger Entry"; var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters"; AdjmtAmount: Decimal; Application: Boolean; var ShouldExit: Boolean)Δ BC26 (integration)OnAdjustEmployeeLedgerEntryOnBeforeInitDtldEmplLedgEntry(var Employe: Record Employee; EmplLedgerEntry: Record "Employee Ledger Entry")+ BC24 (integration)OnAdjustEmployeeLedgerEntryOnAfterPrepareAdjust(var EmployeeLedgerEntry: Record "Employee Ledger Entry"; CurrAdjAmount: Decimal; OldAdjAmount: Decimal)+ BC24 (integration)OnAfterAdjustEmployeeLedgerEntryOnAfterCalcAdjmtAmount(EmplLedgerEntry: Record "Employee Ledger Entry"; var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters"; AdjmtAmount: Decimal; Application: Boolean; var ShouldExit: Boolean)+ BC24 Δ BC26 (integration)OnAfterProcessCustomerAdjustment(var TempCustLedgerEntry: Record "Cust. Ledger Entry" temporary)(integration)OnAfterProcessVendorAdjustment(var TempVendorLedgerEntry: Record "Vendor Ledger Entry" temporary)(integration)OnAfterProcessEmployeeAdjustment(var TempEmployeeLedgerEntry: Record "Employee Ledger Entry" temporary)+ BC24 (integration)OnAfterRunAdjustment(var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters" temporary)(integration)OnBeforeGetBankAccountNo(BankAccount: Record "Bank Account"; var AccountNo: Code[20]; var IsHandled: Boolean)Δ BC24 (integration)OnBeforeGetCustAccountNo(CustLedgerEntry: Record "Cust. Ledger Entry"; var AccountNo: Code[20]; var IsHandled: Boolean)Δ BC24 (integration)OnBeforeGetLocalCustAccountNo(CustLedgerEntry: Record "Cust. Ledger Entry"; var AccountNo: Code[20]; var IsHandled: Boolean)(integration)OnBeforeGetVendAccountNo(VendLedgerEntry: Record "Vendor Ledger Entry"; var AccountNo: Code[20]; var IsHandled: Boolean)Δ BC24 (integration)OnBeforeGetLocalVendAccountNo(VendLedgerEntry: Record "Vendor Ledger Entry"; var AccountNo: Code[20]; var IsHandled: Boolean)(integration)OnBeforeGetEmplAccountNo(EmplLedgerEntry: Record "Employee Ledger Entry"; var AccountNo: Code[20]; var IsHandled: Boolean)+ BC24 (integration)OnBeforeGetRealizedGainsAccount(Currency: Record Currency; var AccountNo: Code[20]; var IsHandled: Boolean)(integration)OnBeforeGetRealizedLossesAccount(Currency: Record Currency; var AccountNo: Code[20]; var IsHandled: Boolean)(integration)OnBeforeGetUnrealizedGainsAccount(Currency: Record Currency; var AccountNo: Code[20]; var IsHandled: Boolean)(integration)OnBeforeGetUnrealizedLossesAccount(Currency: Record Currency; var AccountNo: Code[20]; var IsHandled: Boolean)(integration)OnPostGenJnlLineOnAfterGenJnlPostLineRun(var GenJnlLine: Record "Gen. Journal Line"; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line")(integration)OnProcessBankAccountOnAfterCalcFields(var BankAccount: Record "Bank Account"; Currency: Record Currency)(integration)OnPostGenJnlLineOnBeforeGenJnlPostLineRun(var GenJnlLine: Record "Gen. Journal Line"; var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters")(integration)OnBeforeAdjustGLAccountsAndVATEntries(var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters"; var Currency: Record Currency; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line")(integration)OnSetPostingDimensionsElseCase(var GenJournalLine: Record "Gen. Journal Line"; var DimensionSetEntry: Record "Dimension Set Entry"; var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters" temporary)+ BC26 − BC26 (integration)OnAdjustCurrencyOnAfterSetBankAccountFilters(var BankAccount: Record "Bank Account")(integration)OnAdjustCurrencyOnAfterSetBankAccountFiltersInLoop(var BankAccount: Record "Bank Account")(integration)OnPrepareTempCustLedgEntryOnAfterSetCustLedgerEntryFilters(var CustLedgerEntry: Record "Cust. Ledger Entry")(integration)OnPrepareTempCustLedgEntryOnAfterSetDtldCustLedgerEntryFilters(var DetailedCustLedgEntry: Record "Detailed Cust. Ledg. Entry")(integration)OnPrepareTempVendLedgEntryOnAfterSetVendLedgerEntryFilters(var VendorLedgerEntry: Record "Vendor Ledger Entry")(integration)OnPrepareTempVendLedgEntryOnAfterSetDtldVendLedgerEntryFilters(var DetailedVendorLedgEntry: Record "Detailed Vendor Ledg. Entry")(integration)OnPrepareTempEmplLedgEntryOnAfterSetEmplLedgerEntryFilters(var EmployeeLedgerEntry: Record "Employee Ledger Entry")+ BC24 (integration)OnPrepareTempEmplLedgEntryOnAfterSetDtldEmplLedgerEntryFilters(var DetailedEmployeeLedgerEntry: Record "Detailed Employee Ledger Entry")+ BC24 (integration)OnSetPostingDimensionsOnCaseSourceEntryDimensions(var GenJournalLine: Record "Gen. Journal Line"; var DimensionSetEntry: Record "Dimension Set Entry")+ BC24 (integration)OnBeforePrepareTempCustLedgEntry(var CustLedgerEntry: Record "Cust. Ledger Entry"; var TempCustLedgerEntry: Record "Cust. Ledger Entry" temporary; Customer: Record Customer; var IsHandled: Boolean)+ BC24 (integration)OnBeforePrepareTempVendLedgEntry(var VendorLedgerEntry: Record "Vendor Ledger Entry"; var TempVendorLedgerEntry: Record "Vendor Ledger Entry" temporary; Vendor: Record Vendor; var IsHandled: Boolean)+ BC24 (integration)OnAdjustExchRateCustOnAfterCalcFields(var CustomerLedgerEntry: Record "Cust. Ledger Entry")+ BC25 (integration)OnAdjustCustomerLedgerEntryOnAfterCalcFields(var CustomerLedgerEntry: Record "Cust. Ledger Entry")+ BC25 (integration)OnAdjustExchRateVendOnAfterCalcFields(var VendorLedgerEntry: Record "Vendor Ledger Entry")+ BC25 (integration)OnProcessGLAccountAdjustmentOnBeforePostGLAccAdjmt(var GLAccount: Record "G/L Account")+ BC25 (integration)OnAdjustVendorLedgerEntryOnAfterCalcFields(var VendorLedgerEntry: Record "Vendor Ledger Entry")+ BC25 (integration)OnHandlePostAdjmtOnBeforePostAdjmt(var TempExchRateAdjmtBuffer2: Record "Exch. Rate Adjmt. Buffer" temporary; var Currency: Record Currency; var DimensionSetEntry: Record "Dimension Set Entry"; var AdjustAccType: Enum "Exch. Rate Adjmt. Account Type")+ BC26 (integration)OnAfterExchRateAdjmtBufferUpdate(var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters"; var TempExchRateAdjmtBuffer: Record "Exch. Rate Adjmt. Buffer" temporary)+ BC26 (integration)OnBeforePostAdjmt(var ExchRateAdjmtBuffer: Record "Exch. Rate Adjmt. Buffer"; var TempDimSetEntry: Record "Dimension Set Entry" temporary)+ BC26 (integration)OnPostAdjmtOnBeforePostGenJnlLine(var GenJnlLine: Record "Gen. Journal Line"; var TempDimSetEntry: Record "Dimension Set Entry" temporary)+ BC26 (integration)OnSetAdditionalReportingCurrencyOnBeforeCheckTaxJurisdiction(var TaxJurisdiction: Record "Tax Jurisdiction"; var IsHandled: Boolean)+ BC26 (integration)OnSummarizeExchRateAdjmtBufferOnAfterExchRateAdjmtBuffer2SetFilters(var TempExchRateAdjmtBuffer2: Record "Exch. Rate Adjmt. Buffer" temporary; var TempExchRateAdjmtBuffer: Record "Exch. Rate Adjmt. Buffer" temporary; var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters")+ BC28 (integration)
Event subscriptions
- OnRunPreview subscribes to Codeunit “Gen. Jnl.-Post Preview” OnRunPreview
Procedures
GetGlobalDimVal(GlobalDimCode: Code[20]; var DimSetEntry: Record "Dimension Set Entry"): Code[20]Δ BC26Preview(var ExchRateAdjmtParameters: Record "Exch. Rate Adjmt. Parameters" temporary)AdjustExchRateCust(GenJournalLine: Record "Gen. Journal Line"; var TempCustLedgerEntry: Record "Cust. Ledger Entry" temporary)AdjustExchRateVend(GenJournalLine: Record "Gen. Journal Line"; var TempVendLedgerEntry: Record "Vendor Ledger Entry" temporary)AdjustExchRateEmpl(GenJournalLine: Record "Gen. Journal Line"; var TempEmplLedgerEntry: Record "Employee Ledger Entry" temporary)+ BC24
Plus 105 local procedures.
Triggers
OnRun
Relations
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 408 “DimensionManagement” (8 calls:
GetDimSetEntry → CopyDimBufToDimSetEntry,GetJnlLineDefDim → AddDimSource,GetJnlLineDefDim → GetDefaultDimID, …) - Codeunit 12 “Gen. Jnl.-Post Line” (4 calls:
OnRun → IsGLEntryInconsistent,OnRun → ShowInconsistentEntries,PostGenJnlLine → (object), …) - Codeunit 411 “Dimension Buffer Management” (3 calls:
GetDimCombID → FindDimensions,GetDimCombID → InsertDimensions,GetDimSetEntry → GetDimensions) - Codeunit 19 “Gen. Jnl.-Post Preview” (2 calls:
OnRun → ThrowError,Preview → Preview) - Codeunit 410 “Update Analysis View” (1 call:
OnRun → UpdateAll) - Codeunit 9500 “Sequence No. Mgt.” (1 call:
OnRun → SetPreviewMode)
Called by
- Codeunit 599 “Exch. Rate Adjmt. Run Handler” (3 calls:
RunCustExchRateAdjustment → AdjustExchRateCust,RunEmplExchRateAdjustment → AdjustExchRateEmpl,RunVendExchRateAdjustment → AdjustExchRateVend) - Report 596 “Exch. Rate Adjustment” (2 calls:
RunAdjustmentProcess → (object),RunAdjustmentProcess → Preview)
Recent changes
- 2026-09-11 #11163 [29.x]Adjustment Amount is not accurate in the Exch. Rate Adjmt. Ledger Entries page if an Unrealized Gain gest registered and a second adjustment turns into a Loss. (releases/29.x, BC29, fix)
- 2026-09-07 #10808 [master] Adjustment Amount is not accurate in the Exch. Rate Adjmt. Ledger Entries page if an Unrealized Gain gest registered and a second adjustment turns into a Loss. (main, BC30, fix)
- 2026-07-15 #9254 [Master] Exchange Rate Adjustment filter not working (main, BC30, fix)
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: "Exch. Rate Adjmt. Process"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.