Beim tieferen Graben wurde mir klar, dass eav_entity_type.increment_per_storedies hilfreich sein kann.
Es ist. Aber nur für den Fall, dass Sie möchten, dass alle Store-Ansichten (global, unabhängig von der Website, auf der sie definiert sind) Ihrer Magento-Installation denselben Bestellnummernbereich haben increment_id.
Dies löst mein spezifisches Problem nicht, aber vielleicht ist es für einige andere hilfreich.
Um die globale Freigabe Ihrer Bestellnummern zu aktivieren, setzen Sie eav_entity_type.increment_per_storedie Bestellentität auf 0,
Dies führt dazu Mage_Eav_Model_Entity_Type::fetchNewIncrementId(), dass store_id = 0beim Laden des eav_entity_storeDatensatzes die Entität der Bestellung verwendet wird, unabhängig davon, zu welcher Geschäftsansicht sie wirklich gehört.
Wenn kein solcher Datensatz vorhanden ist, erstellt Magento einen mit store_idund increment_prefixvon 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;
}
Dies sollte für jeden Entitätstyp arbeiten , um die Verwendung von eav/entity_increment_numericModell, wie order, invoice, shipmentund creditmemo.
Beachten Sie jedoch, dass ich noch keine offizielle Dokumentation finden konnte increment_per_store. Und dass es im Magento-Backend keine Option gibt, mit der Sie dies konfigurieren können.
Dies kann bedeuten oder auch nicht, dass davon ausgegangen wird, dass es nicht offiziell verwendet wird.
Benutzung auf eigene Gefahr. Wenn Ihre Änderungen Chaos anrichten, beschuldigen Sie mich nicht. Du wurdest gewarnt ^^