Оформить заказ с помощью пользовательских атрибутов адреса в Magento - PullRequest
1 голос
/ 25 августа 2011

У меня есть атрибут «Район», созданный для моего Customer_Address, потому что моя доставка рассчитывается на его основе. Этот атрибут отлично отображается в моей кассе, и пользователь может без проблем выбрать один из нескольких вариантов.

Однако, когда он оформляет заказ, метод collectRates () в моем классе получает «Mage_Shipping_Model_Rate_Request» с некоторой информацией об опциях, выбранных пользователем для извлечения. На данный момент у меня должен быть способ получить то, что пользователь установил в качестве значения района, чтобы рассчитать стоимость доставки на основе этого, но я не могу получить информацию из Mage_Shipping_Model_Rate_Request.

Есть ли способ добавить атрибут в этот класс, чтобы получить его позже? или же Стоит ли искать это значение другим способом?

Какую бы помощь вы мне не оказали, она будет очень полезна!

Спасибо.

1 Ответ

1 голос
/ 25 ноября 2011

Я думаю, что вы уже решили это ...

В любом случае, у меня была такая же проблема, и я решил ее следующим образом:

Перепишите Mage_Sales_Model_Quote_Address и Mage_Shipping_Model_Shipping, это классыкоторые делают $request = Mage::getModel('shipping/rate_request');

Так это выглядит так:

class MyCompany_MyModule_Model_Quote_Address extends Mage_Sales_Model_Quote_Address{

public function requestShippingRates(Mage_Sales_Model_Quote_Item_Abstract $item = null)
{
    /** @var $request Mage_Shipping_Model_Rate_Request */
    $request = Mage::getModel('shipping/rate_request');

    // add custom attribute
    $request->setDestCustom($this->getCustomAddressAttribute());
    ...
}
}

и

class MyCompany_MyModule_Model_Shipping extends Mage_Shipping_Model_Shipping{

    public function collectRatesByAddress(Varien_Object $address, $limitCarrier = null)
    {
        /** @var $request Mage_Shipping_Model_Rate_Request */
        $request = Mage::getModel('shipping/rate_request');
        ...

        // add custom attribute
        $request->setDestCustom($address->getCustomAddressAttribute());
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...