Daha derine inerken bunun yardımcı eav_entity_type.increment_per_store
olabileceğini fark ettim .
Bu. Ancak yalnızca Magento kurulumunuzun tüm mağaza görünümlerinin (global olarak, hangi web sitesinde tanımlanırsa tanımlansın) aynı sipariş increment_id
numarası aralığını paylaşmasını istediğinizde .
Bu benim özel sorunumu çözmüyor, ama belki bazılarına yardımcı oluyor, işte başlıyoruz:
Set sipariş numaralarının küresel paylaşımını etkinleştirmek için eav_entity_type.increment_per_store
amacıyla varlığın 0
,
Bu potansiyel müşteriler Mage_Eav_Model_Entity_Type::fetchNewIncrementId()
kullanarak store_id = 0
yüklerken eav_entity_store
sipariş varlığın rekoru, mağaza görünümü gerçekten aittir olursa olsun.
Böyle bir kayıt yoksa, Magento store_id
ve increment_prefix
ile kayıt oluşturur 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;
}
Bu kullanarak herhangi bir varlık türü için çalışmalıdır eav/entity_increment_numeric
modeli gibi order
, invoice
, shipment
ve creditmemo
.
Yine de, increment_per_store
henüz resmi bir belge bulamadığımı unutmayın . Ve Magento arka ucunda bunu yapılandırmanıza izin veren bir seçenek olmadığını.
Bu, resmi olarak kullanıldığı düşünülmeyebilir veya edilmeyebilir.
Kendi sorumluluğunuzdadır kullanın. Yaptığınız değişiklikler tahrip ederse, beni suçlama. Uyarıldınız ^^