Программная Конвертация Валюты


Я пытаюсь конвертировать валюту в 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 , но это не работает. Что здесь не так?

Author: davidalger, 2013-05-08

2 answers

Фатальная ошибка PHP возникает из-за ошибки в методе преобразования, в котором предполагается, что $toCurrency является объектом. Ошибка, однако, возникает, когда он пытается создать исключение:

throw new Exception(Mage::helper('directory')->__('Undefined rate from "%s-%s".', $this->getCode(), $toCurrency->getCode()));

Значение этой ошибки заключается в том, что метод convert не может найти скорость. Я протестировал ваш код, и он работает нормально, пока существуют курсы для валют, в которые вы конвертируете/из которых.

Что вам нужно сделать, это перейти в раздел Система -> Конфигурация -> Настройка валюты и убедитесь, что используемые валюты выбраны в настройках Разрешенные валюты.

После того, как вы выбрали Разрешенные валюты, вам нужно будет установить курсы. Вы можете сделать это, перейдя в раздел Система -> Управление курсами валют. Оттуда вы можете либо ввести свои собственные коэффициенты пересчета в сетку, либо импортировать их, нажав кнопку Импорт, а затем нажмите Сохранить курсы валют.

Как только у вас появятся курсы валют для настройки конвертации, она должна работать без сбоев.

 4
Author: davidalger, 2013-05-08 13:36:41

Попробуйте ниже код, он будет работать

$_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 ;
 0
Author: Adeel Ishfaq, 2015-03-31 14:21:42