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 ke 0
,
Ini mengarah ke Mage_Eav_Model_Entity_Type::fetchNewIncrementId()
penggunaan store_id = 0
saat memuat eav_entity_store
catatan entitas pesanan, terlepas dari tampilan toko yang benar-benar miliknya.
Jika tidak ada catatan seperti itu, Magento membuat, menggunakan store_id
dan increment_prefix
dari 0
.
public function fetchNewIncrementId($storeId = null)
{
if (!$this->getIncrementModel()) {
return false;
}
if (!$this->getIncrementPerStore() || ($storeId === null)) {
/**
* store_id null we can have for entity from removed store
*/
$storeId = 0;
}
// Start transaction to run SELECT ... FOR UPDATE
$this->_getResource()->beginTransaction();
$entityStoreConfig = Mage::getModel('eav/entity_store')
->loadByEntityStore($this->getId(), $storeId);
if (!$entityStoreConfig->getId()) {
$entityStoreConfig
->setEntityTypeId($this->getId())
->setStoreId($storeId)
->setIncrementPrefix($storeId)
->save();
}
$incrementInstance = Mage::getModel($this->getIncrementModel())
->setPrefix($entityStoreConfig->getIncrementPrefix())
->setPadLength($this->getIncrementPadLength())
->setPadChar($this->getIncrementPadChar())
->setLastId($entityStoreConfig->getIncrementLastId())
->setEntityTypeId($entityStoreConfig->getEntityTypeId())
->setStoreId($entityStoreConfig->getStoreId());
/**
* do read lock on eav/entity_store to solve potential timing issues
* (most probably already done by beginTransaction of entity save)
*/
$incrementId = $incrementInstance->getNextId();
$entityStoreConfig->setIncrementLastId($incrementId);
$entityStoreConfig->save();
// Commit increment_last_id changes
$this->_getResource()->commit();
return $incrementId;
}
Ini harus bekerja untuk semua jenis entitas menggunakan eav/entity_increment_numeric
model seperti order
, invoice
, shipment
dan creditmemo
.
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 ^^