Beim tieferen Graben wurde mir klar, dass eav_entity_type.increment_per_store
dies 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_store
die Bestellentität auf 0
,
Dies führt dazu Mage_Eav_Model_Entity_Type::fetchNewIncrementId()
, dass store_id = 0
beim Laden des eav_entity_store
Datensatzes 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_id
und increment_prefix
von 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_numeric
Modell, wie order
, invoice
, shipment
und 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 ^^