/app/code/core/Mage/Sales/Model/Quote.php
引用オブジェクトの引用クラスです
/app/code/core/Mage/Sales/Model/Quote/Address.php
見積住所オブジェクトの見積住所クラスです
見積もりオブジェクトには通常2つの住所オブジェクトが含まれますが、複数の配送先住所が存在する場合はさらに多く含めることができます。
'collecttotals'メソッドに関して:最初に各メソッドとその目的を理解しましょう:
のメソッドはMage_Sales_Model_Quote
、Totals Collector
サブシステムの初期エントリポイントであり、カートの保存によって開始されます。
(これにより、カートメソッドの計算にクラスメソッドを挿入して、カート合計の結果に影響を与えることができます-例:カート割引の計算)
次のようにコードフロー:
Mage_Checkout_Model_Cart::save()
Mage_Sales_Model_Quote::collectTotals()
<---コレクタサブシステムのエントリポイント
Mage_Sales_Model_Quote_Address::collectTotals()
<-見積もり収集オブジェクトのループを介して、見積もりオブジェクトに添付された各アドレスが呼び出されます。
これで、アドレス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:各住所オブジェクトが潜在的なコレクターオブジェクトのリストを実行する前に、見積住所オブジェクト内で発生します。
あなたのエンドゲームを知らないので、どちらがあなたに適しているかを判断することはできませんが、どちらも正しくないかどうかを検討することをお勧めします。合計コレクターシステム
この情報が、機能を拡張するための正しい方法を決定し、安定したソリューションを提供するのに役立つことを願っています。