2011-12-28 95 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請求。

現在,如果在後臺編輯訂單,這顯然會導致錯誤,因爲結帳單例不再相關。相反,我得到的報價是這樣的:

$quote = Mage::getSingleton('adminhtml/session_quote')->getQuote(); 

在我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請求中沒有使用目的地街道地址,因此我沒有使我感到奇怪,因爲我無法以這種方式訪問​​街道。乾杯。 – 2011-12-30 03:00:31