Commerce Bestell-/Kundennummer

am 29.03.2012 - 12:22 Uhr in
Hi,
Ich bin gerade dabei meinen ersten Drupal Commerce Shop einzurichten, alle Module sind aktuell
Wir würden die Kunden- und Bestellnummern gerne etwas an unsere Bedürfnisse anpassen.
Ich hab dazu hier schon mal was geschrieben http://www.drupalcommerce.org/node/180#comment-3716 aber da wurde schon länger nicht drauf reagiert.
Also die Kundennummern sollten ungefähr so aussehen: ArtDesKunden-EindeutigeID, wir würden gerne zwischen Endkunden und Händler unterscheiden können. Die EindeutigeID sollte immer bei 1 anfangen. Also als Bsp., der erste Endkunde bekommt die ID 1-0001, der erste Händler die 2-0001
Die Bestellnummer soll dann also Präfix die Kundennummer bekommen und danach eine eindeutige Zahl, also die erste Bestellung des ersten Endkunden wäre demnach 1-0001-0001 und dem entsprechend die des ersten Händlers 2-0001-0001.
Im Prinzip also Präfixe zur derzetigen ID, allerdings wäre diese Trennung noch super, da derzeit diese ID gleichbleibend steigt und nicht zwischen zwei verschiedenen Kunden unterscheiden kann.
Ich hoffe ich habe mich einigermaßen verständlich erklärt.
Ich bin über jeden Tipp dankbar
- Anmelden oder Registrieren um Kommentare zu schreiben
Mit Rules sollte das gehen
am 29.03.2012 - 12:34 Uhr
Mit Rules kann man das Event "vor dem Speichern" abfangen, und noch Änderungen durchführen.
Allerdings kann es sein, dass man für diesen Zweck eigene Felder nutzen muss, weil die gewünschte Bezeichnung nicht nummerisch ist.
Danke für die schnelle
am 29.03.2012 - 12:41 Uhr
Danke für die schnelle Antwort :)
Bin jetzt erst du Commerce auf D7 umgestiegen und hab bei D6 nie wirklich mit rules oder so gearbeitet.
"weil die gewünschte Bezeichnung nicht nummerisch ist"
wegen den Bindestrichen, oder was meinst du?
Vielleicht sollte ich mich mal mit Rules auseinander setzen :-)
Wenn du da noch einen passenden Tipp hast wär das natürlich super.
es lohnt sich
am 29.03.2012 - 12:51 Uhr
die Videos von nodeone.se anzusehen.
Gerade Rules und Views machen viel möglich, wo man immer glaubte, ein eigenes Modul müsse her.
Danke dir! Werde ich mir
am 29.03.2012 - 13:05 Uhr
Danke dir! Werde ich mir gleich mal annehmen.
Views habe ich schon in D6 lieben gelernt, muss mich nur bisschen mit der neuen Oberfläche anfreunden aber grundsätzlich weiß ich um die Macht von Views :D
Also werd jetzt erst mal die Screencasts angucken und dann sehen wie weit ich komme :)
Also ich hab mir auch mal das
am 03.04.2012 - 16:00 Uhr
Also ich hab mir auch mal das Computed Field angeguckt, wär evtl auch eine möglichkeit.
Letztendlich habe ich jetzt zumindest die Kundennummer per Rules gelöst.
Ein neues Benutzerfeld "Kundennummer" angelegt und per hook_form_alter auf readonly gesetzt.
Die Rule wird erst bei einer Bestellung ausgelöst und natürlich nur wenn das Feld leer ist.
Dann setzt sie mein Prefix + UID
Was mich daran stört ist, dass bei mir z.B die Kundennummer 4-1 ist.
Wie kann ich vor die ID 3 Nullen setzen bzw wenn die ID 10 ist natürlich nur noch 2.
Oder hat jemand einen Tipp für mich wie ich statt der UID einen eigenen "Zähler" da hin bekomme?
Somit wär auch wirklich sichergestellt dass der erste Kunde z.B. 4-0001 bekommt
und zwischendurch, sollte sich jemand einfach so anmelden ohne zu kaufen nicht bei den Kundenummern mitgezählt wird.
in einem nummerischen Feld
am 04.04.2012 - 15:40 Uhr
werden führende Nullen meist unterdrückt.
Mit einem passenden Textformat müsste das behebbar sein.
Danke dir, also die
am 18.04.2012 - 16:28 Uhr
Danke dir, also die Kundennummer habe ich jetzt soweit erst mal eingerichtet.
Wobei ich sie gerne noch unabhängig von der UID hätte, aber erst mal sollte es so reichen.
Habe gerade noch ein anderes Problem mit der UID festgestellt.
Wenn ich das richtig sehe funktioniert das bei Gästen die zum ersten Mal bestellen nicht, da sie noch gar keine UID haben,
dem nach bleibt das Feld leer.
Obwohl, ich habe ja als Wert "4-[commerce-order:uid]" in der Rule, müsste dann nicht zumindest die "4-" dort eingetragen werden?
Also wenn ich als Admin eingeloggt bin funktioniert es?!
Als Condition habe ich Data value is empty um zu prüfen dass dort nicht schon eine Kundennummer eingetragen wurde.
Wobei liegt hier das Problem bei der UID? Oder würde es so oder so nicht klappen?
Eventuell erstelle ich noch eine Rule die bei einem Neuen User prüft ob eine Bestellung existiert oder so und trägt dann eine Kundennummer ein.
*EDIT:
Also mit einer weiteren Rule "After saving new user account" klappt es zwar, allerdings bekommt somit jeder neue Benutzer eine Kundennummer, da ich scheinbar nicht prüfen kann ob dieser Nutzer bereits bestellt hat. Oder habe ich was übersehen? Kenne mich mit Rules noch nicht soo gut aus.
Achja
werden führende Nullen meist unterdrückt.
Mit einem passenden Textformat müsste das behebbar sein.
Versteh ich nicht ganz, denn ich habe ja gar keine Nullen, wie gesagt die Zahl besteht aus einem Prefix (4-) und der UID.
Toll wäre es wenn ich sagen könnte diese Zahl soll 6 Stellig sein und ggf. führende Nullen anzeigen.
Du hättest gerne führende Nullen
am 18.04.2012 - 21:26 Uhr
die werden aber nur in Textformaten oder in der Politik unterstützt.
Da du aber eh' Bindestriche in der Kundennummer hast, ist es eh' ein Textformat.
Du musst es also so behandeln, wie eine Postleitzahl oder eine Telefonnummer.
Wenn ein Teil nicht funktioniert, führt das zum Abbruch, außer du fängst den Fehler (keine UID) ab.
Aber, um eine Kundennummer anlegen zu können, brauchst du eine UID.
Eine Bestellung ohne Registrierung ist auch sonst wenig sinnvoll. Du bruachst schließlich auch die Anschrift und eventuell weitere Informationen von Deinem Kunden.
Spätestens wenn dieser die Bestellung abschließt, musst du ihn registrieren.
Das regelt Commerce
am 19.04.2012 - 10:37 Uhr
Das regelt Commerce unabhängig von registrierten Benutzern, das heißt die Registrierung ist nicht zwingend notwendig.
Allerdings können natürlich nur angemeldete Nutzer ihre bisherigen Bestellungen einsehen.
Erst mal muss ich mich aber um einige andere Dinge kümmern, Rechnungsversand etc. wenn das alles steht kümmer ich mich noch mal um die Kunden- und Bestellnummer.