Как настроить пользовательский общий итог перед оформлением заказа в 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
чтобы увидеть, что нужно для реализации общего объекта. Вам также может понадобиться расширить объекты ставки