より深く掘り下げながら、私はそれeav_entity_type.increment_per_store
が役立つかもしれないことに気づきました。
そうです。ただし、Magentoインストールのすべてのストアビュー(グローバルに定義されているWebサイトに関係なく)が同じ注文increment_id
番号範囲を共有するようにしたい場合のみです。
これは私の特定の問題を解決するものではありませんが、他の人にとっては役立つかもしれないので、ここに行きます:
注文番号のグローバル共有を有効にするにeav_entity_type.increment_per_store
は、注文エンティティをに設定し0
、
これは、実際にどのストアビューに属しているかに関係なく、オーダーエンティティのレコードを読み込むときにMage_Eav_Model_Entity_Type::fetchNewIncrementId()
使用store_id = 0
することにつながりeav_entity_store
ます。
そのようなレコードが存在しない場合は、Magentoのは、使用して、1を作成store_id
してincrement_prefix
の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;
}
これは、使用して、任意のエンティティタイプのために働く必要がありますeav/entity_increment_numeric
ように、モデルをorder
、invoice
、shipment
とcreditmemo
。
ただし、公式のドキュメントはincrement_per_store
まだ見つかりませんでした。また、Magentoバックエンドにはこれを設定できるオプションがありません。
これは、公式に使用されるとは考えられないことを意味する場合も、しない場合もあります。
自己責任。あなたの変更が大混乱をもたらすならば、私を責めないでください。警告されました^^