Как установить пользовательскую общую сумму перед оформлением заказа в magento?
Я добавил наблюдателя в событие "sales_order_place_before" и хочу настроить общую сумму перед обработкой платежа. но я много раз пытался изменить цену предложения, но это не работает.
У кого-нибудь есть какие-нибудь идеи??
2 answers
Вам нужно добавить новый коллектор после общего количества (mage_sales_model_quote_address_total_grand). Он должен изменить сумму, установленную коллектором grand total.
Я говорил о таком случае на конференции MageConf в Украине неделю назад. Видео и слайды пока недоступны, но вы можете скачать демонстрационный модуль, который был описан на конференции. Существует пример total collector, который вычисляет цену упаковки.
Вы можете изменить мой демо-коллектор total, чтобы он быть вставленным в процесс сбора ПОСЛЕ общего сбора (см. config.xml в модуле и т. Д. каталог - удалите узел <before>subtotal</before>
, затем используйте вместо него <after>grand_total</after>
) и измените метод collect(), просто чтобы установить общие итоги для ваших предопределенных значений:
$address->setGrandTotal($someValue);
$address->setBaseGrandTotal($someBaseValue);
Или вы можете оставить этот модуль как есть, но установить в нем отрицательные итоги. Таким образом, коллекционер общей суммы вычтет их и снизит общую стоимость, как вы пожелаете. Также в таком случае клиент сможет увидеть ваш негатив значения (укажите их в методе fetch()) и поймите, почему общие итоги были снижены.
Получайте удовольствие:)
Вы не можете создать новый объект total или добавить суммы в виде виртуальных продуктов
Пожалуйста, соблюдайте
Mage_Sales_Model_Quote_Address_Total_Abstract
Mage_Sales_Model_Order_Invoice_Total_Abstract
Mage_Sales_Model_Order_Creditmemo_Total_Abstract
Чтобы увидеть, что необходимо для реализации всего объекта. Вам также может потребоваться расширить объекты скорости