Perhitungan harga adalah topik yang sangat kompleks di Magento. Berikut ini adalah pandangan mata burung tentang bagaimana hal ini dilakukan untuk produk sederhana:
- Magento mendapat harga "dasar". Ini adalah harga yang telah Anda tentukan di kolom harga
- Harga "grup" diterapkan. Ini adalah bagian di mana harga tingkat dipertimbangkan berdasarkan jumlah yang dipesan, situs web, dan grup pelanggan.
- Harga khusus diterapkan jika harga khusus ditentukan untuk tanggal saat ini.
- Acara " catalog_product_get_final_price " dipecat. Di sinilah modul khusus Anda yang mengutak-atik harga harus masuk. Sebagai contoh yang berfungsi, modul CatalogRule menangkap peristiwa ini dan mengubah harga berdasarkan aturan katalog yang ditentukan
- Harga opsi yang dipilih dipertimbangkan
Karena proses ini sangat memakan waktu, Magento membuat indeks harga dan akan melalui di atas hanya ketika mengindeks ulang. Indeks harga menggunakan sekelompok tabel yang memiliki info tentang harga "final" (dihitung menggunakan langkah-langkah di atas) bersama dengan hal-hal seperti harga minimum / maksimum untuk konfigurasi dan bundel. Tabel ini memiliki entri untuk setiap kombinasi situs web / produk / kelompok pelanggan, sehingga sistem hanya perlu memilih baris yang tepat berdasarkan data pelanggan, sehingga seluruh proses berjalan dalam waktu yang layak.
Sedangkan untuk bagian frontend, cara harga dinaikkan dan diturunkan secara dinamis, ini semua dilakukan dalam javascript yang dimulai dengan json array dengan semua "level harga" dan akan menurunkan / meningkatkan harga berdasarkan pilihan Anda.