Question

Je suis en train de convertir des devises dans Magento 1.5 en utilisant le code suivant dans un fichier séparé pour vérifier la conversion des devises. J'ai deux magasins avec des paramètres monétaires respectifs dans l'admin.

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 ));

J'obtiens l'erreur suivante,

  

Fatal error: Appel à une fonction membre getCode () sur un non-objet dans /var/www/vhosts/www.test.com/httpdocs/app/code/core/Mage/Directory/Model/Currency.php sur la ligne 171

J'ai essayé ce qui suit http://www.magentocommerce.com / conseils / v / viewthread / 118631 / P15 / # t381027 , mais il ne fonctionne pas. Quel est le problème ici?

Était-ce utile?

La solution

L'erreur fatale PHP est issu d'un bogue dans la méthode de conversion où elle suppose que $ toCurrency est un objet. L'erreur, cependant, est causée quand il essaie de lancer une exception:

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

Le sens de cette erreur est que la méthode convert ne peut pas trouver un taux. Je l'ai testé votre code, et il fonctionne très bien, aussi longtemps que les taux existent pour les devises que vous souhaitez convertir vers / depuis.

Qu'est-ce que vous devez faire est de naviguer Système -> Configuration -.> Configuration des devises et assurez-vous que les devises que vous utilisez sont sélectionnées dans le réglage Devises autorisées

Une fois que vous avez sélectionné les Devises autorisées, vous devrez fixer les taux. Vous pouvez le faire en allant dans Système -> Gérer Taux de change. De là, vous pouvez entrer vos propres rapports de conversion dans la grille ou les importer en cliquant sur le bouton Importer, puis cliquez sur Enregistrer Taux de change.

Une fois que vous avez les taux de change pour la configuration de conversion, il devrait fonctionner sans accroc.

Autres conseils

Essayez ci-dessous le code il travaillé

$_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 ;
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top