En creusant plus profondément, j'ai réalisé que cela eav_entity_type.increment_per_store
pourrait être utile.
Il est. Mais seulement dans le cas où vous souhaitez que toutes les vues de magasin (globalement, quel que soit le site Web dans lequel elles sont définies) de votre installation Magento partagent la même increment_id
plage de numéros de commande .
Cela ne résout pas mon problème spécifique, mais peut-être que cela est utile à d'autres, alors c'est parti:
Pour activer le partage global de vos numéros de commande, définissez eav_entity_type.increment_per_store
l'entité de commande sur 0
,
Cela conduit à Mage_Eav_Model_Entity_Type::fetchNewIncrementId()
utiliser store_id = 0
lors du chargement de l' eav_entity_store
enregistrement de l'entité de commande, quelle que soit la vue de magasin à laquelle il appartient vraiment.
Si un tel enregistrement n'existe pas, Magento en crée un, à l'aide de store_id
et increment_prefix
de 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;
}
Cela devrait fonctionner pour tout type d'entité à l' aide du eav/entity_increment_numeric
modèle, comme order
, invoice
, shipment
et creditmemo
.
Sachez cependant que je n'ai pas encore trouvé de documentation officielle increment_per_store
. Et qu'il n'y a aucune option dans le backend Magento vous permettant de configurer cela.
Cela peut ou non signifier qu'il n'est pas censé être utilisé officiellement.
À utiliser à vos risques et périls. Si vos changements font des ravages, ne me blâmez pas. Vous avez été prévenu ^^