Antworten:
Wenn ich den Standard-Inkrementtyp von Magento weiterhin verwenden und nur die nächste Inkrementnummer ändern möchte, verwende ich diese Option.
Verwenden Sie nur Inkrementzahlen, die größer sind als die bereits verwendeten!
SET @next_increment='310000000';
SELECT @entity_types:=GROUP_CONCAT(`entity_type_id`) FROM `eav_entity_type`
WHERE `entity_type_code` IN ('order', 'invoice', 'shipment');
SELECT @new_last_increment:=GREATEST((@next_increment -1),
(SELECT MAX(`increment_last_id`) FROM `eav_entity_store`
WHERE FIND_IN_SET(`entity_type_id`, @entity_types)));
UPDATE `eav_entity_store` SET `increment_last_id`=@new_last_increment
WHERE FIND_IN_SET(`entity_type_id`, @entity_types);
Diese SQL sollte dafür sorgen, dass nicht versehentlich eine bereits verwendete Inkrement-ID festgelegt wird.
Wenn ein größeres Inkrement als next_increment
bereits verwendet wurde, wird einfach die letzte Inkrementnummer für alle drei Entitätstypen so festgelegt, dass sie gleich ist.
Ich bin mir nicht sicher über den Sicherheitshebel, aber ich ändere die Werte in der DB direkt:
UPDATE `eav_entity_store` s
INNER JOIN `eav_entity_type` t ON t.`entity_type_id` = s.`entity_type_id`
SET s.`increment_last_id` = 'your_increment_here'
WHERE t.entity_type_code = "order";
Ersetzen Sie den Entitätstypcode durch "Rechnung" oder "Versand", um dies auch für den Rest zu tun.
Wenn Sie benutzerdefinierte Nummernkreise oder Formate für Inkrement-IDs anstelle der Standard-Magento-Inkremente verwenden möchten, können Sie auch ein benutzerdefiniertes Inkrementmodell zuweisen.
Zum Beispiel:
class My_Shop_Model_Entity_Increment_Erp
extends Mage_Eav_Model_Entity_Increment_Abstract
{
public function getNextId()
{
$last = $this->getLastId();
$entity = $this->getEntityTypeId();
$store = $this->getStoreId()
$next = Mage::helper('my_shop/api')->getNextIncrementFromErp($last, $entity, $store);
// If you want to apply pad char and length, otherwise simply return $next
return $this->format($next);
}
}
Aktualisieren Sie anschließend das Inkrementmodell für die Entitäten in einem Setup-Skript:
$installer = Mage::getModel('eav/entity_setup', 'core_setup');
$installer->startSetup();
$installer->updateEntityType('order', 'increment_model', 'my_shop/entity_increment_erp');
$installer->updateEntityType('invoice', 'increment_model', 'my_shop/entity_increment_erp');
$installer->updateEntityType('shipment', 'increment_model', 'my_shop/entity_increment_erp');
$installer->endSetup();
Stellen Sie sicher, dass Sie keine Inkrement-IDs zurückgeben, die bereits zuvor verwendet wurden!
Die beste [für Magento sicherste] Möglichkeit, die Bestellnummer zu ändern, besteht darin, die nächsten Bestellnummern und nicht die vorherigen zu ändern. Dies kann mit einer einfachen Datenbankabfrage erfolgen. Dies sind die, die ich auf meiner Website verwendet habe und die seit fast einem Jahr problemlos funktioniert.
Auftrag:
UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='order';
Rechnung:
UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='invoice';
Sendung:
UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='shipment';
Diese Abfragen ändern die nächsten Inkrement-IDs für Ihren Magento-Shop. HINWEIS: Ersetzen Sie X durch die nächste gewünschte ID.
Akzeptiere eine Antwort, wenn es funktioniert.
Bestellinkrement-ID und Präfix
Ändern Sie Ihre Bestellinkrement-ID in allen Filialen
UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='order';
UPDATE eav_entity_store
INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id
SET eav_entity_store.increment_last_id='XXXXXXXXXX'
WHERE eav_entity_type.entity_type_code='invoice';