Пользовательский Mage_Sales_Model_Quote_Address_Total_Abstract рассчитать дважды: адрес для выставления счета и доставки - PullRequest
1 голос
/ 02 июля 2011

Я намеревался создать собственный кредитный модуль, который может использовать кредиты нашего магазина для скидок.Изучив несколько примеров, я успешно добавил шаг оформления заказа на одностраничный заказ.А затем я расширяю Mage_Sales_Model_Quote_Address_Total_Abstract, чтобы иметь собственный коллектор для вычисления общего количества.В настоящее время я жестко запрограммировал некоторое значение скидки, чтобы увидеть, как оно работает:

public function collect(Mage_Sales_Model_Quote_Address $address) {
        parent::collect ( $address );
        //if($address->getData('address_type')=='billing') return $this;

        try {

            $this->_setAmount ( -10 )->_setBaseAmount ( -10 );

        } catch ( Exception $e ) {
            Mage::throwException ( $e->getMessage () );

        //do nothing.    
        }
        return $this;
    }

    public function fetch(Mage_Sales_Model_Quote_Address $address) {
        parent::fetch ( $address );
        //if($address->getData('address_type')=='billing') return $this;
        $title = Mage::helper ( 'sales' )->__ ( 'Credittest' );
        $address->addTotal ( array ('code' => $this->getCode (), 'title' => $title, 'value' => -10 ) );
        return $this;
    }

Раздел в config.xml выглядит следующим образом:

<sales>
    <quote>
        <totals>
            <credittest>
                 <class>sales/quote_address_total_credit</class>
                 <after>tax_subtotal,subtotal,freeshipping</after>
                 <before>grand_total</before>
            </credittest>
        </totals>
    </quote>
</sales> 

Однако результат получается с вычетом -20,после некоторой трассировки отладки мой пользовательский коллектор вызывается дважды, когда тип адреса «биллинг», а другой - «доставка».Поэтому я добавил приведенный выше прокомментированный код для вычисления только при получении адреса доставки. Но я не уверен, что это правильный путь.

Почему другой класс в Mage_Sales_Model_Quote_Address не будет рассчитываться дважды?Они на самом деле вызываются дважды в соответствии с моим отслеживанием.И как правильно решить мою проблему?

Заранее спасибо.

1 Ответ

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