tableFinanceofficial - Microsoftderived - from the source, no model text

Table 4 "Currency"

Base Application · Microsoft.Finance.Currency

Across versions

  1. BC23present
  2. BC242 fields changed
  3. BC251 events added
  4. BC261 fields changed, 1 fields removed
  5. BC271 fields added, 1 procedures added
  6. BC287 fields changed, 1 procedures added
  7. BC2938 fields changed, 1 procedures added
  8. BC301 fields changed

Neighbourhood 198 connected objects and pages

Table 15 "G/L Account" (relates to, 10 links)G/L AccountTable 379 "Detailed Cust. Ledg. Entry" (relates to, 3 links)Table 380 "Detailed Vendor Ledg. Entry" (relates to, 3 links)Table 349 "Dimension Value" (relates to, 2 links)Dimension ValueTable 37 "Sales Line" (relates to, 2 links)Sales LineTable 39 "Purchase Line" (relates to, 2 links)Purchase LinePage 5 "Currencies" (pages and codeunits on it, 2 links)CurrenciesPage 20019 "APIV1 - Currencies" (pages and codeunits on it)Page 30019 "APIV2 - Currencies" (pages and codeunits on it)Page 486 "Cust. Stats. by Curr. Lines" (pages and codeunits on it)Page 487 "Vend. Stats. by Curr. Lines" (pages and codeunits on it)Page 495 "Currency Card" (pages and codeunits on it)Codeunit 347 "Amount Auto Format" (event subscribers, 3 links)Amount Auto FormatTable 5200 "Employee" (referenced by, 3 links)EmployeeTable 1208 "Direct Debit Collection Entry" (referenced by, 2 links)Direct Debit Collection EntryTable 1226 "Payment Export Data" (referenced by, 2 links)Payment Export DataTable 167 "Job" (referenced by, 2 links)Table 179 "Reversal Entry" (referenced by, 2 links)Reversal EntryTable 18 "Customer" (referenced by, 2 links)Table 181 "Posted Gen. Journal Line" (referenced by, 2 links)Posted Gen. Journal LineTable 21 "Cust. Ledger Entry" (referenced by, 2 links)Cust. Ledger EntryTable 210 "Job Journal Line" (referenced by, 2 links)Job Journal LineTable 23 "Vendor" (referenced by, 2 links)VendorTable 25 "Vendor Ledger Entry" (referenced by, 2 links)Table 330 "Currency Exchange Rate" (referenced by, 2 links)Table 37203 "Remit. Advice Buffer" (referenced by, 2 links)Table 382 "CV Ledger Entry Buffer" (referenced by, 2 links)Table 5135 "Job Archive" (referenced by, 2 links)Table 5222 "Employee Ledger Entry" (referenced by, 2 links)Table 81 "Gen. Journal Line" (referenced by, 2 links)Table 1001 "Job Task" (referenced by)Table 1003 "Job Planning Line" (referenced by)CREATE currencies (Learn pages)Currencies in Business Central (Learn pages)currency resource type (Learn pages)DELETE currencies (Learn pages)GET currencies (Learn pages)Set up additional currencies (Learn pages)Set up currencies (Learn pages)Set up invoice rounding (Learn pages)

Open in the neighbourhood explorer

One hop out, from the extracted relations and call graph. Up to 40 shown; the sections below list them all.

Base Application · Microsoft.Finance.Currency · BC23-30 · source at ea08af5e · facts from BC29

Learn documents this table through its pages: Page 5 “Currencies” (5 Learn pages), Page 30019 “APIV2 - Currencies” (5), Page 495 “Currency Card” (2).

Properties

Property Value
Caption Currency
DataClassification CustomerContent
Permissions tabledata “General Ledger Setup” = r

Fields

Explanation: the field’s ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

No. Name Type Explanation Notes
1 Code Δ BC29 Code[10] Specifies a currency code that you can select. The code must comply with ISO 4217. NotBlank
2 Last Date Modified Δ BC29 Date Specifies the last date on which any information in the Currency table was modified. not editable
3 Last Date Adjusted Δ BC29 Date Specifies when the exchange rates were last adjusted, that is, the last date on which the Adjust Exchange Rates batch job was run. not editable
4 ISO Code Δ BC29 Code[3] Specifies a three-letter currency code defined in ISO 4217.
5 ISO Numeric Code Δ BC29 Code[3] Specifies a three-digit code number defined in ISO 4217.
6 Unrealized Gains Acc. Δ BC29 Code[20] Specifies the general ledger account number to which unrealized exchange rate gains will be posted when the Adjust Exchange Rates batch job is run. TableRelation Table 15 “G/L Account” (G/L Account)
7 Realized Gains Acc. Δ BC29 Code[20] Specifies the general ledger account number to which realized exchange rate gains will be posted. TableRelation Table 15 “G/L Account” (G/L Account)
8 Unrealized Losses Acc. Δ BC29 Code[20] Specifies the general ledger account number to which unrealized exchange rate losses will be posted when the Adjust Exchange Rates batch job is run. TableRelation Table 15 “G/L Account” (G/L Account)
9 Realized Losses Acc. Δ BC29 Code[20] Specifies the general ledger account number to which realized exchange rate losses will be posted. TableRelation Table 15 “G/L Account” (G/L Account)
10 Invoice Rounding Precision Δ BC28 Δ BC29 Decimal Specifies the size of the interval to be used when rounding amounts in this currency. You can specify invoice rounding for each currency in the Currency table.
12 Invoice Rounding Type Δ BC29 Option Specifies whether an invoice amount will be rounded up or down. The program uses this information together with the interval for rounding that you have specified in the Invoice Rounding Precision field. OptionCaption: Nearest,Up,Down
13 Amount Rounding Precision Δ BC28 Δ BC29 Decimal Specifies the size of the interval to be used when rounding amounts in this currency.
14 Unit-Amount Rounding Precision Δ BC28 Δ BC29 Decimal Specifies the size of the interval to be used when rounding unit amounts (that is, item prices per unit) in this currency.
15 Description Δ BC29 Text[30] Specifies a text to describe the currency code.
17 Amount Decimal Places Δ BC29 Text[5] Specifies the number of decimal places the program will display for amounts in this currency. NotBlank
18 Unit-Amount Decimal Places Δ BC29 Text[5] Specifies the number of decimal places the program will display for amounts in this currency. NotBlank
19 Customer Filter Code[20] — TableRelation Table 18 “Customer”; FlowFilter
20 Vendor Filter Code[20] — TableRelation Table 23 “Vendor”; FlowFilter
21 Global Dimension 1 Filter Code[20] — TableRelation Table 349 “Dimension Value” (“Dimension Value”.Code where(“Global Dimension No.” = const(1))); FlowFilter
22 Global Dimension 2 Filter Code[20] — TableRelation Table 349 “Dimension Value” (“Dimension Value”.Code where(“Global Dimension No.” = const(2))); FlowFilter
23 Date Filter Date — FlowFilter
24 Cust. Ledg. Entries in Filter Boolean — FlowField: exist(“Cust. Ledger Entry” where(“Customer No.” = field(“Customer Filter”), “Currency Code” = field(Code))); not editable
25 Customer Balance Δ BC29 Decimal Specifies the payment amount that the customer owes for completed sales. FlowField: sum(“Detailed Cust. Ledg. Entry”.Amount where(“Customer No.” = field(“Customer Filter”), “Initial Entry Global Dim. 1” = field(“Global Dimension 1 Filter”), “Initial Entry Global Dim. 2” = field(“Global Dimension 2 Filter”), “Posting Date” = field(“Date Filter”), “Currency Code” = field(Code))); not editable
26 Customer Outstanding Orders Δ BC29 Decimal Specifies the number of orders for which payment has not been made. FlowField: sum(“Sales Line”.“Outstanding Amount” where(“Document Type” = const(Order), “Bill-to Customer No.” = field(“Customer Filter”), “Currency Code” = field(Code), “Shortcut Dimension 1 Code” = field(“Global Dimension 1 Filter”), “Shortcut Dimension 2 Code” = field(“Global Dimension 2 Filter”))); not editable
27 Customer Shipped Not Invoiced Δ BC29 Decimal Specifies the number of orders that are shipped but not invoiced. FlowField: sum(“Sales Line”.“Shipped Not Invoiced” where(“Document Type” = const(Order), “Bill-to Customer No.” = field(“Customer Filter”), “Currency Code” = field(Code), “Shortcut Dimension 1 Code” = field(“Global Dimension 1 Filter”), “Shortcut Dimension 2 Code” = field(“Global Dimension 2 Filter”))); not editable
28 Customer Balance Due Δ BC24 Δ BC29 Decimal Specifies the payment amount that the customer owes you for completed sales where the payment date is exceeded. FlowField: sum(“Detailed Cust. Ledg. Entry”.Amount where(“Customer No.” = field(“Customer Filter”), “Initial Entry Global Dim. 1” = field(“Global Dimension 1 Filter”), “Initial Entry Global Dim. 2” = field(“Global Dimension 2 Filter”), “Initial Entry Due Date” = field(“Date Filter”), “Posting Date” = field(upp…; not editable
29 Vendor Ledg. Entries in Filter Boolean — FlowField: exist(“Vendor Ledger Entry” where(“Vendor No.” = field(“Vendor Filter”), “Currency Code” = field(Code))); not editable
30 Vendor Balance Δ BC29 Decimal Specifies the payment amount that you owe the vendor for completed purchases. FlowField: - sum(“Detailed Vendor Ledg. Entry”.Amount where(“Vendor No.” = field(“Vendor Filter”), “Initial Entry Global Dim. 1” = field(“Global Dimension 1 Filter”), “Initial Entry Global Dim. 2” = field(“Global Dimension 2 Filter”), “Posting Date” = field(“Date Filter”), “Currency Code” = field(Code))); not editable
31 Vendor Outstanding Orders Δ BC29 Decimal Specifies the number of orders for which payment has not been made. FlowField: sum(“Purchase Line”.“Outstanding Amount” where(“Document Type” = const(Order), “Pay-to Vendor No.” = field(“Vendor Filter”), “Currency Code” = field(Code), “Shortcut Dimension 1 Code” = field(“Global Dimension 1 Filter”), “Shortcut Dimension 2 Code” = field(“Global Dimension 2 Filter”))); not editable
32 Vendor Amt. Rcd. Not Invoiced Δ BC29 Decimal Specifies the number of orders that are shipped but not invoiced. FlowField: sum(“Purchase Line”.“Amt. Rcd. Not Invoiced” where(“Document Type” = const(Order), “Pay-to Vendor No.” = field(“Vendor Filter”), “Currency Code” = field(Code), “Shortcut Dimension 1 Code” = field(“Global Dimension 1 Filter”), “Shortcut Dimension 2 Code” = field(“Global Dimension 2 Filter”))); not editable
33 Vendor Balance Due Δ BC24 Δ BC29 Decimal Specifies the payment amount that you owe the vendor for completed purchases where the payment date is exceeded. FlowField: - sum(“Detailed Vendor Ledg. Entry”.Amount where(“Vendor No.” = field(“Vendor Filter”), “Initial Entry Global Dim. 1” = field(“Global Dimension 1 Filter”), “Initial Entry Global Dim. 2” = field(“Global Dimension 2 Filter”), “Initial Entry Due Date” = field(“Date Filter”), “Posting Date” = field(uppe…; not editable
34 Customer Balance (LCY) Δ BC28 Decimal — FlowField: sum(“Detailed Cust. Ledg. Entry”.“Amount (LCY)” where(“Customer No.” = field(“Customer Filter”), “Initial Entry Global Dim. 1” = field(“Global Dimension 1 Filter”), “Initial Entry Global Dim. 2” = field(“Global Dimension 2 Filter”), “Posting Date” = field(“Date Filter”), “Currency Code” = field(Code…; not editable
35 Vendor Balance (LCY) Δ BC28 Decimal — FlowField: - sum(“Detailed Vendor Ledg. Entry”.“Amount (LCY)” where(“Vendor No.” = field(“Vendor Filter”), “Initial Entry Global Dim. 1” = field(“Global Dimension 1 Filter”), “Initial Entry Global Dim. 2” = field(“Global Dimension 2 Filter”), “Posting Date” = field(“Date Filter”), “Currency Code” = field(Code)…; not editable
40 Realized G/L Gains Account Δ BC29 Code[20] Specifies the general ledger account to post exchange rate gains to, for currency adjustments between LCY and the additional reporting currency. TableRelation Table 15 “G/L Account” (G/L Account)
41 Realized G/L Losses Account Δ BC29 Code[20] Specifies the general ledger account to post exchange rate gains to for currency adjustments between LCY and the additional reporting currency. TableRelation Table 15 “G/L Account” (G/L Account)
44 Appln. Rounding Precision Δ BC29 Decimal Specifies the size of the interval that will be allowed as a rounding difference when you apply entries in different currencies to one another.
45 EMU Currency Δ BC29 Boolean Specifies whether the currency is an EMU currency, for example DEM or EUR.
46 Currency Factor Δ BC28 Decimal — not editable
47 Residual Gains Account Δ BC29 Code[20] Specifies the general ledger account to post residual amount gains to, if you post in the general ledger application area in both LCY and an additional reporting currency. TableRelation Table 15 “G/L Account” (G/L Account)
48 Residual Losses Account Δ BC29 Code[20] Specifies the general ledger account to post residual amount losses to, if you post in the general ledger application area in both LCY and an additional reporting currency. TableRelation Table 15 “G/L Account” (G/L Account)
50 Conv. LCY Rndg. Debit Acc. Δ BC29 Code[20] Specifies conversion information that must also contain a debit account if you wish to insert correction lines for rounding differences in the general journals using the Insert Conv. LCY Rndg. Lines function. TableRelation Table 15 “G/L Account” (G/L Account)
51 Conv. LCY Rndg. Credit Acc. Δ BC29 Code[20] Specifies conversion information that must also contain a credit account if you wish to insert correction lines for rounding differences in the general journals using the Insert Conv. LCY Rndg. Lines function. TableRelation Table 15 “G/L Account” (G/L Account)
52 Max. VAT Difference Allowed Δ BC29 Decimal Specifies the maximum VAT correction amount allowed for the currency.
53 VAT Rounding Type Δ BC29 Option Specifies how the program will round VAT when calculated for this currency. OptionCaption: Nearest,Up,Down
54 Payment Tolerance % Δ BC28 Δ BC29 Decimal Specifies the percentage that the payment or refund is allowed to be, less than the amount on the invoice or credit memo. not editable
55 Max. Payment Tolerance Amount Δ BC29 Decimal Specifies the maximum allowed amount that the payment or refund can differ from the amount on the invoice or credit memo. not editable
56 Symbol Δ BC29 Text[10] Specifies the symbol for the currency, for example, $ for US dollars.
57 Last Modified Date Time DateTime — not editable
166 Currency Symbol Position + BC27 Δ BC30 Enum “Currency Symbol Position” Specifies the position of the currency symbol in relation to the amount. enum Enum 51 “Currency Symbol Position”; DataClassification SystemMetadata
720 Coupled to CRM Δ BC26 Boolean Coupled to Dataverse caption obsolete Removed 26.0; #if not CLEANSCHEMA26; not editable
721 Coupled to Dataverse Δ BC29 Boolean Specifies that the currency is coupled to a currency in Dataverse. FlowField: exist(“CRM Integration Record” where(“Integration ID” = field(SystemId), “Table ID” = const(Database::Currency))); not editable

Keys

  • Key1: Code (clustered)
  • Key2: SystemModifiedAt

Events published

  • OnAfterInitRoundingPrecision(var Currency: Record Currency; var xCurrency: Record Currency; var GeneralLedgerSetup: Record "General Ledger Setup") (integration): Integration event raised after initializing currency rounding precision settings. Allows customization of rounding precision initialization logic.
  • OnBeforeGetGainLossAccount(var Currency: Record Currency; DtldCVLedgEntryBuffer: Record "Detailed CV Ledg. Entry Buffer") (integration): Integration event raised before determining the gain/loss account for currency transactions. Allows customization of account determination logic.
  • OnBeforeResolveCurrencySymbol(var Currency: Record Currency; var CurrencyCode: Code[10]) (integration): Integration event raised before resolving a currency symbol. Allows customization of currency symbol resolution logic.
  • OnGetGainLossAccountOnOtherEntryType(var Currency: Record Currency; DtldCVLedgEntryBuffer: Record "Detailed CV Ledg. Entry Buffer"; var IsHandled: Boolean; var ReturnValue: Code[20]) + BC25 (integration): Integration event raised when determining gain/loss account for entry types not handled by default logic. Allows handling of custom entry types for currency gain/loss posting.

Trigger event subscribers

Procedures

  • InitRoundingPrecision(): Initializes currency rounding precision fields with values from General Ledger Setup. Sets default values for Amount Rounding Precision, Unit-Amount Rounding Precision, Invoice Rounding settings, VAT settings, and raises the OnAfterInitRoundingPrecision event.
  • GetExchangeRate(ConversionDate: Date): Decimal + BC29: Retrieves the most recent exchange rate for the actual currency, based on 1FCY. If no exchange rate is specified, it returns 1
  • VATRoundingDirection(): Text[1]: Returns the directional symbol for VAT rounding based on the VAT Rounding Type setting. Used in rounding calculations to determine rounding behavior.
  • InvoiceRoundingDirection(): Text[1]: Returns the directional symbol for invoice rounding based on the Invoice Rounding Type setting. Used in invoice rounding calculations to determine rounding behavior.
  • CheckAmountRoundingPrecision(): Validates that required rounding precision fields are properly set. Ensures both Unit-Amount Rounding Precision and Amount Rounding Precision have values.
  • GetGainLossAccount(DtldCVLedgEntryBuf: Record "Detailed CV Ledg. Entry Buffer"): Code[20]: Determines the appropriate G/L account for posting currency gain/loss based on entry type. Routes to specific account getter methods based on the type of gain/loss being processed. Raises OnBeforeGetGainLossAccount event for customization opportunities.
  • GetRealizedGainsAccount(): Code[20]: Returns the G/L account for posting realized currency gains. Validates that the account is specified before returning it.
  • GetRealizedLossesAccount(): Code[20]: Returns the G/L account for posting realized currency losses. Validates that the account is specified before returning it.
  • GetRealizedGLGainsAccount(): Code[20]: Returns the G/L account for posting realized currency gains on G/L transactions. Validates that the account is specified before returning it.
  • GetRealizedGLLossesAccount(): Code[20]: Returns the G/L account for posting realized currency losses on G/L transactions. Validates that the account is specified before returning it.
  • GetResidualGainsAccount(): Code[20]: Returns the G/L account for posting residual currency gains. Validates that the account is specified before returning it.
  • GetResidualLossesAccount(): Code[20]: Returns the G/L account for posting residual currency losses. Validates that the account is specified before returning it.
  • GetUnrealizedGainsAccount(): Code[20]: Returns the G/L account for posting unrealized currency gains. Validates that the account is specified before returning it.
  • GetUnrealizedLossesAccount(): Code[20]: Returns the G/L account for posting unrealized currency losses. Validates that the account is specified before returning it.
  • GetConvLCYRoundingDebitAccount(): Code[20]: Returns the G/L account for posting debit rounding differences during LCY conversion. Validates that the account is specified before returning it.
  • GetConvLCYRoundingCreditAccount(): Code[20]: Returns the G/L account for posting credit rounding differences during LCY conversion. Validates that the account is specified before returning it.
  • GetCurrencySymbol(): Text[10]: Gets the display symbol for this currency, falling back to the currency code if no symbol is defined.
  • ResolveCurrencySymbol(CurrencyCode: Code[10]): Text[10]: Resolves an appropriate display symbol for a given currency code. First checks if the currency record has a custom symbol, then falls back to built-in symbol mappings for common currencies. Raises OnBeforeResolveCurrencySymbol event for customization.
  • ResolveCurrencyDescription(CurrencyCode: Code[10]): Text: Resolves a descriptive name for a given currency code. First checks if the currency record has a custom description, then falls back to built-in description mappings for common currencies.
  • ResolveGLCurrencySymbol(CurrencyCode: Code[10]): Text[10]: Resolves the currency symbol for use in General Ledger contexts. If a currency code is provided, resolves its symbol. If empty, returns the LCY symbol from GL Setup.
  • Initialize(CurrencyCode: Code[10]): Initializes the currency record by loading it if a currency code is provided. If no currency code is provided, initializes rounding precision from GL Setup. This is an overload that calls the full Initialize method with CheckAmountRoundingPrecision set to false.
  • Initialize(CurrencyCode: Code[10]; CheckAmountRoundingPrecision: Boolean): Initializes the currency record by loading it if a currency code is provided. If no currency code is provided, initializes rounding precision from GL Setup. Optionally validates that Amount Rounding Precision is properly set.
  • SuggestSetupAccounts(): Suggests appropriate G/L accounts for currency posting based on existing currency setups. Analyzes other currency records to suggest commonly used accounts for gain/loss posting. Shows a message if no suggestions can be made.
  • CheckDuplicateCurrencySymbol(CurrencySymbol: Text[10]) + BC27

Plus 5 local procedures.

Triggers

OnDelete, OnInsert, OnModify, OnRename

Relations

Referenced by

188 fields in 170 objects relate to this table (TableRelation or CalcFormula).

Pages and codeunits on this table

Recent changes

Countries that replace it

ES, NO, RU

Deprecations

  • field Coupled to CRM: Removed 26.0 (#if not CLEANSCHEMA26), “Replaced by flow field Coupled to Dataverse”

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). 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: "table", object_name: "Currency"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.

Evidence 1 sources