Как настроить пользовательский общий итог перед оформлением заказа в magento?

Я добавил наблюдателя на событие "sales_order_place_before" и хочу настроить общий итог перед обработкой платежа. но я много пытался изменить цену цитаты, но она не работает.

У кого-нибудь есть идеи??

2 ответа

Решение

Вам нужно добавить новый коллектор после итогового итога (Mage_Sales_Model_Quote_Address_Total_Grand). Он должен изменить сумму, которая была установлена ​​общим коллектором.

Я говорил о таком случае на конференции MageConf в Украине неделю назад. Видео и слайды пока недоступны, но вы можете скачать демо-модуль, который был описан на конференции. Существует пример общего коллектор, который рассчитывает цену упаковки.

Вы можете изменить мой демо-общий коллектор так, чтобы он был вставлен в процесс сбора ПОСЛЕ Grand сборщика итогов (см. Config.xml в каталоге и т. Д. <before>subtotal</before> узел затем использовать <after>grand_total</after> вместо этого) и измените метод collect() просто для установки общих итоговых значений в предопределенные значения:

$address->setGrandTotal($someValue);
$address->setBaseGrandTotal($someBaseValue);

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

Повеселись:)

Вы не можете создать новый общий объект или добавить суммы в качестве виртуальных продуктов.

пожалуйста, соблюдайте

Mage_Sales_Model_Quote_Address_Total_Abstract Mage_Sales_Model_Order_Invoice_Total_Abstract Mage_Sales_Model_Order_Creditmemo_Total_Abstract

чтобы увидеть, что нужно для реализации общего объекта. Вам также может понадобиться расширить объекты ставки

Другие вопросы по тегам