Magento: Nummerierung der IDs von Bestellungen, Rechnungen & Lieferscheinen anpassen
Magento vergibt für jede Bestellung, jede Rechnung und jeden Lieferschein eine fortlaufende und einmalige Nummer. Die erste Bestellung in einem neuen Magento-Onlineshop hat beispielsweise die ID 100000001.
Es gibt verschiedene Gründe, warum diese Nummerierung angepasst werden könnte:
- Die Zahl erscheint unwahrscheinlich hoch, die vielen Nullen können beim manuellen Abschreiben (z.B. beim Erfassen der Rechnungsnummer im E-Banking) zu Fehlern führen
- Die aktuelle Bestellnummer soll keinen Rückschluss auf die Anzahl Bestellungen im Shop liefern (bei der Bestellung 100000001 ist dem Kunden z.B. sofort klar, dass dies die erste Bestellung in diesem Shop ist)
- Die Nummern sollen einen Rückschluss auf das aktuelle Jahr liefern, indem diese z.B. mit 2015 beginnen
Gründe, um diese Nummerierung anzupassen, gibt es also viele. Nachfolgend wird erklärt, wie dies am einfachsten bewerkstelligt werden kann.
Aktuelle Nummerierung auslesen
Um zur Kontrolle die aktuelle Nummerierung zu prüfen muss folgender Befehl in der Datenbank ausgeführt werden (z.B. via phpMyAdmin):
SELECT core_store_group.name AS group_name, core_website.name AS website_name, core_store.name AS store_name, core_store.store_id, increment_prefix, increment_last_id, entity_type_code FROM eav_entity_store INNER JOIN eav_entity_type ON eav_entity_type.entity_type_id = eav_entity_store.entity_type_id INNER JOIN core_store ON core_store.store_id = eav_entity_store.store_id INNER JOIN core_store_group ON core_store_group.group_id = core_store.group_id INNER JOIN core_website ON core_website.website_id = core_store.website_id WHERE eav_entity_store.store_id != 0 ORDER BY eav_entity_store.store_id;
Das System zeigt dann den aktuellen Stand der Nummerierungen an:
Anpassen der Nummerierung auf gewünschtes Format
Mit den nachfolgenden SQL-Befehlen kann die Nummerierung der Bestellungen, der Rechnungen und der Lieferscheine in Ihrem Magento-Shop angepasst werden.
# Mindestlänge der Nummerierung, wobei bei einer tieferen Länge Nullen zwischen Präfix und fortlaufender Nummerierung eingesetzt werden UPDATE eav_entity_type SET increment_pad_length=9 WHERE entity_type_code = 'order'; UPDATE eav_entity_type SET increment_pad_length=4 WHERE entity_type_code = 'invoice'; UPDATE eav_entity_type SET increment_pad_length=4 WHERE entity_type_code = 'shipment';
Mit dem ersten Befehl wird die Mindestlänge der jeweiligen fortlaufenden Nummerierung festgelegt. Ist die Kombination aus Präfix und aktueller Nummer kürzer als diese Mindestlänge, so werden zwischen Präfix und fortlaufender Nummerierung Nullen eingefügt, bis die gewünschte Mindestlänge erreicht ist.
# Nächste Bestellnummer setzen 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='1234' # <- Wert hier anpassen WHERE eav_entity_type.entity_type_code='order' AND eav_entity_store.store_id = '1'; # Bestellung: Präfix setzen 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_prefix='2015' # <- Präfix oder NULL eingeben, um kein Präfix zu verwenden WHERE eav_entity_type.entity_type_code='order' AND eav_entity_store.store_id = '1';
Mit den obigen Befehlen wird einerseitz für die Bestellungen die nächste Nummer in der fortlaufenden Nummerierung gesetzt und andererseits ein optionales Präfix (z.B. 2015) definiert.
Dasselbe kann nun auch noch für Rechnungen und Lieferscheine vorgenommen werden:
# Nächste Rechnungsummer setzen 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='4567' # <- Wert hier anpassen WHERE eav_entity_type.entity_type_code='invoice' AND eav_entity_store.store_id = '1'; # Rechnung: Präfix setzen 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_prefix=NULL # <- Präfix oder NULL eingeben, um kein Präfix zu verwenden WHERE eav_entity_type.entity_type_code='invoice' AND eav_entity_store.store_id = '1'; # Nächste Lieferscheinnummer setzen 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='111' # <- Wert hier anpassen WHERE eav_entity_type.entity_type_code='shipment' AND eav_entity_store.store_id = '1'; # Rechnung: Präfix setzen 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_prefix='999' # <- Präfix oder NULL eingeben, um kein Präfix zu verwenden WHERE eav_entity_type.entity_type_code='shipment' AND eav_entity_store.store_id = '1';
Mit diesen SQL-Befehlen ist es also möglich jedes beliebige Format für Ihre Bestellungs-, Rechnungs- und Lieferscheinnummern zu setzen.
Brauchen Sie Hilfe bei der Einrichtung Ihres Magento-Onlineshops? Gerne stehen wir Ihnen zur Verfügung. Füllen Sie einfach das unten stehende Kontaktformular aus und wir melden uns so schnell wie möglich bei Ihnen.