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


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

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

Author: Jonathan Day, 2010-12-06

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()) и поймите, почему общие итоги были снижены.

Получайте удовольствие:)

 14
Author: Andrey Tserkus, 2011-07-09 12:37:00

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

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

Mage_Sales_Model_Quote_Address_Total_Abstract Mage_Sales_Model_Order_Invoice_Total_Abstract Mage_Sales_Model_Order_Creditmemo_Total_Abstract

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

 0
Author: Anton S, 2010-12-06 08:41:19