Saya memiliki masalah aneh dengan aturan Magento Target jual-atas.
Skenario: Magento EE 1.12. 30+ tampilan toko pada instance Magento yang sama. 30k + produk. Sebagian besar produk memiliki pengaturan yang sama pada semua tampilan toko. Saya telah membuat aturan untuk menampilkan upsell sebagai berikut. "Tampilkan produk dari kategori yang sama dengan harga 100% atau lebih dari produk saat ini". Pengaturan untuk menampilkan kenaikan penjualan: 'Hanya berbasis aturan' (masalah mereproduksi untuk 'Berbasis aturan dan dipilih'). Saya sudah menyimpan aturan. mengindeks ulang segalanya. Semuanya terlihat OK, upsell muncul (untuk produk yang saya uji) seperti yang didefinisikan oleh aturan, TAPI ... Setelah beberapa waktu untuk produk yang sama di satu tampilan toko upsells muncul dan pada tampilan toko lain mereka tidak. Produk memiliki pengaturan yang sama pada semua tampilan toko. (Dan itu harus memiliki upsell yang sama.)
Jika saya memodifikasi sesuatu dalam aturan dan menyimpannya lagi, upsell mulai muncul di semua tampilan store tetapi setelah beberapa waktu masalah ini mereproduksi.
Setelah menggali dalam kode saya menemukan bahwa upsell yang dihasilkan oleh aturan target disimpan dalam tabel enterprise_targetrule_index_upsell untuk menghindari parsing semua aturan setiap kali. Inilah cara kerjanya. (tabel terpotong saat menyimpan aturan) Jika ada 'aturan target' meningkat dalam tabel yang saya sebutkan maka mereka diambil. Jika tidak maka aturan diuraikan dan hasilnya dimasukkan dalam tabel indeks. Berikut adalah beberapa catatan dari tabel itu untuk produk tertentu.
+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
| entity_id | store_id | customer_group_id | product_ids | customer_segment_id |
+-----------+----------+-------------------+---------------------------------------------------------------------+---------------------+
| 17372 | 2 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 5 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 17 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 18 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 19 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 20 | 0 | | 0 |
| 17372 | 21 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 22 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
| 17372 | 23 | 0 | 17373,350,583,487,17664,29737,14719,443,445,29502,17666,17667,17668 | 0 |
Seperti yang Anda lihat upsells untuk produk dengan id 17372 semuanya sama pada semua tampilan store kecuali store_id 20 yang kosong. Tidak ada yang istimewa dari toko 20. Semua produk yang terlibat di sini tersedia di semua toko.
Ada ide?
Terima kasih. Marius.
sumber
cron
dikonfigurasi dengan benar. IIRC peraturan dibangun kembali setiap malam dan tanpa aktifcron
akan menghasilkan perilaku anehJawaban:
Di EE 1.13, bug ini tampaknya diperbaiki (tetapi EE 1.13 hilang)
Dalam
Enterprise_TargetRule_Model_Resource_Index::saveProductIndex
, sejalan dengan masalah diganti dengan (petunjuk: 4 param "false")$targetRule->bindRuleToEntity($ruleId, $productId, 'product', false);
dan, dalam
Mage_Rule_Model_Resource_Abstract
, fungsibindRuleToEntity
diubah menjadi:dan garis
$adapter->delete(...)
dibungkusBug lain, shell / indexer.php --reindex targetrule tidak melakukan apa-apa, jadi, Anda tidak dapat mengindeks ulang melalui cron / konsol, perbaiki dengan menambahkan
Enterprise_TargetRule_Model_Index
:KEMUDIAN: lihat tambalan ini https://github.com/magendooro/targetrulefix
sumber
Integrity constraint violation:for key '5B1C775075460366570ABDA2839BC68A'
-> kunci ini berasal darienterprise_targetrule_index_related
... apakah Anda tahu jika itu terkait dengan perubahan yang disebutkan?Saya memutuskan untuk menambahkan apa yang saya temukan sebagai jawaban sehingga pertanyaan ini tidak akan ditandai sebagai tidak dijawab.
saat menyimpan produk, aturan target diindeks untuk produk itu dan akhirnya melakukan ini :(
Mage_Rule_Model_Resource_Abstract::bindRuleToEntity()
)Ini menghapus semua produk lain dari daftar produk yang terpengaruh. Jika saya mengatur mode untuk indeks targetrule ke 'manual' masalah tidak mereproduksi. Tapi ini tidak menyelesaikannya. Itu hanya menyembunyikannya.
Dari sudut pandang saya, ini adalah bug Magento EE yang serius.
sumber