Проверка, если заказ редактируется администратором? - PullRequest
3 голосов
/ 28 декабря 2011

Мой пользовательский модуль доставки не работал, потому что он не мог получить коммерческое предложение, когда заказ редактировался в бэкэнде. Это был код, который я использовал:

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 Ответ

1 голос
/ 30 декабря 2011

Объект Mage_Shipping_Model_Rate_Request уже имеет доступ к адресу через $request->getDestStreet() и т. Д. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...