Multi-Currency
To accommodate additional currency pricing, we will introduce an additional parameter to every API request.
- priceFieldSuffix
See: Modify Request Overview for details on preparing for Klevu JS overriding
See : Klevu API Documentation for Customer Groups
Indexing
The additional currency pricing data must be supplied at the product level during catalog indexing.
XML FEED examples
Below is a FEED XML example for product additional currencies
<item>
. . .
<price>123.45 GBP</price>
<sale_price>100 GBP</sale_price>
<additional_currencies>
<additional_currency>
<price>151.84 USD</price>
<sale_price>123.00 USD</sale_price>
</additional_currency>
<additional_currency>
<price>15240 JPY</price>
<sale_price>12345 JPY</sale_price>
</additional_currency>
</additional_currencies>
. . .
Below is a FEED XML example for specific group additional currencies
<item>
. . .
<groups>
<group>
<id>vip_customer_group</id>
<price>49.99 GBP</price>
<sale_price>49.99 GBP</sale_price>
<additional_currencies>
<additional_currency>
<sale_price>61.74 USD</sale_price>
</additional_currency>
<additional_currency>
<sale_price>6171 JPY</sale_price>
</additional_currency>
</additional_currencies>
</group>
</groups>
. . .
Template JS Override
The desired currency/prices are applied to all queries via overrides using the "all" scope value.
See: Modify Request Overview for details on preparing for Klevu JS overriding
Example 1
Apply the selected currency for all products
<script type="text/javascript">
// the currency to be applied
var klevu_currency = 'GBP';
klevu.modifyRequest('all', function(data, scope){
klevu.each(data.request.current.recordQueries, function(key, query){
klevu.setObjectPath(query, 'settings.priceFieldSuffix', klevu_currency);
});
});
</script>API Parameter | Description | Format |
|---|---|---|
priceFieldSuffix | Fetch prices in a specific currency | {CURRENCY} |
Example 2
Apply the selected currency for a specific customer group
<script type="text/javascript">
// the currency and group of the currently logged in customer
var klevu_currency = 'GBP';
var klevu_loginCustomerGroup = 'vip_customer_group';
/* IMPORTANT FOR BIGCOMMERCE APP USERS ONLY
* The login groupid will need an ajustment for the delimeter
*
* klevu_loginCustomerGroup = klevu_loginCustomerGroup.replace('_', '--');
*
*/
klevu.modifyRequest('all', function(data, scope){
klevu.each(data.request.current.recordQueries, function(key, query){
klevu.setObjectPath(query, 'settings.priceFieldSuffix', klevu_currency + '-' + klevu_loginCustomerGroup);
});
});
</script>API Parameter | Description | Format |
|---|---|---|
priceFieldSuffix | Fetch prices/currency specific to a customer group | {CURRENCY}-{GROUPID} |
See : Klevu API Documentation for Customer Groups
Example 3
For Klevu Smart Recommendations use the Recommendations klevu_processRECSRecordQueries function for the outgoing query modifications
<script type = "text/javascript" >
function klevu_processRECSRecordQueries(recordQueries, recsKey)
{
var recsQuery = recordQueries[0];
// Apply the selected currency for all products
klevu.setObjectPath(recsQuery, 'settings.priceFieldSuffix', klevu_currency);
/* OPTION 2:
// Apply the selected currency for a specific customer group
klevu.setObjectPath(recsQuery, 'settings.priceFieldSuffix', klevu_currency + '-' + klevu_loginCustomerGroup);
*/
}
</script>See : Modify Recommendations Overview for more details