Magentoでは、変動する外国為替相場を同期する通貨レートをインポートする機能があります。

通貨レートインポートのスケジュール設定画面
通貨レートインポートのスケジュール設定画面

これは毎日・毎週・毎月のいずれかを選択し、時間指定するとCronと連動して自動で同期してくれる大変便利な機能なのですが、インポート元である外部サービスのWebservicexが動かず、この機能が使えなくなってしまいました。

しかしさすがMagentoは世界中で使われてるだけあり、すぐに対処法が有志によって英語サイトで公開されています。
具体的にはインポート元をWebservicexではなく米Yahooのファイナンスより取得するように書き換えるのですが、その具体的な手順をご紹介したいと思います。

  1. Yahooファイナンスのモジュールをダウンロードします。
    # cd "Magentoのドキュメントルート"
    # mkdir app/code/local/JT/Directory/Model/Currency/Import/
    wget http://www.panticz.de/sites/default/files/magento/CurrencyExchange/Yahoofinance.php -O app/code/local/JT/Directory/Model/Currency/Import/Yahoofinance.php
    
  2. 設定を変更します。(+記号の部分を追加してください。)
    # vi app/etc/local.xml
    
                 </default_setup>
             </resources>
             <session_save><![CDATA[files]]></session_save>
    +        <currency>
    +            <import>
    +                <services>
    +                    <yahoofinance>
    +                        <name>Yahoo Finance</name>
    +                        <model>JT_Directory_Model_Currency_Import_Yahoofinance</model>
    +                    </yahoofinance>
    +                </services>
    +            </import>
    +        </currency>
         </global>
         <admin>
             <routers>
    
  3. Magentoのキャッシュストレージをフラッシュします。
  4. 「System(システム)」→「Configuration(設定)」→「Currecy Setup(通貨設定)」より、「Scheduled Import Settings(インポートスケジュール設定)」の「Service(サービス)」を、「Webservicex」から「Yahoo Finance」に変更します。

 

これでYahooファイナンスからインポートすることができるようになりますので、まずは「System(システム)」→「Manage Currency(通貨管理)」→「Rates(レート)」より、正しい値がインポートされるかを試していただければと思います。

※ 設定がWebservicexのままだとインポートした後に、「1.0000」という値が返ってきてしまうので、1ドルが1円とか、とんでも無いことになってしまいますね、、、、

ご参考にしてください。