/app/code/core/Mage/Sales/Model/Quote.php
est la classe Quote de l'objet quote
/app/code/core/Mage/Sales/Model/Quote/Address.php
est la classe d'adresse de devis pour tous les objets d'adresse de devis
Un objet devis contient normalement 2 objets adresse, mais peut en contenir plus si plusieurs adresses de livraison sont présentes.
En ce qui concerne la (les) méthode (s) 'collecttotals': Permet de comprendre d'abord chaque méthode et son objectif:
La méthode dans Mage_Sales_Model_Quote
, est le point d'entrée initial du Totals Collector
sous - système, et est lancée par une sauvegarde du panier,
(cela vous permet d'injecter des méthodes de classe dans les calculs du panier, pour affecter le résultat des totaux du panier - exemple: calculs des remises sur le panier)
Flux de code comme suit:
Mage_Checkout_Model_Cart::save()
Mage_Sales_Model_Quote::collectTotals()
<--- point d'entrée du sous-système collecteur
Mage_Sales_Model_Quote_Address::collectTotals()
<- chaque adresse attachée à l'objet devis est appelée, via une boucle dans l'objet devis collecter totaux.
Maintenant, dans la méthode d'adresse collecttotals, une boucle est effectuée, en utilisant tous les `` collecteurs '' définis par le système, en appelant chaque classe / méthode, permettant ainsi aux totaux de l'ordre d'être ajustés par des calculs supplémentaires (rappelez-vous que tous les totaux pendent de l'adresse objet (s), pas l'objet de devis réel, ce qui permet à magento d'effectuer le paiement à plusieurs adresses)
foreach ($this->getTotalCollector()->getCollectors() as $model) {
$model->collect($this);
}
Une liste de «collectionneurs» possibles serait:
Vous pouvez injecter votre propre collecteur de totaux via une configuration de module en tant que telle, et devez avoir une collect
méthode comme point d'entrée.
<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>
Maintenant, compte tenu de toutes ces informations et des événements déclenchés:
sales_quote_collect_totals_before : se déclenche avant le chargement de tout objet d'adresse et l'action du collecteur de totaux
sales_quote_address_collect_totals_before : obtient déclenché à l'intérieur des objets d'adresse de devis, avant que chaque objet d'adresse exécute la liste des objets de collecteur potentiels.
Ne connaissant pas votre fin de partie, je ne serais pas en mesure de déterminer celle qui vous convient, mais je suggérerais également de considérer si ni l'un ni l'autre ne convient, et que vous seriez le mieux placé pour ajouter un nouveau collecteur pour le système collecteur de totaux
J'espère que ces informations vous aideront à déterminer la bonne façon d'étendre les fonctionnalités et de proposer une solution stable.