2011-12-28 3 views
3

私のカスタム出荷モジュールは、注文がバックエンドで編集されているときに販売見積もりを取得できなかったため、失敗していました。オーダーが管理者によって編集されているかどうかを確認していますか?

class Mymodule_Model_Mycarrier_Customrate 
    extends Mage_Shipping_Model_Carrier_Abstract 
     implements Mage_Shipping_Model_Carrier_Interface 
{ 
    public function collectRates(Mage_Shipping_Model_Rate_Request $request) 
    { 
     $quote = Mage::getSingleton('checkout/type_onepage')->getQuote(); 

私は現在の見積もりを取得する必要があるので、私はアドレス情報へのアクセス権を持っている:これは私が使っていたコードでした。私は、住所を必要とするAPIリクエストを作成しています。

注文がバックエンドで編集されていた場合、チェックアウトシングルトンはもはや関係しないため、明らかにエラーになります。代わりに私はこのような引用符を得ます:

私のcollectRates()メソッドでは、ロードするシングルトンを決定する必要があります。まず、私は、これは物事の適切な方法があればお願いしたいと思いますし、また、バックエンドのための私のチェックが十分であれば:

$quote = Mage::getSingleton('checkout/type_onepage')->getQuote(); 

// If admin is editing an order, find the quote by admin session. 
if(Mage::getSingleton('admin/session')->isLoggedIn()){ 
    $quote = Mage::getSingleton('adminhtml/session_quote')->getQuote(); 
} 

は、私は潜在的な問題を後で起こすにこれをしたくありません。このような回避策を作成する必要がある場合は、私がcollectRates()メソッドを誤って使用している可能性があるという気もします。

答えて

1

Mage_Shipping_Model_Rate_Requestオブジェクトがすでに...など、$request->getDestStreet()経由

+0

感謝をアドレスへのアクセスを持って、私はそれを逃したかどうかはわかりません! 1.6.1のデフォルトのUPSモジュール(Mage_Usa_Model_Shipping_Carrier_Ups)は、XMLリクエストの宛先住所を使用しないため、この方法で通りにアクセスできないという全く奇妙なことはありません。乾杯。 –

関連する問題