Das OpenSource Shop System Magento sticht besonders durch seinen Featurereichtum vor und macht durch auch alt etablierten kommerziellen Shop-Systemen ernsthaft Konkurrenz. Zudem ist das Administrationsinterface klar gegliedert und erlaubt weitesgehend Zugriff auf alle Funktionen und Einstellen.
Eine Sache scheinen die Entwickler bislang vergessen zu haben, welche besonders auffällt wenn man einen bestehenden Shop von einen anderen System zu Magento migrieren muss. Sobald eine Rechnung erstellt wird, wird von Magento automatisch eine fortlaufende Nummer erzeugt. Soweit werden schon mal die deutschen gesetzlichen Vorgaben an eine ordentliche Vergabe von Rechnungsnummern erfüllt. Allerdings hat ein Administrator leider keinerlei Möglichkeit die Rechnungsstartnummer nach Installation des Systems im Administrationmenu zu konfigurieren. Zudem sind die Rechnungsnummer immer automatisch 8-stellig und daher lautet die erste vergebene Nummer immer 10000001.
Allerdings kann man auch diese nervige Sache ohne allzu große Mühe abstellen. Ein paar Recherchen ergaben das Magento keine gewöhnlich inkrementelle Fortschreibung der Nummernkreise betreibt, sondern sie explizit in Feldern in einer Datenbanktabelle definiert. Diese Felder kann man ganz leicht quasi manuell mit einem SQL-Tool wie phpmyadmin editieren oder anpassen, aber eleganter ist das Ganze via SQL-Script das alles auf einen Rutsch erledigt.
Hinweis:
Magento ist berühmt dafür besonders fragil auf Upgrades & Co zu reagieren, deshalb hier die eindringliche Warnung noch vor Anwendung irgendwelcher Datenbankeingriffe unbedingt ein komplettes Backup vorzunehmen !
Die Anwendung des folgenden SQL-Scripts kann über zweierlei Varianten geschehen je nachdem welche konkreten Möglichkeiten man jeweils hat.
A.) via phpmyadmin ..
Einloggen in das Webfrontend, die entsprechende Datenbank des Magento-Shops auswählen, dann im oberen mittigen Bereich auf den SQL-Button klicken und das SQL Script via copy+paste reinbefördern und ausführen lassen. Vorteil bei dieser Lösung ist das man sofort das Ergebniss direkt begutachten kann, ohne gleich ein SQL-Experte zu sein.
B.) via mysql Commandozeile ..
Dazu braucht man auf dem jeweiligen Server einen interaktiven Shell-Zugriff meist in Form eines SSH-Logins. Anschliessend muss man zunächst das angepasste Script als Datei hochgeladen werden. Um diese anschliessend im Commando
[sourcecode]
mysql -p -u {BENUTZER} {DATENBANKNAME} <{/pfad/zur/scriptdatei.sql}
[/sourcecode]
auszuführen zu können. Die Angaben in {}-Klammer müssen natürlich durch konkrete eigene Werte ersetzt werden !
Hier das SQL-Script was die Magento-Konfiguration nun entsprechend geraderückt ..
[sourcecode lang="sql"]
--
-- ** Längendefinitionen **
--
-- Länge Kundennummern
UPDATE `eav_entity_type` SET `increment_pad_length` = '5' WHERE `entity_type_code`='customer' AND `entity_model`='customer/customer';
--
-- Länge Bestellnummern
UPDATE `eav_entity_type` SET `increment_pad_length` = '5' WHERE `entity_type_code`='order' AND `entity_model`='sales/order';
--
-- Länge Rechnungsnummern
UPDATE `eav_entity_type` SET `increment_pad_length` = '5' WHERE `entity_type_code`='invoice' AND `entity_model`='sales/order_invoice';
--
-- Länge Sendungsnummern
UPDATE `eav_entity_type` SET `increment_pad_length` = '6' WHERE `entity_type_code`='shipment' AND `entity_model`='sales/order_shipment';
--
-- ** Startwerte aendern **
--
-- Startwert Kundennummern
UPDATE `eav_entity_store`,`eav_entity_type` SET `increment_last_id` = '50000',`increment_prefix`='' WHERE `eav_entity_store`.`entity_type_id`=`eav_entity_type`.`entity_type_id` AND `entity_type_code`='customer' AND `entity_model`='customer/customer';
--
-- Startwert Bestellnummern
UPDATE `eav_entity_store`,`eav_entity_type` SET `increment_last_id` = '50000',`increment_prefix`='' WHERE `eav_entity_store`.`entity_type_id`=`eav_entity_type`.`entity_type_id` AND `entity_type_code`='order' AND `entity_model`='sales/order';
--
-- Startwert Rechnungsnummern
UPDATE `eav_entity_store`,`eav_entity_type` SET `increment_last_id` = '50000',`increment_prefix`='' WHERE `eav_entity_store`.`entity_type_id`=`eav_entity_type`.`entity_type_id` AND `entity_type_code`='invoice' AND `entity_model`='sales/order_invoice';
--
-- Startwert Sendungsnummern
UPDATE `eav_entity_store`,`eav_entity_type` SET `increment_last_id` = '50000',`increment_prefix`='' WHERE `eav_entity_store`.`entity_type_id`=`eav_entity_type`.`entity_type_id` AND `entity_type_code`='shipment' AND `entity_model`='sales/order_shipment';
--
[/sourcecode]
Um das Script an die jeweiligen eigenen Gegebenheiten anzupassen muss die Wertezuweisung (zwischen dem SET und der WHERE Teil) geändert werden. Im Fall der Längendefinitionen heisst das Feld increment_pad_length und im Fall der Startwerte heisst es increment_last_id. Weiterhin kann man über das Feld increment_prefix jedem Nummernkreis noch ein statisches Prefix (darf auch eine beliebige Zeichenkette sein nicht nur Zahlen) hinzufügen
Hinweis:
Die beschreibenen Methoden wurden mit der Magento Version 1.3.2.4 getestet, sollte es bei zukünftigen Versionen Probleme damit geben, hinterlasst bitte einen kurzen Kommentar.
Links
http://www.perfect-knowhow.de/blog/archives/Magento-Kundenummer-und-Bestellnummer-aendern
http://legacy.blogtabs.de/2009/03/22/nummernkreislufe-in-magento-anpassen
Das OpenSource Shop System Magento sticht besonders durch seinen Featurereichtum vor und macht durch auch alt etablierten kommerziellen Shop-Systemen ernsthaft Konkurrenz. Zudem ist das Administrationsinterface klar gegliedert und erlaubt weitesgehend Zugriff auf alle Funktionen und Einstellen.
Eine Sache scheinen die Entwickler bislang vergessen zu haben, welche besonders auffällt wenn man einen bestehenden Shop von einen anderen System zu Magento migrieren muss. Sobald eine Rechnung erstellt wird, wird von Magento automatisch eine fortlaufende Nummer erzeugt. Soweit werden schon mal die deutschen gesetzlichen Vorgaben an eine ordentliche Vergabe von Rechnungsnummern erfüllt. Allerdings hat ein Administrator leider keinerlei Möglichkeit die Rechnungsstartnummer nach Installation des Systems im Administrationmenu zu konfigurieren. Zudem sind die Rechnungsnummer immer automatisch 8-stellig und daher lautet die erste vergebene Nummer immer 10000001.
Weiterlesen »
Aktuelle Kommentare