An introduction about Multicurrency in Salesforce which provides advanced
multi-currency support for Opportunity Management, Forecasting, and Reporting.
2. Agenda
• Key Terms
• Implications of Enabling Multiple Currencies
• Additional Technical Impacts and Implications
• SFDC Advanced Currency Management
• Multi-currency and ACM Limitations
• Some More Examples and Scenarios
3. Key Terms
Corporate Currency - The corporate currency is the currency in which a
company’s corporate headquarters reports revenue. A salesforce.com
representative initially sets the corporate currency when activating the multi-currency
feature.
Personal Currency - A user’s personal currency is the default currency
displayed in the quotas, forecasts, and reports. The personal currency can be
accessed on a user’s Salesforce user record.
Record Currency - Every record has a Currency field that specifies the
currency type for amounts in the record. All currency amounts display in the
record’ s currency and are also converted to the personal currency of the record
owner, based on the conversion rates entered by your administrator. Amounts in
the user’ s personal currency are displayed in parentheses.
CurrencyIsoCode - The CurrencyIsoCode field contains the string
representation of the currency ISO code associated with currency values in the
object.
DefaultCurrencyIsoCode - The User object also has a DefaultCurrencyIsoCode
field, which is the default currency for a user.
-----------------------------------------------------------------------------------------------------------------------------------------------------
4. Implications of Enabling Multiple Currencies
Once enabled, multiple currencies can’t be disabled for the organization.
The enablement process temporarily locks the organization, preventing any
integration processing and user logins. The lockout duration depends on the data
space used by the organization.
Upon enablement, all existing records are stamped with a default currency code
that we provide in our enablement request.
After enablement, the primary currency displays and, optionally, a secondary
currency amount appears in parentheses. The primary currency is typically the
default corporate currency, unless it’s overridden at the record level. The amount
shown in parentheses is the user’s personal default currency, calculated
based on the conversion rate settings defined in the organization.
After enablement, all currency fields display the ISO code of the currency before
the amount. For example, $100 displays as USD 100.
Once a currency is added to an organization’s list of supported currencies, it
can’t be deleted from the administrator’s list of currencies, even when it is
deactivated. A deactivated currency is not visible to end users but remains visible
to administrators.
5. Implications Continued …
We can opt to use dated exchange rates by using advanced currency
management to track historical exchange rates. When enabled, advanced
currency management allows maintaining a list of exchange rates by date range,
and converted currency amounts on opportunities display based on the specified
Close Date, regardless of the opportunity stage.
Advanced Currency Management - Affects Opportunities, Opportunity
Products and Schedules, Campaigns and reports related to these objects and
fields. All reports related to these objects use date exchange rates to convert
currency field values.
◦ Forecasts, currency fields on other objects use status exchange rates.
◦ Close Date on Opportunity determine the exchange rate that will be used.
Reports will have a “Display Currencies Using” option. Reports also contain a
“(converted)” field for all amount fields that will display the amount in the
currency selected.
6. Additional Technical Impacts and
Implications
SOQL - Selecting currency fields using the SELECT keyword in Apex classes or
triggers
If an organization is multicurrency enabled, we need to use
convertCurrency() in the SELECT clause to convert currency fields to the user's
currency.
SOQL – Criteria/Filters using the WHERE keyword in Apex classes or triggers
We cannot use the convertCurrency() function in a WHERE clause. If we
do, an error is returned.Use the following syntax to convert a numeric value to the
user's currency, from any active currency in the organization:
WHERE Object_name Operator ISO_CODEvalue
Example: SELECT Id, Name FROM Opportunity WHERE Amount >
USD5000
If we do not put in an ISO code, then the numeric value is used instead of
comparative amounts
7. Technical Impacts Continued …
SOQL – Using aggregate functions in Apex classes or triggers
If a query includes a GROUP BY or HAVING clause, any currency data
returned by using an aggregate function, such as SUM() or MAX(), is in the
organization's default currency. We cannot use convertCurrency() function. For
example, this query works:
SELECT Name, MAX(Amount) FROM Opportunity GROUP BY Name
HAVING MAX(Amount) >10000
We can't use ISO_CODE value to represent a value in a particular currency, such
as USD, in an aggregate function. For example, the following query does not work:
SELECT Name, MAX(Amount) FROM Opportunity GROUP BY Name
HAVING MAX(Amount) > USD10000
To convert the field to the user’s currency, following are the options:
1. If using Standard Multicurrency, then query the CurrencyType object which has
ConversionRate and IsoCode fields.
2. If using Advanced Currency Management, then query the DatedConversionRate
object, which contains the ConversionRate, IsoCode and two date fields, which
can be used to backdate conversions if needed.
8. Technical Impacts Continued …
Custom Formula fields
Custom formula fields are not tied to any particular currency. If the result of a
formula field is a currency amount, it displays in the currency of the
associated record. This is also true for cross-object formulas that reference
merge fields with different currencies, and formulas in workflow rules and
approval processes. However, note that workflow rules and approval
processes that use filters instead of formulas convert all currency values
to the corporate currency.
Report, List View, Workflow/Approval Criteria
Amount criteria runs in a user’s personal currency unless the Currency ISO
Code is specified in the filter criteria
Web to Lead/Case
Add the currency ISO code field to web forms if amount fields are included to
ensure records created in Salesforce contain the correct currencies.
Date Migration & Integration
Specify the Currency ISO code on records for import otherwise they will
default to the personal currency of record creator (or data migration user)
Advanced Currency Management
Evaluate roll up summary fields that might be affected by enabling and
consider alternative solutions (ie, Apex triggers)
9. SFDC Advanced Currency Management
Allows use of dated exchange rates for Opportunity, Opportunity Product,
Opportunity Product
Schedule, Campaign Opportunity fields, opportunity splits and reports related to
these objects and
fields
The Opportunity Close Date determines which conversion rate to use when
displaying currency
amounts.
Can be disabled
Limitations
– Roll-up summary fields that calculate currency is not supported between ACM-supported
object and objects that don’t support ACM (ex.: Opportunity and Account)
– We can’t bind VF pages that use <apex:inputField> and <apex:outputField>
components to
fields of objects that support ACM
10. Multi-currency and ACM Limitations
Text and HTML Email Templates
Currency field values will be displayed only in the record currency, value in user’s
currency will not be automatically displayed as in page layouts
VisualForce Pages and Email Templates (ACM limitation)
Currency field values can not be displayed using <apex:inputField> or
<apex:outputField>
Custom code developed to resolve this limitation
Roll-up Summary Fields (ACM limitation)
Roll-up summary fields that calculate currency is not supported between
ACMsupported object and objects that don’t support ACM (ex.: Opportunity and
Account)
Custom code developed to resolve this limitation
Package Deployment
Packages deployed in multi-currency environment that require multi-currency will
not
install in single-currency orgs.
Related List of ACM object’s records
Related list records only displays the values in record currency. The
converted values of currency fields are not displayed.
11. References
• Enabling Multiple Currencies
• Implications of Enabling Multiple Currencies
• About Advanced Currency Management