Программная Конвертация Валюты
Я пытаюсь конвертировать валюту в Magento 1.5, используя следующий код в отдельном файле, чтобы проверить конвертацию валют. У меня есть два магазина с соответствующими настройками валюты в администраторе.
set_time_limit(0);
error_reporting(1);
ini_set('display_errors', 1);
define('D_S', DIRECTORY_SEPARATOR);
require_once 'app/Mage.php';
umask(0);
Mage::app();
$_fromCurr = 'USD';
if( Mage::app()->getStore()->getCurrentCurrencyCode() == 'CAD') {
$_locale = 'en_CA';
$_toCurr = 'CAD';
} else {
$_locale = 'en_US';
$_toCurr = 'USD';
}
$currency = new Zend_Currency($_locale);
$amount = 150;
echo $_price = $currency->toCurrency(round( Mage::helper('directory')->currencyConvert( $amount, $_fromCurr, $_toCurr ), 2 ));
Я получаю следующую ошибку,
Неустранимая ошибка: Вызов функции-члена getCode() для не-объекта в/var/www/vhosts/www.test.com/httpdocs/app/code/core/Mage/Directory/Model/Currency.php в строке 171
Я попытался следовать этому http://www.magentocommerce.com/boards/v/viewthread/118631/P15/#t381027 , но это не работает. Что здесь не так?
2 answers
Фатальная ошибка PHP возникает из-за ошибки в методе преобразования, в котором предполагается, что $toCurrency является объектом. Ошибка, однако, возникает, когда он пытается создать исключение:
throw new Exception(Mage::helper('directory')->__('Undefined rate from "%s-%s".', $this->getCode(), $toCurrency->getCode()));
Значение этой ошибки заключается в том, что метод convert
не может найти скорость. Я протестировал ваш код, и он работает нормально, пока существуют курсы для валют, в которые вы конвертируете/из которых.
Что вам нужно сделать, это перейти в раздел Система -> Конфигурация -> Настройка валюты и убедитесь, что используемые валюты выбраны в настройках Разрешенные валюты.
После того, как вы выбрали Разрешенные валюты, вам нужно будет установить курсы. Вы можете сделать это, перейдя в раздел Система -> Управление курсами валют. Оттуда вы можете либо ввести свои собственные коэффициенты пересчета в сетку, либо импортировать их, нажав кнопку Импорт, а затем нажмите Сохранить курсы валют.
Как только у вас появятся курсы валют для настройки конвертации, она должна работать без сбоев.
Попробуйте ниже код, он будет работать
$_Baseprice = $_product->getPrice();
$_Currentcurrencycode =Mage::app()->getStore()->getCurrentCurrencyCode();
//This will return USD, EUR e.t.c
//echo $_Currentcurrencycode;
if ($_Currentcurrencycode == 'USD') {$_convertedCurrency = Mage::helper('directory')->currencyConvert($cprice, 'SAR', 'USD');}
else {$_convertedCurrency = Mage::helper('directory')->currencyConvert($cprice, 'SAR', 'SAR');}
//_convertedCurrency will return price without symbol
//echo $_convertedCurrency ;