/app/code/core/Mage/Sales/Model/Quote.php
è la classe Quote per l'oggetto quote
/app/code/core/Mage/Sales/Model/Quote/Address.php
è la classe Indirizzo preventivo per qualsiasi oggetto indirizzo preventivo
Un oggetto preventivo normalmente contiene 2 oggetti indirizzo, ma può contenere di più se sono presenti più indirizzi di consegna.
Per quanto riguarda il / i metodo / i "collettivo": Prima comprendiamo ciascun metodo e il suo scopo:
Il metodo in Mage_Sales_Model_Quote
, è il punto di ingresso iniziale per il Totals Collector
sottosistema ed è avviato da un salvataggio nel carrello,
(ciò consente di inserire metodi di classe nei calcoli del carrello, per influenzare l'esito dei totali del carrello - esempio: calcoli degli sconti del carrello)
Flusso di codice come segue:
Mage_Checkout_Model_Cart::save()
Mage_Sales_Model_Quote::collectTotals()
<--- punto di ingresso del sottosistema collector
Mage_Sales_Model_Quote_Address::collectTotals()
<- ogni indirizzo associato all'oggetto preventivo viene chiamato, tramite un ciclo nell'oggetto raccolta totali preventivo.
Ora, nel metodo address collototals, viene eseguito un loop, utilizzando tutti i "collector" definiti dal sistema, chiamando ciascuna classe / metodo, consentendo in tal modo che i totali per l'ordine vengano regolati da calcoli aggiuntivi (ricordare che tutti i totali pendono dall'indirizzo oggetto (i), non l'oggetto preventivo attuale, che consente a magento di eseguire il checkout a più indirizzi)
foreach ($this->getTotalCollector()->getCollectors() as $model) {
$model->collect($this);
}
Un elenco di possibili "collezionisti" sarebbe:
È possibile iniettare il proprio raccoglitore dei totali tramite una configurazione del modulo in quanto tale e deve avere un collect
metodo come punto di ingresso.
<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>
Ora, considerando tutte queste informazioni e gli eventi generati:
sales_quote_collect_totals_before : viene generato prima che venga caricato qualsiasi oggetto indirizzo e viene attivato il collector dei totali
sales_quote_address_collect_totals_before : viene generato all'interno degli oggetti dell'indirizzo di quotazione, prima che ciascun oggetto dell'indirizzo esegua l'elenco di potenziali oggetti del collector.
Non conoscendo il tuo end-game, non sarei in grado di determinare quale sia quello giusto per te, tuttavia, suggerirei anche di considerare se nessuno dei due è giusto e che saresti più adatto ad aggiungere un nuovo raccoglitore per il sistema di raccolta totale
Spero che queste informazioni ti aiutino a determinare il modo giusto per estendere la funzionalità e fornire una soluzione stabile.