Dapatkah Magento dikonfigurasikan sedemikian rupa, sehingga beberapa tampilan toko dari situs web yang sama dapat berbagiincrement_id
rentang nomor pesanan yang sama ? Dan jika demikian, bagaimana caranya?
Misalnya, dengan pengaturan multistore seperti ini di core_store
:
store_id code website_id group_id
0 admin 0 0
1 alpha 1 1
2 bravo 2 2
3 charlie 2 2
Sekarang tampilan toko baru delta
ditambahkan:
store_id code website_id group_id
4 delta 1 1
Dengan asumsi alpha
id kenaikan pesanan terakhir saat ini adalah 1000123, cara mencapai:
next sell order number
alpha 1000124
delta 1000125
delta 1000126
alpha 1000127
Pertanyaan yang sama berlaku untuk beberapa tampilan toko yang berbagi increment_id
rentang nomor faktur yang sama , dan / atau berbagi increment_id
rentang nomor kredit yang sama .
Apakah Magento mendukung ini di luar kebiasaan?
configuration
magento-1
multistore
Jürgen Thelen
sumber
sumber
Jawaban:
Saya membayangkan ini akan sangat sulit. Id kenaikan disimpan di
eav_entity_store
tabel dan tidak mengherankan setiap toko memiliki entri sendiri yang diperbarui ketika pesanan (dan kutipan, faktur dll) dibuat. Untuk membuat semua toko menggunakan incrementer yang sama, Anda harus menulis ulang logika ini sehingga menggunakan baris yang sama di DB. Dampak apa yang mungkin terjadi pada area situs lainnya adalah hal lain yang perlu dipertimbangkan.sumber
Mage::getModel('eav/entity_type')->loadByCode('invoice')->setIncrementPerStore(false)->save()
Anda dapat mengganti model pesanan, pengiriman, faktur, dan memo kenaikan kredit dengan menulis ulang kelas "eav / entity_increment_numeric" yang menyediakan logika khusus dalam Model milik Anda.
Lihatlah kelas leluhur (Mage_Eav_Model_Entity_Increment_Numeric dan Mage_Eav_Model_Entity_Increment_Abstract) untuk memahami cara menyediakan logika Anda sendiri.
Anda dapat membedakan logika antara entitas yang berbeda dengan memeriksa parameter $ entityTypeCode pada fungsi getNextId () yang akan Anda timpa.
Cara lain (yang lebih invasif) adalah menentukan model kenaikan yang berbeda untuk setiap jenis entitas dengan menimpa (melalui skrip instal) nilai kolom "increment_model" pada tabel "eav_entity_type". Secara pribadi saya lebih suka solusi "menulis ulang" yang disebutkan di atas.
Perhatikan: id kenaikan memiliki batasan keunikan dalam versi Magento terbaru sehingga Anda tidak dapat menyimpan id kenaikan yang sama untuk dua entitas berbeda dari tipe yang sama. Dengan kata lain Anda tidak dapat memiliki dua faktur berbeda dengan id kenaikan yang sama.
Semoga ini bisa membantu.
sumber
getLastId()
diMage_Eav_Model_Entity_Increment_Numeric
atau di kelas atau antarmuka lain dalam hierarki. Btw, ini seharusnya jawaban yang diterima.Varien_Object
dariMage_Eav_Model_Entity_Type
Sambil menggali lebih dalam, saya menyadari itu
eav_entity_type.increment_per_store
mungkin bisa membantu.Ini. Tetapi hanya untuk kasus ini, ketika Anda ingin semua tampilan toko (secara global, tidak peduli di mana situs web mereka tetapkan) dari instalasi Magento Anda untuk berbagi
increment_id
rentang nomor urutan yang sama .Ini tidak menyelesaikan masalah spesifik saya, tetapi mungkin bermanfaat bagi beberapa orang lain, jadi di sini kita mulai:
Untuk mengaktifkan berbagi nomor pesanan Anda secara global, atur
eav_entity_type.increment_per_store
entitas pesanan ke0
,Ini mengarah ke
Mage_Eav_Model_Entity_Type::fetchNewIncrementId()
penggunaanstore_id = 0
saat memuateav_entity_store
catatan entitas pesanan, terlepas dari tampilan toko yang benar-benar miliknya.Jika tidak ada catatan seperti itu, Magento membuat, menggunakan
store_id
danincrement_prefix
dari0
.Ini harus bekerja untuk semua jenis entitas menggunakan
eav/entity_increment_numeric
model sepertiorder
,invoice
,shipment
dancreditmemo
.Perlu diketahui, bahwa saya belum dapat menemukan dokumentasi resmi
increment_per_store
. Dan tidak ada opsi di backend Magento yang memungkinkan Anda mengonfigurasi ini.Ini mungkin atau mungkin tidak berarti, bahwa itu tidak dianggap digunakan secara resmi.
Gunakan dengan risiko Anda sendiri. Jika perubahan Anda mendatangkan malapetaka, jangan salahkan saya. Anda sudah diperingatkan ^^
sumber
Itu tidak didukung di luar kotak. Saya juga ingin melakukan ini sekali untuk memiliki tampilan toko kedua untuk Uji A / B berbagi increment_id yang sama dari toko asli.
Saya mencoba mencocokkan 2 angka itu dengan cara sederhana ketika
checkout_submit_all_after
dipecat, tetapi merasa sangat tidak nyaman dengan itu, jadi saya menjatuhkannya. Saya kira dengan lebih banyak tampilan toko dan banyak lalu lintas ini dapat menghasilkan kekacauan nyata sehingga Anda harus menggali lebih dalam logika Magentos.sumber
Larutan:
Memiliki urutan berbeda / faktur / creditmemo dll ... kisaran nomor cukup bagus, untuk negara yang berbeda, yang paling sering berarti pada tingkat grup toko.
Tetapi memiliki rentang angka yang berbeda pada tingkat tampilan toko adalah hal yang buruk jika Anda menggunakan tampilan toko untuk bahasa yang berbeda, yang mungkin dilakukan di 90% dari semua kasus.
Untungnya tidak sesulit yang diusulkan di utas ini:
Apa yang akan kita lakukan adalah kita mengambil id tampilan toko default daripada menggunakan id tampilan toko yang dipanggil dengan metode ini . Kami melakukan ini dengan menyelesaikan grup toko untuk tampilan toko saat ini dan mengambil id tampilan toko default. Kemudian setiap tampilan toko dari grup toko tertentu menggunakan format rentang nomor yang sama (yang dari tampilan toko default).
Buat kelas ini:
Tambahkan penulisan ulang ini ke config.xml modul Anda:
Jika Anda memiliki cara yang lebih baik, tanpa harus menulis ulang menyebarkan pengetahuan. Selamat bersenang-senang. Jangan hack inti.
sumber
Gunakan di magento2 ... PILIH * DARI
sales_sequence_meta
Semua baris sequence_table digunakan pada tabel kenaikan yang sama. Contoh 'sequence_order_1' contoh:
sales_sequence_meta
SET UPDATEsequence_table
= 'sequence_order_1'. dimana meta_id = ?? ()Catatan: Kosongkan semua sebelumnya Kutipan dan faktur terkait baris ATAU Gunakan pada tabel sequence_value tertinggi pada tabel ini (sequence_order_1, sequence_order_0, sequence_order_2)
sumber