Converting from one currency to another is possible through Rules. We
recommend using only core for this if you want the conversion rate to be input
as a static variable. For example, you simply want to say that 1 US dollar is
equal to .76 Euros, that would be a fine and relatively easy thing to produce
using rules.
Additionally with being able to handle simple conversions, Drupal Commerce
core will properly handle mixed currency orders by converting line items to the
site's default currency if present on the order or using the currency of the
first line item on the order if the default currency isn't represented.
For more complex situations, there is a great contributed module called
Commerce Multi-currency that we have highlighted in a recent Commerce Module
Tuesday Video (seen below).
Multi-Currency Support in Core
We have lots of use-cases for handling multiple currencies. As stated above,
Drupal Commerce supports a small subset of currency support.
Currency Settings
The currency settings screen under Store > Configuration >
Currency is where you can enable additional currencies. If you are going
to do the "Static Currency Exchange Rate" exercise below, you should
enable a few currencies here.
- Administration
- Store
- Configuration
- Currency Settings
Static Currency Exchange Rate
Converting from one currency to another is possible through Rules. We
recommend using only core for this if you want the conversion rate to be input
as a static variable. For example, you simply want to say that 1 US dollar is
equal to .76 Euros, that would be a fine and relatively easy thing to produce
using rules.
Below we work through an entire exercise where we use Rules to create such a
scenario as mentioned above.
Original Pricing
The original pricing is shown here for three products. Our goal is to
create a rule that affects the prices and changes the currency. Note
that you need to enable a few other currencies to make this work.
- Administration
- Store
- View Products
Product Pricing Rules
The first step is to click on Store and then "Configuration" and,
finally, Product Pricing Rules. That is where the magic all happens when
dealing with currency exchange.
- Administration
- Store
- Product Pricing Rules
Pricing Rule
We need to click on add a pricing rule. If this is your first time on
this screen, maybe navigate around and look at how some of these other
rules are setup. If this is your first time dealing with Rules, we
highly recommend additional
tutorials.
- Administration
- Store
- Product Pricing Rules
- Click Add a Price
Name Rule
After you have created a name, click "Add Condition."
- Administration
- Store
- Product Pricing Rules
- Name Rule
- Click Add Condition
Data Comparison
After clicking "Add Condition…"
You will want to choose "Data Comparison" and then select
"commerce-line-item:commerce-unit-price:currency-code
" using the object
navigator.
- Administration
- Store
- Product Pricing Rules
- Edit Rule
- Click Add Condition
- Choose "Data Comparison"
Currency to Filter
Note that we are creating a filter that will only allow US dollars
into our actions. Without this filter, all line items would go through
this rule.
- Administration
- Store
- Product Pricing Rules
- Click Add Condition
- Choose Which Currency to Act On
Convert Numbers
Click "Add Action"
In order to actually create a currency conversion we need to do a
little math. This next step is where you add the currency exchange
rate.
- Administration
- Store
- Product Pricing Rules
- Click Add Action
- Select Multiply
Doing the Exchange
If you had 1 US dollar, how much would that equal in your other
currency? It changes, but for our exercise we're going to assume a
static number works for us. (Dynamic currency conversion is possible
with Commerce
Multicurrency).
- Administration
- Store
- Product Pricing Rules
- Click Add Action
- Select Multiply
- Multiply by 0.76
Convert Currency Symbol
Click Add Action.
Select "Convert the unit price to a different currency" so that we
can actually convert the currency from US dollars to a new currency.
This exchange is only going to change the currency symbol, it will not
actually tweak the numbers.
- Administration
- Store
- Product Pricing Rules
- Click Add Action
Final Currency
We are simply selecting the final currency symbol. You can safely
ignore the data selector.
- Administration
- Store
- Product Pricing Rules
- Click Add Action
- Select Currency Symbol
Final Screen
The final screen for the rule. If yours doesn't look like this, go
through the steps above carefully.
- Administration
- Store
- Product Pricing Rules
- Review Custom Rule
Example Cart
We have not modified any of the products prices, but we have
successfully converted all of the currency to Euros and exchanged the
prices. For example, Product Three is listed as $32.00 US dollars.