Вопросы о создании итогового заказа в Magento - PullRequest
0 голосов
/ 21 сентября 2011

Я пытаюсь создать модуль общей суммы заказа, чтобы выполнить некоторые пользовательские корректировки цен.Просто чтобы начать с этим, я просто пытаюсь заставить его прибавлять 20 долларов к каждому отдельному заказу (в итоге вводя реальную логику).

У меня проблемы с созданным мной модулем.Первая проблема заключается в том, что он, по-видимому, выполняется дважды (поэтому он снимает 40 долларов вместо всего лишь 20 долларов - ведение журнала показало, что оба метода - сбор и выборка выполняются дважды)

Вторая проблема заключается в том, чтопозиция скидки отображается ниже строки Итого.

Может кто-нибудь сказать мне, что я делаю здесь неправильно?Содержимое моего config.xml и класса итоговых сумм заказа ниже.

config.xml Content

<global>
    <sales>
        <quote>
            <totals>
                <mud>
                    <class>Wpe_Multiunitdiscount_Model_Multiunitdiscount</class>
                    <before>grand_total</before>
                </mud>
            </totals>
        </quote>
    </sales>    
</global>

Wpe_Multiunitdiscount_Model_Multiunitdiscount Content

class Wpe_Multiunitdiscount_Model_Multiunitdiscount extends Mage_Sales_Model_Quote_Address_Total_Abstract {

public function collect(Mage_Sales_Model_Quote_Address $address) {
    $address->setGrandTotal($address->getGrandTotal() + 20 );
    $address->setBaseGrandTotal($address->getBaseGrandTotal() + 20);
    return $this;
}

public function fetch(Mage_Sales_Model_Quote_Address $address) {
    $address->addTotal(array(
        'code'  => $this->getCode(),
        'title' => Mage::helper('sales')->__('Super Tax'),
        'value' => 20,
    ));
    return $this;
}
}

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Что касается "двойной" проблемы, насколько я понимаю, это потому, что magento собирает вашу общую сумму дважды, один раз за адрес доставки и один раз за адрес выставления счета.
Я уверен, что должно быть лучшеспособ справиться с этим, но сейчас я добавил в первой строке моего метода сбора:

    if ($address->getData('address_type')=='billing') return $this;

А для «размещения» попробуйте «после» вместо «до» (Изменение общего псевдонима, конечно, скажем, "налог", например, ")?
HTH

0 голосов
/ 22 сентября 2011

Вы не можете касаться любых других итогов при добавлении своей собственной итоговой суммы. Пожалуйста, смотрите эту ветку для получения дополнительной информации: Аванс Magento

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