Magento Bestellungen löschen und Nummernkreise definieren

Momentan gibt es leider keine einfache Möglichkeit, vorhandene Bestellungen komplett aus der Datenbank zu löschen. Im Forum finden sich dafür verschiedene Vorgehensweisen, und die die für mich am Besten funktioniert hat habe ich hier kurz zusammengefasst. Zusätzlich erkläre ich auch, wie man die Startnummern von Bestellungen und Rechnungen an die eigenen Bedürfnisse anpasst. Getestet habe ich das Ganze unter Magento 1.1.1 und 1.1.3.

Zunächst sollten Sie Zugriff auf Ihre Datenbank haben, am geläufigsten ist dafür [PHPMyAdmin](http://www.phpmyadmin.org/). Wählen Sie Ihre Magento Datenbank aus und machen Sie als erstes ein komplettes Backup dieser Datenbank über den Link zum _Exportieren_. Stellen Sie sicher, daß bei _Struktur_ und _Daten_ der Haken gesetzt ist und laden Sie sich das ganze Paket herunter. Alles gesichert? Dann öffnen Sie jetzt die SQL-Eingabemaske mit einem Klick auf „SQL“:

PHPMyAdmin SQL Link

In die folgende Texteingabebox können Sie jetzt unten stehende SQL-Blöcke einfügen und anschließend ausführen. Bitte beachten Sie, daß Sie dabei auf eigenes Risiko handeln! Falls Ihr Shop anschließend nicht mehr richtig oder gar nicht funktioniert, spielen Sie oben angelegtes Backup zurück. Für eine korrekte Funktionsweise der hier beschriebenen Skripte kann ich weder garantieren noch für eventuell entstandene Schäden haften. Natürlich wurde alles nach bestem Wissen und Gewissen getestet und für tauglich befunden, Nebeneffekte und Spätfolgen am Shop kann ich aber nicht ausschließen.

### Löschen aller vorhandenen Bestellungen
Das Löschen der Bestellungen erfordert Änderungen in vielen Tabellen, und um Probleme mit den einzelnen Schlüssel-Beziehungen zu vermeiden wird zunächst diese Prüfung deaktiviert. Es folgt eine lange Liste von Tabellen, die Einträge zu den Bestellungen enthalten und die mit diesem SQL-Code _geleert_ werden. Da sich die Daten nicht wiederherstellen lassen, ist ein Backup wie oben beschrieben unerlässlich! Der Code stammt aus [diesem Forumsbeitrag](http://www.magentocommerce.com/boards/viewthread/1680/P60/)

SET FOREIGN_KEY_CHECKS=0;

TRUNCATE `sales_order`;
TRUNCATE `sales_order_datetime`;
TRUNCATE `sales_order_decimal`;
TRUNCATE `sales_order_entity`;
TRUNCATE `sales_order_entity_datetime`;
TRUNCATE `sales_order_entity_decimal`;
TRUNCATE `sales_order_entity_int`;
TRUNCATE `sales_order_entity_text`;
TRUNCATE `sales_order_entity_varchar`;
TRUNCATE `sales_order_int`;
TRUNCATE `sales_order_text`;
TRUNCATE `sales_order_varchar`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;

ALTER TABLE `sales_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_int` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_text` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_varchar` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1;
ALTER TABLE `tag` AUTO_INCREMENT=1;
ALTER TABLE `tag_relation` AUTO_INCREMENT=1;
ALTER TABLE `tag_summary` AUTO_INCREMENT=1;
ALTER TABLE `wishlist` AUTO_INCREMENT=1;
ALTER TABLE `log_quote` AUTO_INCREMENT=1;
ALTER TABLE `report_event` AUTO_INCREMENT=1;

— Reset all ID counters
TRUNCATE `eav_entity_store`;
ALTER TABLE `eav_entity_store` AUTO_INCREMENT=1;

SET FOREIGN_KEY_CHECKS=1;

### Löschen aller vorhandenen Kunden
Wenn Sie zusätzlich auch alle Kunden mit allen Daten löschen möchten, können Sie folgende SQL-Befehle zusätzlich ausführen. Der Admin-Benutzer ist davon nicht betroffen, da die Administratorenkonten keine regulären Kunden im System sind, sondern anders verwaltet werden.

SET FOREIGN_KEY_CHECKS=0;

— reset customers
TRUNCATE `customer_address_entity`;
TRUNCATE `customer_address_entity_datetime`;
TRUNCATE `customer_address_entity_decimal`;
TRUNCATE `customer_address_entity_int`;
TRUNCATE `customer_address_entity_text`;
TRUNCATE `customer_address_entity_varchar`;
TRUNCATE `customer_entity`;
TRUNCATE `customer_entity_datetime`;
TRUNCATE `customer_entity_decimal`;
TRUNCATE `customer_entity_int`;
TRUNCATE `customer_entity_text`;
TRUNCATE `customer_entity_varchar`;
TRUNCATE `log_customer`;
TRUNCATE `log_visitor`;
TRUNCATE `log_visitor_info`;

ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1;
ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1;
ALTER TABLE `log_customer` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor` AUTO_INCREMENT=1;
ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1;

SET FOREIGN_KEY_CHECKS=1;

*ACHTUNG:* Diese SQL-Zeilen löschen unwiederbringlich alle Bestellungen und/oder Kunden aus der Datenbank! Sie haben danach einen „frischen“ Magento Shop, der wieder mit der Bestellnummer 100000001 startet.

### Ändern der automatischen Bestell- und Rechnungsnummern
Wenn Sie lieber mit anderer Bestellnummer als 100000001 starten wollen, dann wechseln Sie zur Tabelle _eav_entity_store_:

Die _entity_type_id_ gibt an, um welche Art von generierter Nummer es sich dabei handelt. Die Zuordnungen für diese IDs finden Sie übrigens in der Tabelle _eav_entity_type_. Wenn Sie dort nachsehen, werden Sie feststellen, daß die von uns gesuchte ID für die Bestellnummern die *11* ist. Die Anzahl der Stellen wird dabei in der _eav_entity_type_ festgelegt (Standard sind acht Stellen), der Präfix (_increment_prefix_) ist standardmäßig die ID des _Magento Stores_ in dem die Bestellung ausgelöst wird.

Wenn Sie also die Nummern ändern möchten, können Sie hier einfach eine Bestellnummer setzen die von Magento dann als nächstes benutzt wird. Exemplarisch hier das Setzen der Bestellnummern für den Store mit der ID 1 auf 42 unter Beibehaltung des vorhandenen Präfixes:

UPDATE eav_entity_store SET increment_last_id = ‚100000042‘ WHERE entity_store_id = 3;

Sie können nach diesem Verfahren beliebige Nummernkreise für Ihre Bestellungen, Rechnungen, Memos usw. setzen. Magento verfügt über die nötigen Mittel um sehr viele Szenarien abzubilden, nur gibt es dafür leider noch kein GUI… daher ist momentan Handarbeit nötig. Ich hoffe die Ausführungen waren verständlich. Weiterhin viel Spaß mit **Magento**.

9 Kommentare

  1. Hallo!

    Wie genau müßte ich vorgehen, wenn ich alle Bestellnummern mit einem „HOL“ und einer 7-stelligen Nummer formatieren möchte, also z.B. HOL1000001, HOL1000002, usw.

    Vielen Dank, da ich noch recht frisch in Magento bin…
    Nils

  2. Hi Nils,

    einfach bei „increment_prefix“ dein „HOL“ eintragen, und die Nummern entsprechend anpassen bei „increment_last_id“. Magento zählt das dann automatisch hoch.

  3. Hallo,
    hat jemand von euch eine Lösung parat wie ich kürzere Bestellnummern hin bekomme?
    So wie ich eine Änderung in der entity_type_id von 11 z.B. auf 8 vornehme legt er mir bei einer Bestellung eine komplett neue Tabelle an.

    Auch möchte ich gerne meine Kundennummern ändern. Gibt es da schon was drüber?

    Gruß Kay

  4. Danke, der Artikel hat mir sehr geholfen.Hat mir sehr geholfen. Es war wichtig in der eav_entity_type nachzuschauen, da bei mir die IDs anders vergeben waren. Magento 1.5.1.0

    Meine increment_last_id hatte neun Stellen, im eav_entity_type wurde diese mit 8 Stellen vermerkt, das hatte mich überrascht, aber ich habs hingenommen. Ich nehme an, dass da die erste Stelle die store_id war die nicht mitgezählt wird?

  5. Ist es auch möglich pro Website einen Nummernkreis in Magento zu definieren? Ich brauche nämlich einen Nummernkreis speziell für eine Website/Store/StoreView.

    Gruß, Alexander

    1. Soweit ich weiß ist das mit Bordmitteln nicht so einfach lösbar. Es geht zwar, aber nicht ohne entsprechende Kenntnisse. Ich würde daher zu einer entsprechenden Extension raten, die sowas kann. Beste Grüße!

Schreibe einen Kommentar zu Rene Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert