/** * Get currency rate * * @param ICurrency $currency * @param ICurrencyRateProvider $provider * @param null $date * @return float */ private function getRate(ICurrency $currency, ICurrencyRateProvider $provider, $date = null) { if ($currency->getCode() != $provider->getBaseCurrency()->getCode()) { $rate = $this->rateManager->getRate($currency, $provider, $date); if (!$rate) { return null; } if (!$provider->isInversed()) { $rate = $rate->getNominal() * $rate->getRate(); } else { $rate = $rate->getNominal() / $rate->getRate(); } } else { $rate = 1.0; } return $rate; }