Программно преобразование валюты
-
16-10-2019 - |
Вопрос
Я пытаюсь преобразовать валюту в 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 () на unobject in /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, Но это не работает. Что здесь не так?
Решение
Фатальная ошибка PHP вытекает из ошибки в методе преобразования, где предполагается, что $ tocurrence является объектом. Ошибка, однако, вызвана, когда она пытается сделать исключение:
throw new Exception(Mage::helper('directory')->__('Undefined rate from "%s-%s".', $this->getCode(), $toCurrency->getCode()));
Значение этой ошибки в том, что convert
Метод не может найти скорость. Я проверил ваш код, и он работает нормально, пока существуют ставки для валют, в которые вы конвертируете/из.
То, что вам нужно сделать, это перейти к System -> Configuration -> Настройка валюты и убедитесь, что используемые вами валюты выбираются в настройке разрешенных валют.
После того, как вы выбрали разрешенные валюты, вам нужно установить ставки. Вы можете сделать это, перейдя на систему -> Управление тарифами валюты. Оттуда вы можете либо ввести свои собственные коэффициенты преобразования в сетку, либо импортировать их, нажав кнопку «Импорт», а затем нажмите «Сохранить тарифы».
После того, как у вас есть курсы валюты для настройки конверсии, он должен работать без зацепления.
Другие советы
Попробуйте ниже код, он будет работать
$_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 ;