Question

Je suis à la recherche qui collect_totals observateur que je peux utiliser.Il y a deux observateurs, sales_quote_collect_totals_before et sales_quote_address_collect_totals_before.

Ils peuvent être trouvés dans /app/code/core/Mage/Sales/Model/Quote.php et /app/code/core/Mage/Sales/Model/Quote/Address.php.

Je me demande quelle est la différence entre les deux fichiers, comme les deux fichiers ont la collecte totale des fonctions?

Était-ce utile?

La solution

/app/code/core/Mage/Sales/Model/Quote.php

est la Citation de la classe, pour la citation de l'objet

/app/code/core/Mage/Sales/Model/Quote/Address.php

est la Citation de l'Adresse de classe pour un devis adresse objets

Une citation de l'objet devrait normalement contenir 2 adresse objets, mais peut contenir plus si plusieurs adresses de livraison sont présents.

En ce qui concerne le " collecttotals méthode(s):Permet d'abord de comprendre chaque méthode, et son but:

La méthode de la Mage_Sales_Model_Quote, est le point de départ pour la Totals Collector sous-système, et est initiée par un panier de sauver,

(ce qui vous permet d'injecter des méthodes de la classe dans la charrette, de calculs, d'affecter le résultat de la charrette totaux - exemple:les calculs de panier rabais)

Flux de Code comme suit:

Mage_Checkout_Model_Cart::save()

Mage_Sales_Model_Quote::collectTotals() <--- point d'entrée de collecteur de sous-système

Mage_Sales_Model_Quote_Address::collectTotals() <-- chaque adresse jointe à la citation de l'objet est appelé, via une boucle dans la citation de recueillir les totaux de l'objet.

Maintenant, à l'adresse collecttotals méthode, une boucle est effectuée, à l'aide de tout le système défini 'collectors', l'appel de chaque classe/méthode, permettant ainsi le total de la commande pour être ajusté par des calculs supplémentaires (rappelez-vous que tous les totaux pour le pendre l'adresse de l'objet(s), et non le devis de l'objet, ce qui permet de magento pour accomplir la caisse à plusieurs adresses)

foreach ($this->getTotalCollector()->getCollectors() as $model) {
            $model->collect($this);
} 

Une liste de 'collectors' serait:

enter image description here

Vous pouvez injecter vos propres totaux collecteur par l'intermédiaire d'un module de config en tant que tel, et doit 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, les événements déclenchés:

sales_quote_collect_totals_before:Obtient déclenché avant tout de l'adresse de l'objet est chargé, et les totaux collecteur est mis

sales_quote_address_collect_totals_before:Obtient tirés à l'intérieur de la citation de l'adresse de l'objet(s), avant chaque objet adresse pistes de la liste de potentiel collectionneur d'objets.

Ne sachant pas votre fin de jeu, je ne serais pas en mesure de déterminer lequel est le bon pour vous, cependant, je vous suggère aussi d'examiner si n'est ni de droite, et que vous seriez mieux avec l'ajout d'un nouveau collecteur pour les totaux pour le système de collecteur

J'espère que cette information vous aide à déterminer le chemin à droite pour étendre la fonctionnalité, et la livraison d'une solution stable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top