/app/code/core/Mage/Sales/Model/Quote.php
класс Quote для объекта quote
/app/code/core/Mage/Sales/Model/Quote/Address.php
является классом Address Address для любых объектов адреса quote
Объект цитаты обычно содержит 2 объекта адреса, но может содержать больше, если присутствует несколько адресов доставки.
В отношении метода (ов) collecttotals: давайте сначала разберемся с каждым методом и его назначением:
Метод in Mage_Sales_Model_Quote
является начальной точкой входа для Totals Collector
подсистемы и инициируется сохранением корзины,
(это позволяет вводить методы класса в расчеты корзины, чтобы влиять на итоги итогов корзины - пример: вычисления скидок корзины)
Код выполняется следующим образом:
Mage_Checkout_Model_Cart::save()
Mage_Sales_Model_Quote::collectTotals()
<--- точка входа подсистемы коллектора
Mage_Sales_Model_Quote_Address::collectTotals()
<- каждый адрес, связанный с объектом цитаты, вызывается через цикл в объекте сбора итогов цитаты.
Теперь в методе address collecttotals выполняется цикл с использованием всех определенных системой «коллекторов», вызывающий каждый класс / метод, что позволяет корректировать итоги заказа с помощью дополнительных вычислений (помните, что все итоги зависают от адреса). объект (ы), а не фактический объект цитаты, который позволяет magento выполнять проверку по нескольким адресам)
foreach ($this->getTotalCollector()->getCollectors() as $model) {
$model->collect($this);
}
Список возможных «коллекционеров» будет:
Вы можете внедрить свой собственный сборщик итогов через конфигурацию модуля как таковую, и у вас должен быть collect
метод в качестве точки входа.
<sales>
<quote>
<totals>
<giftpromo>
<class>giftpromo/promo_gift</class>
<after>discount</after>
<before>tax,grand_total</before>
<sort_order>12410</sort_order>
</giftpromo>
</totals>
</quote>
</sales>
Теперь, учитывая всю эту информацию, события произошли:
sales_quote_collect_totals_before : срабатывает перед загрузкой любого объекта адреса и действует сборщик итогов
sales_quote_address_collect_totals_before : запускается внутри объекта (объектов) адреса кавычки, прежде чем каждый объект адреса запускает список потенциальных объектов коллектора.
Не зная вашей финальной игры, я не смогу определить, какой из них вам подходит, однако я бы также посоветовал подумать, если ни то, ни другое не подходит, и что вам лучше всего будет добавить новый сборщик для система сбора итогов
Я надеюсь, что эта информация поможет вам определить правильный способ расширения функциональности и предоставления стабильного решения.