Startnummern für Sonderanfertigungen, Rechnungen und Versand

Antworten:

7

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_incrementbereits verwendet wurde, wird einfach die letzte Inkrementnummer für alle drei Entitätstypen so festgelegt, dass sie gleich ist.

Vinai
quelle
2

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.

user487772
quelle
2

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!

Vinai
quelle
2

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.

Tarun
quelle
1
Von hier kopiert
user487772
Ja und die Lösung funktioniert.
Tarun
0

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';
Alkesh Goswami
quelle