/app/code/core/Mage/Sales/Model/Quote.php
adalah kelas Penawaran untuk objek kutipan
/app/code/core/Mage/Sales/Model/Quote/Address.php
adalah kelas Alamat Kutipan untuk objek alamat kutipan
Objek kutipan biasanya berisi 2 objek alamat, tetapi dapat berisi lebih banyak jika ada beberapa alamat pengiriman.
Sehubungan dengan metode 'collecttotals': pertama-tama mari kita memahami setiap metode, dan tujuannya:
Metode dalam Mage_Sales_Model_Quote
, adalah titik masuk awal untuk Totals Collector
subsistem, dan diprakarsai oleh save cart,
(ini memungkinkan Anda untuk menyuntikkan metode kelas ke dalam perhitungan keranjang, untuk mempengaruhi hasil dari total keranjang - contoh: perhitungan diskon keranjang)
Alur kode sebagai berikut:
Mage_Checkout_Model_Cart::save()
Mage_Sales_Model_Quote::collectTotals()
<--- titik masuk subsistem kolektor
Mage_Sales_Model_Quote_Address::collectTotals()
<- setiap alamat yang dilampirkan pada objek kutipan disebut, melalui loop dalam kutipan, kumpulkan total objek.
Sekarang, dalam metode pengumpul data alamat, sebuah loop dilakukan, menggunakan semua sistem yang disebut 'pengumpul', memanggil setiap kelas / metode, sehingga memungkinkan total untuk pesanan disesuaikan dengan perhitungan tambahan (ingat bahwa semua total menggantung alamat objek, bukan objek kutipan sebenarnya, yang memungkinkan magento melakukan checkout ke beberapa alamat)
foreach ($this->getTotalCollector()->getCollectors() as $model) {
$model->collect($this);
}
Daftar 'kolektor' yang mungkin adalah:
Anda dapat menyuntikkan total kolektor Anda sendiri melalui konfigurasi modul, dan harus memiliki collect
metode sebagai titik masuk.
<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>
Sekarang, dengan mempertimbangkan semua informasi itu, dan peristiwa-peristiwa yang terjadi:
sales_quote_collect_totals_before : Mendapat dipecat sebelum objek alamat apa pun dimuat, dan total kolektor ditindaklanjuti
sales_quote_address_collect_totals_before : Mendapat tembakan di dalam objek alamat kutipan, sebelum setiap objek alamat menjalankan daftar objek kolektor potensial.
Tidak mengetahui permainan akhir Anda, saya tidak akan dapat menentukan mana yang tepat untuk Anda, namun, saya juga menyarankan mempertimbangkan jika tidak ada yang benar, dan bahwa Anda akan paling cocok dengan menambahkan kolektor baru untuk sistem total kolektor
Saya harap informasi ini membantu Anda menentukan cara yang tepat untuk memperluas fungsionalitas, dan memberikan solusi yang stabil.