/app/code/core/Mage/Sales/Model/Quote.php
ist die Quote-Klasse für das Quote-Objekt
/app/code/core/Mage/Sales/Model/Quote/Address.php
ist die Angebotsadressklasse für alle Angebotsadressobjekte
Ein Angebotsobjekt enthält normalerweise 2 Adressobjekte, kann jedoch mehr enthalten, wenn mehrere Lieferadressen vorhanden sind.
In Bezug auf die Methode (n) "Gesamtsumme": Lassen Sie uns zunächst jede Methode und ihren Zweck verstehen:
Die Methode in Mage_Sales_Model_Quote
ist der erste Einstiegspunkt für das Totals Collector
Subsystem und wird durch das Speichern eines Einkaufswagens initiiert.
(Auf diese Weise können Sie Klassenmethoden in die Warenkorbberechnungen einfügen, um das Ergebnis der Warenkorbsummen zu beeinflussen. Beispiel: Berechnung der Warenkorbrabatte.)
Code-Fluss wie folgt:
Mage_Checkout_Model_Cart::save()
Mage_Sales_Model_Quote::collectTotals()
<--- Einstiegspunkt des Kollektorsubsystems
Mage_Sales_Model_Quote_Address::collectTotals()
<- Jede an das Angebotsobjekt angehängte Adresse wird über eine Schleife im Angebotserfassungssummenobjekt aufgerufen.
Bei der Methode "Adressensammeln" wird nun eine Schleife ausgeführt, in der alle vom System definierten "Kollektoren" verwendet werden. Dabei wird jede Klasse / Methode aufgerufen, sodass die Summen für die Reihenfolge durch zusätzliche Berechnungen angepasst werden können (denken Sie daran, dass alle Summen von der Adresse abhängen Objekt (e), nicht das eigentliche Angebotsobjekt, wodurch Magento das Auschecken an mehrere Adressen durchführen kann.
foreach ($this->getTotalCollector()->getCollectors() as $model) {
$model->collect($this);
}
Eine Liste möglicher "Sammler" wäre:
Sie können Ihren eigenen Summenkollektor über eine Modulkonfiguration als solche einfügen und müssen über eine collect
Methode als Einstiegspunkt verfügen .
<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>
In Anbetracht all dieser Informationen und der Ereignisse, die ausgelöst wurden:
sales_quote_collect_totals_before : Wird ausgelöst, bevor ein Adressobjekt geladen wird und der Summenkollektor ausgeführt wird
sales_quote_address_collect_totals_before : Wird in den Angebotsadressobjekten ausgelöst, bevor jedes Adressobjekt die Liste potenzieller Kollektorobjekte ausführt.
Wenn ich Ihr Endspiel nicht kenne, kann ich nicht feststellen, welches das richtige für Sie ist. Ich würde jedoch auch vorschlagen, zu prüfen, ob keines der beiden Spiele richtig ist und ob Sie am besten geeignet sind, einen neuen Sammler für das hinzuzufügen Summenkollektorsystem
Ich hoffe, diese Informationen helfen Ihnen dabei, den richtigen Weg zu finden, um die Funktionalität zu erweitern und eine stabile Lösung zu liefern.