En creusant plus profondément, j'ai réalisé que cela eav_entity_type.increment_per_storepourrait ê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_idplage 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_storel'entité de commande sur 0,
Cela conduit à Mage_Eav_Model_Entity_Type::fetchNewIncrementId()utiliser store_id = 0lors du chargement de l' eav_entity_storeenregistrement 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_idet increment_prefixde 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_numericmodèle, comme order, invoice, shipmentet 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 ^^