Bestellnummer, Kundennummer, Rechnungsnummer und weitere Nummernkreisläufe in Magento anpassen

Es kommt oft vor, dass man in Magento beispielsweise die Bestellnummer oder die Kundennummer abändern möchte. Bei einer Migration von einem bestehenden System soll letztendlich weiterhin eine fortlaufende Nummer nach dem alten Schema XYZ vorhanden sein und auch wenn man einen neuen Magento Shop aufbaut, ist fraglich, ob man  eine 8 stellige Bestellnummer haben möchte.
Doch wie passt man die Nummernkreisläufe an? Leider steht bei Magento hierfür keine grafische Eingabemaske zur Verfügung, weswegen die Änderungen direkt über die Datenbank durchgeführt werden müssen. Aber keine Sorge, die Änderungen halten sich sehr in Grenzen und können auch problemlos von “nicht Profis” durchgeführt werden.

Einzige Voraussetzung für dieses kleine Tutorial ist ein bereits installierter Magento Shop. Aus Gründen der Einfachheit beschränken wir uns bei den Anpassungen auf den Hauptstore, d.h. im System selbst sind keine weiteren Stores angelegt, die wir beachten müssen.

Los geht’s! Zu aller erst, muss man auf die Magento Datenbank zugreifen. Bei einem lokalen Webserver oder einem Webspace im Internet steht in den meisten Fällen das Datenbankverwaltungsprogramm phpMyAdmin zur Verfügung. Man kann aber natürlich auch mit anderen Anwendungen wie z.B. SQLyog auf die Datenbank zugreifen. In diesem Tutorial nutzen wir phpMyAdmin, da dieses Tool eigentlich jedem zur Verfügung stehen sollte.

Nachdem man Zugriff auf die gesamten Tabellen hat, wird man erst einmal von der Datenbankstruktur von Magento erschlagen. Über 200 Tabellen, das ist am Anfang sicherlich ein wenig unübersichtlich. Für unser Vorhaben benötigen wir jedoch nur zwei Tabellen, was die ganze Sache schon wieder ein wenig einfacher macht.

Nehmen wir einmal an, dass wir die Kundennummer nach dem Schema kdnr-100001 und die Bestellnummer nach dem Schema bestell-1001 aufbauen möchten. Rufen wir hierfür zuerst die Tabelle eav_entity_type auf. Diese Tabelle enthält sozusagen Definitionen was Nummern und Zahlen anbelangt z.B. wie viele Stellen die Bestellnummer, Kundennummer, usw. enthält.

image 
Abbildung 1.1: Übersicht der Tabelle eav_entity_type

Die einzelnen Datensätze sind relativ selbsterklärend und man kann ohne Mühe erkennen, welcher Datensatz zu welchem Nummernkreislauf gehört. Da wir die Kundennummer und Bestellnummer anpassen möchten, benötigen wir die Datensätze 1 und 11 (entity_type_code customer sowie order). Diese beiden Datensätze muss man nun editieren (bei phpMyAdmin auf den Bleistift klicken) und den Wert in der Spalte increment_pad_length abändern. Bei der Kundennummer tragen wir nun den Wert 6 in bei increment_pad_length ein, bei der Bestellnummer den Wert 4.

Anschließend ist man mit dieser Tabelle fertig, weswegen wir nun die Tabelle eav_entity_store aufrufen. In dieser Tabelle wird definiert, ob die Nummern ein Prefix enthalten und man kann beispielsweise auch verschiedenen Stores verschiedene Nummernkreisläufe zuweisen und somit nochmals eine Differenzierung vornehmen.

image
Abbildung 1.2: Übersicht der Tabelle eav_entity_store

Nach einer Installation enthält die Tabelle eav_entity_store insgesamt zwei Datensätze. Entity_store_id 1 enthält die Kundennummer, Entity_store_id  2 die Bestellnummer. Die Verbindung der beiden Tabellen erkannt man an der Spalte entity_type_id. Diese verweist auf die Definition aus der Tabelle eav_entity_type. D.h. die Spalte entity_type_id der Tabelle eav_entity_store bezieht sich auf die Spalte entity_type_id der Tabelle eav_entity_type.

Um nun die Nummern entsprechend unserer Vorgabe abzuändern editieren wir die zwei Zeilen der Tabelle eav_entity_store. Bei dem ersten Datensatz hinterlegen wir den Wert kndr- bei increment_prefix und setzen bei increment_last_id den Wert kdnr-100001. Es ist zwar ein wenig verwirrend, aber die Spalte increment_last_id muss unbedingt das Prefix aus der Spalte increment_prefix enthalten, da es sonst nicht funktioniert. Den zweiten Datensatz editieren wir ähnlich wie den ersten, vergeben aber statt kdnr- den Wert bestell- sowie bestell-1001.

Anschließend muss man die Änderungen nur noch speichern und die Nummernkreisläufe für die Bestellungen und Kunden sind entsprechend unseren Vorgaben angepasst.

4 Antworten zu “Bestellnummer, Kundennummer, Rechnungsnummer und weitere Nummernkreisläufe in Magento anpassen”

  1. michael

    Hallo, toller Beitrag!

    Hab da noch eine kleine Frage. Die Anleitung geht leider nur auf statische Prefixe ein aber wie lässt sich denn ein Variabler Prefix realisieren?
    Ich meine sowas wie das aktuelle Datum im Prefix z.B. so: RE200937 für Re,Jahr, Kalenderwoche und daran dann die eigentliche Nummer 00001.
    Also z.B. RE20093700001.

    Und kann man die füllenden Nullen weg machen?

    Gruß Michael

  2. Alexander Steireif

    Hallo Michael,

    knifflige Frage. An sich gehen von Haus aus nur statische Prefixe, die sich aber nach Store bzw. Website unterscheiden können. So wie ich dich verstanden habe, müsste man schon direkt die Rechnungsnummer frei verteilen, z.B. nach Kalenderwoche. Das müsste man dann direkt in Magento dahingehend erweitern, mit ein paar Kniffen über phpMyAdmin kommt man da meiner Meinung nach nicht weiter.

    Viele Grüße
    Alexander Steireif

  3. Maximilian

    mh… das ist aber eine sehr interessante Frage!
    Ich stehe vor dem gleichem Problem, denn mit den statischen Dingen ist mir nicht geholfen … was will ich denn mit so einer Nummer die ist ja nichts sagend!

  4. Rootz.de > Magento: Kunden-, Bestell- oder Rechnungsnummern ändern

    [...] http://legacy.blogtabs.de/2009/03/22/nummernkreislufe-in-magento-anpassen [...]

Schreiben Sie Antwort