protected function ExchangerProviderRemoteBase::recalculateRates in Commerce Exchanger 8
Recalculate currencies from exchange rate between two other currencies.
Parameters
string $target_currency: Currency to which should be exchange rate calculated.
\Drupal\commerce_exchanger\ExchangerProviderRates $data: Currency and rate array.
Return value
\Drupal\commerce_exchanger\ExchangerProviderRates Return recalculated data.
1 call to ExchangerProviderRemoteBase::recalculateRates()
- ExchangerProviderRemoteBase::crossSyncCalculate in src/Plugin/ Commerce/ ExchangerProvider/ ExchangerProviderRemoteBase.php 
- Rates calculation for currencies when we use cross sync conversion.
File
- src/Plugin/ Commerce/ ExchangerProvider/ ExchangerProviderRemoteBase.php, line 227 
Class
- ExchangerProviderRemoteBase
- Base class for Commerce exchanger provider plugins.
Namespace
Drupal\commerce_exchanger\Plugin\Commerce\ExchangerProviderCode
protected function recalculateRates(string $target_currency, ExchangerProviderRates $data) {
  $rates = $data
    ->getRates();
  $base_currency = $data
    ->getBaseCurrency();
  // If we accidentally sent same target and base currency.
  $rate_target_currency = $rates[$target_currency] ?? 1;
  // Get rate based from base currency.
  $currency_default = round(1 / $rate_target_currency, 6);
  $recalculated = [];
  $recalculated[$base_currency] = $currency_default;
  // Recalculate all data.
  foreach ($rates as $currency => $rate) {
    if ($currency !== $target_currency) {
      $recalculated[$currency] = round($rate * $currency_default, 6);
    }
  }
  return new ExchangerProviderRates([
    'base' => $target_currency,
    'rates' => $recalculated,
  ]);
}