Purecut Posted June 13, 2006 Report Share Posted June 13, 2006 Weil's so sch?n billig ist hier ein Mod um Kundennummern bei Neuanlage eines Kunden automatische generieren zu lassen. Es muss zuvor ein Kunde mit der Kundennummer 1000 bereits vorhanden sein. Ansonsten eine h?here Kundennummer als Startwert nehmen. Es geht nur mit Zahlen. Also als Startwert KEINE ZAHLEN und ZIFFERN verwenden. Nur Zahlen! Zwei Daten m?ssen modifiziert werden: create_account.php /admin/create_account.php Man suche in den o.g. Dateien diese Zeile: xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array); und schreibe DAVOR: // Modifikation Automatisch Kundennummer fortlaufend anlegen: $start_cid = 1000; $cid_query = xtc_db_query("SELECT MAX(customers_cid) AS maxnr FROM ".TABLE_CUSTOMERS); $cid = xtc_db_fetch_array($cid_query); if($cid['maxnr']){ $start_cid = $cid['maxnr']+1; } $sql_data_array['customers_cid'] = $start_cid; // Modifikation Kundennummer Ende Wer den Startwert der Kundennummer ?ndern m?chte, den entsprechenden Wert hier ab?ndern: $start_cid = 1000; Getestet mit org. Dateien von 3.04SP1 Viel Spa Link to comment Share on other sites More sharing options...
sw-pc Posted June 17, 2006 Report Share Posted June 17, 2006 Gutes Ding. Habe es jetzt mal bei XTC2 eingesetzt, funktioniert soweit auch nur haben jetzt alle Kunden die sich neuanmelden die KNummer 10. Wenn ich mich jetzt anmelden w?rde h?tte ich auch die 10. Was k?nnte das sein? Link to comment Share on other sites More sharing options...
edv-systeme Posted July 10, 2006 Report Share Posted July 10, 2006 <div class='quotetop'>QUOTE(sw-pc @ Jun 17 2006, 05:38 PM) Quoted post</div><div class='quotemain'> Gutes Ding. Habe es jetzt mal bei XTC2 eingesetzt, funktioniert soweit auch nur haben jetzt alle Kunden die sich neuanmelden die KNummer 10. Wenn ich mich jetzt anmelden w?rde h?tte ich auch die 10. Was k?nnte das sein? Link to comment Share on other sites More sharing options...
Guest thuhn01 Posted August 8, 2006 Report Share Posted August 8, 2006 das gleiche problem habe ich nun auch .. alle angemeldetet haben nun kdNr. 10 ?!?!? Wer das für XTC 3.0.4 SP1 haben möchte kann sich melden. Möglich sind bspw. Kundennummern in der Form: K06-1022 [beliebige Zeichen][Jahr][beliebige Zeichen][fortlaufende Zahl] Link to comment Share on other sites More sharing options...
SchiDieRSS Posted August 16, 2006 Report Share Posted August 16, 2006 Weil's so sch?n billig ist hier ein Mod um Kundennummern bei Neuanlage eines Kunden automatische generieren zu lassen. Es muss zuvor ein Kunde mit der Kundennummer 1000 bereits vorhanden sein. Ansonsten eine h?here Kundennummer als Startwert nehmen. Es geht nur mit Zahlen. Also als Startwert KEINE ZAHLEN und ZIFFERN verwenden. Nur Zahlen! Zwei Daten m?ssen modifiziert werden: create_account.php /admin/create_account.php Man suche in den o.g. Dateien diese Zeile: xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array); und schreibe DAVOR: // Modifikation Automatisch Kundennummer fortlaufend anlegen: $start_cid = 1000; $cid_query = xtc_db_query("SELECT MAX(customers_cid) AS maxnr FROM ".TABLE_CUSTOMERS); $cid = xtc_db_fetch_array($cid_query); if($cid['maxnr']){ $start_cid = $cid['maxnr']+1; } $sql_data_array['customers_cid'] = $start_cid; // Modifikation Kundennummer Ende Wer den Startwert der Kundennummer ?ndern m?chte, den entsprechenden Wert hier ab?ndern: Getestet mit org. Dateien von 3.04SP1 Viel Spa Das funktioniert aber nur, wenn kein Kunde mit der Kundennummer 2 oder 3 oder 4 etc. vorhanden ist, also nur, wenn man vorher noch nie eine Kundennummer vergeben hat. Grund: Das Feld 'customers_cid' ist alphanumerisch und bei einem alphanumerischesr Vergleich ist "9" gößer als "1000". Ein kleiner Trick schafft hier Abhilfe: $cid_query = xtc_db_query("SELECT MAX(customers_cid / 1) AS maxnr FROM ".TABLE_CUSTOMERS); $cid = xtc_db_fetch_array($cid_query); Das an sich unsinnige Teilen der CID durch 1 hat zur Folge, dass der Vergleich numerisch erfolgt. Dann funktioniert das auch, wenn vorher bereits Kundennummern vergeben waren. Allerdings natürlich NICHT, wenn die Kundennummern alpha-Bestandteile drin hatten Grüße Dieter http://www.rasiererundmehr.de Link to comment Share on other sites More sharing options...
Nexxus Posted August 16, 2006 Report Share Posted August 16, 2006 funktioniert die Kundennummernvergabe auch mit 3.0.3 ? Hab es probeweise getestet, doch das Kundennummernfeld ist nach der Anmeldung leer! Link to comment Share on other sites More sharing options...
MarcB Posted October 14, 2006 Report Share Posted October 14, 2006 Wer das für XTC 3.0.4 SP1 haben möchte kann sich melden. Möglich sind bspw. Kundennummern in der Form: K06-1022 [beliebige Zeichen][Jahr][beliebige Zeichen][fortlaufende Zahl] Wer hat diese Erweiterung bzw. kann mir sagen wo ich die finden kann ? Gruß Marc Link to comment Share on other sites More sharing options...
Knipser Posted October 15, 2006 Report Share Posted October 15, 2006 Weil's so sch?n billig ist hier ein Mod um Kundennummern bei Neuanlage eines Kunden automatische generieren zu lassen. Es muss zuvor ein Kunde mit der Kundennummer 1000 bereits vorhanden sein. Ansonsten eine h?here Kundennummer als Startwert nehmen. Es geht nur mit Zahlen. Also als Startwert KEINE ZAHLEN und ZIFFERN verwenden. Nur Zahlen! Zwei Daten m?ssen modifiziert werden: create_account.php /admin/create_account.php Man suche in den o.g. Dateien diese Zeile: xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array); und schreibe DAVOR: // Modifikation Automatisch Kundennummer fortlaufend anlegen: $start_cid = 1000; $cid_query = xtc_db_query("SELECT MAX(customers_cid) AS maxnr FROM ".TABLE_CUSTOMERS); $cid = xtc_db_fetch_array($cid_query); if($cid['maxnr']){ $start_cid = $cid['maxnr']+1; } $sql_data_array['customers_cid'] = $start_cid; // Modifikation Kundennummer Ende Wer den Startwert der Kundennummer ?ndern m?chte, den entsprechenden Wert hier ab?ndern: Getestet mit org. Dateien von 3.04SP1 --------------------------------------- Ohhhh man, genau das was ich suche... grins habe gerade v3.0.4 SP2.1 aufgesetzt. Funktioniert die Lösung in dieser Version? Herzlichen Dank im Voraus. Knipser Link to comment Share on other sites More sharing options...
Knipser Posted October 16, 2006 Report Share Posted October 16, 2006 Wer das für XTC 3.0.4 SP1 haben möchte kann sich melden. Möglich sind bspw. Kundennummern in der Form: K06-1022 [beliebige Zeichen][Jahr][beliebige Zeichen][fortlaufende Zahl] ja, das hätte ich gerne. wie kann ich den Code bekommen? Herzlichen Dank im Voraus Knipser Link to comment Share on other sites More sharing options...
hawkai Posted October 25, 2006 Report Share Posted October 25, 2006 Wer das für XTC 3.0.4 SP1 haben möchte kann sich melden. Möglich sind bspw. Kundennummern in der Form: K06-1022 [beliebige Zeichen][Jahr][beliebige Zeichen][fortlaufende Zahl] Genau das habe ich gesucht. Wie kann ich es bekommen, ist es schwer zu integrieren? Danke, Gruß - Kai Link to comment Share on other sites More sharing options...
MarcB Posted October 26, 2006 Report Share Posted October 26, 2006 Genau das habe ich gesucht. Wie kann ich es bekommen, ist es schwer zu integrieren? Danke, Gruß - Kai Hat anscheindend niemand mehr Link to comment Share on other sites More sharing options...
x-twin Posted November 6, 2006 Report Share Posted November 6, 2006 Würde mich auch interessieren (ich habe 3.0.4sp2) Ich habe bis jetzt keine Kundennummern. Keine einzige. Was ich bis jetzt gemacht habe: 1) Tabelle CUSTOMERS über phymyadmin exportiert in eine TXT-Datei 2) TXT-Datei in Excel geöffnet und in Tabellenformat umgewandelt (,) 3) Erste Zelle des Feldes CUSTOMERS_CID mit 1000 gefüllt 4) Mit der Maus runtergefahren bis Zeile 810 (meine letzten) 5) "nach unten ausfüllen", der letzte Eintrag hatte dann 1810 im Feld CUSTOMERS_CID 6) Datei speichern als CSV 7) Datei in phpmyadmin importieren in die Tabelle CUSTOMERS Das klappte alles, ich kann mich nach wie vor anmelden und alle Kunden haben eine Kundennummer. Nun kommt der Code leicht modifiziert von mir, ich brauche ja keine start_cid mehr, da nun jede Adresse bereits eine Kundennummer hat. Zwei Daten müssen modifiziert werden: create_account.php und /admin/create_account.php Man suche in den o.g. Dateien diese Zeile und schreibe DAVOR: xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array); $cid_query = xtc_db_query("SELECT MAX(customers_cid) AS maxnr FROM ".TABLE_CUSTOMERS); $cid = xtc_db_fetch_array($cid_query); $new_cid = $cid['maxnr']+1; $sql_data_array['customers_cid'] = $new_cid; [/php] Scheint für mich nachvollziehbar und klappt Link to comment Share on other sites More sharing options...
jimpi Posted November 24, 2006 Report Share Posted November 24, 2006 Hat anscheindend niemand mehr in der datei create_account.php nach Zeile: include ('includes/application_top.php'); einfügen: require_once (DIR_FS_INC.'xtc_random_charcode.inc.php'); require_once (DIR_FS_INC.'xtc_rand.inc.php'); function new_customer_id($space='-'){ $new_cid=''; $start_cid = 1500; $char = xtc_random_charcode(2); $year = date("y"); $cid_query = xtc_db_query("SELECT customers_cid FROM ".TABLE_CUSTOMERS." ORDER BY customers_date_added DESC LIMIT 1"); $last_cid = xtc_db_fetch_array($cid_query); $arr_cid = explode($space,$last_cid['customers_cid']); if($arr_cid[1] ? $new_cid = $char . $year . $space . ($arr_cid[1]+1) : $new_cid = $char . $year . $space . $start_cid); return $new_cid; } [/php] und VOR der Zeile xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array); einfügen [php] //Automatisch Kundennummer fortlaufend anlegen: $sql_data_array['customers_cid'] = new_customer_id(); Gibt folgendes aus: [zufällige Zeichen][Jahr][beliebige Zeichen][fortlaufende Zahl] getestet mit v3.0.4 SP2.1 Link to comment Share on other sites More sharing options...
MarcB Posted November 25, 2006 Report Share Posted November 25, 2006 @ jimpi: erstmal vielen Dank für den Tip ! Aber zwei Fragen hab ich noch dazu. Wie oder wo kann ich die beliebigen Zeichen vorgeben bzw. kann ich die zufälligen Zeichen irgendwie rausnehmen ? Gruß Marc €dit: also ersteres ist denke ich mal das hier function new_customer_id($space='-') oder ? €dit2: gut hat sich erledigt ich hab´s gefunden. Einfach das $char = xtc_random_charcode(2); und das $char . bei ? $new_cid = und bei : $new_cid = rausnehmen und die zufälligen Zeichen sind Geschichte. Also nochmals danke für Deinen Tip ;-) Link to comment Share on other sites More sharing options...
eurotic Posted November 26, 2006 Report Share Posted November 26, 2006 Wer alpha-numerische Kundennummern verwendet (natürlich muss mindestens das letzte Zeichen eine Ziffer sein), also z.B. 'KD15015', fügt in den Dateien create_account.php und /admin/create_account.php VOR der Zeile: xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array); folgendes ein: $cid_query = xtc_db_query("SELECT MAX(customers_cid) AS maxnr FROM ".TABLE_CUSTOMERS); $cid = xtc_db_fetch_array($cid_query); if (preg_match("/(\D)/i", $cid['maxnr'])) { $suchmuster = '/(.*\D)(\d+)$/i'; $ersetzung = '${1}'; $cid_start_alpha_num = preg_replace($suchmuster, $ersetzung, $cid['maxnr']); $ersetzung = '${2}'; $cid_end_num = preg_replace($suchmuster, $ersetzung, $cid['maxnr']); $cid_end_num++; $new_cid = $cid_start_alpha_num.$cid_end_num; } else $new_cid = $cid['maxnr']+1; $sql_data_array['customers_cid'] = $new_cid; [/php] Zu beachten ist, dass diese Lösung bei Variationen von Buchstabenpräfixen (z.B. 'END' für Endkunden und 'HAENDLER' für Geschäftskunden) nicht funktioniert. In diesem Fall müsste noch nach der Benutzergruppe unterschieden werden. Bei Bedarf, einfach melden. Link to comment Share on other sites More sharing options...
scooter-paradise Posted January 5, 2007 Report Share Posted January 5, 2007 Hab es gemacht ... wo werden jetzt die Kundennummern angezeigt? Auf den Rechnungen schonmal nicht ... bzw. wo müssten sie angezeigt werden? Link to comment Share on other sites More sharing options...
fitforbike Posted January 12, 2007 Report Share Posted January 12, 2007 Hallo Zusammen, haben folgenden Code eingetragen: require_once (DIR_FS_INC.'xtc_random_charcode.inc.php'); require_once (DIR_FS_INC.'xtc_rand.inc.php'); function new_customer_id($space='OC'){ $new_cid=''; $start_cid = 24160; $char = date("m"); $year = date("y"); $cid_query = xtc_db_query("SELECT customers_cid FROM ".TABLE_CUSTOMERS." ORDER BY customers_date_added DESC LIMIT 1"); $last_cid = xtc_db_fetch_array($cid_query); $arr_cid = explode($space,$last_cid['customers_cid']); if($arr_cid[1] ? $new_cid = $space . $char . $year . ($arr_cid[1]+1) : $new_cid = $space . $char . $year . $start_cid); return $new_cid; } Dann wie folgt abgeändert, damit es so aussieht: [beliebige Zeichen][Monat][Jahr][fortlaufende Zahl] [OC][01][07][24160] ~ ~ function new_customer_id($space='HD'){ $new_cid=''; $start_cid = 1073498; $char = date("m"); $year = date("y"); $cid_query = xtc_db_query("SELECT customers_cid FROM ".TABLE_CUSTOMERS." ORDER BY customers_date_added DESC LIMIT 1"); $last_cid = xtc_db_fetch_array($cid_query); $arr_cid = explode($space,$last_cid['customers_cid']); if($arr_cid[1] ? $new_cid = $space . $char . $year . ($arr_cid[1]+1) : $new_cid = $space . $char . $year . $start_cid); ~ ~ UND NUN PASSIERT FOLGENDES: Bei jeder Neuanlage eines Kunden verfielfacht sich eine 107! 1. Neuanlage generiert OC010724150 2. Neuanlage generiert OC010710724151 3. Neuanlage generiert OC010710710724152 Kann mir jemand helfen? Gruß Link to comment Share on other sites More sharing options...
Rovert Posted January 12, 2007 Report Share Posted January 12, 2007 107 ist vom Variabel $Jahr erzeugt. Es ist das Unix Jahr und muss wie folgt deklariert werden um z.B. 2007 anzuzeigen: $Jahr = $Jahr + 1900; oder um 07 als Jahresangabe anzuzeigen $Jahr = $Jahr - 100; Damit kannst Du dann zumindest der Fehlerteufel für 107 finden - $year also. Wie Du sehen kannst ist der Jahr sowieso im $arr_cid, also im original Kundennummer und es wird danach bei jeden Neukunde hinzugefügt. Das ist das Problem. Link to comment Share on other sites More sharing options...
fitforbike Posted January 12, 2007 Report Share Posted January 12, 2007 Hallo Rovert und vielen Dank! Kannst Du mir bitte sagen was ich denn ändern muss? Ich bin nicht der Profi auf dem Gebiet. Schon jetzt herzlichen Dank für Deine Hilfe. Gruß Link to comment Share on other sites More sharing options...
Rovert Posted January 12, 2007 Report Share Posted January 12, 2007 Was Du ändern solltest?? deine php Kenntnisse! Alles was ich sagen kann ist das was Du da für einen Code hast unsinnig ist. Es nimmt immer das komplette Kundennummer und fügt zwar eine plus eins ein aber auch ein 107 für das Jahr. Logische Antwort. Nimmt das Jahr raus aus der Code. Einmal im Jahr kannst Du das Jahr ändern, manuell, dauert 2 Sekunden. Ganz davon abgesehen, dass Datumsangaben JJMMTT sortiert werden und nicht MMJJ wie Du es hast. T Link to comment Share on other sites More sharing options...
back@me Posted January 13, 2007 Report Share Posted January 13, 2007 Gute Nacht zusammen! Hi Trevor! ES FUNKTIONIERT! First of all --> Backup von der DB machen!!!! 2. Ich habe nun sämtliche Tabellen im phpMyAdmin geleert, die mit Kundendaten gefüllt waren und die mit Kundenbestellungen zu tun hatten, da mein Shop noch nicht online ist und ich somit noch nichts zu verlieren habe. Leider habe ich mir die Tabellennamen nicht aufgeschrieben, also vorsicht. Ich denke, dass es auch ausreichen würde, wenn man nur die cutomers_cid leeren würde, damit die KdNr. wieder bei der Startzahl, die man im Script vorgibt zu zählen anfangen kann. Bitte darauf achten, dass nicht der Admin Account gelöscht wird! Anschließend habe ich den aufs Neue veränderten Code auf Grundlagen von jimpi folgendermaßen integriert: in der datei create_account.php nach Zeile: include ('includes/application_top.php'); einfügen: require_once (DIR_FS_INC.'xtc_random_charcode.inc.php'); require_once (DIR_FS_INC.'xtc_rand.inc.php'); function new_customer_id($space='-'){ $new_cid=''; $start_cid = 3490; $year = date("y"); $month = date("m"); $sign = 'HD'; $cid_query = xtc_db_query("SELECT customers_cid FROM ".TABLE_CUSTOMERS." ORDER BY customers_date_added DESC LIMIT 1"); $last_cid = xtc_db_fetch_array($cid_query); $arr_cid = explode($space,$last_cid['customers_cid']); if($arr_cid[1] ? $new_cid = $sign . $month . $year . $space . ($arr_cid[1]+1) : $new_cid = $sign . $month . $year . $space . $start_cid); return $new_cid; } [/php][/font] [font=Verdana][size=2][color=red][color=red]und VOR der Zeile [/color][/color][/size][/font] [font=Verdana][size=2][color=red][color=red] xtc_db_perform(TABLE_CUSTOMERS, $sql_data_array);[/color][/color][/size][/font] [font=Verdana][size=2][color=red][color=red] einfügen[/color][/color][/size][/font] [font=Verdana][size=2][font=Verdana]//Automatisch [/font][/size][/font][b][color=black][color=windowtext]Kundennummer[/color][/color][/b][font=Verdana][font=Verdana] fortlaufend anlegen: [/font][/font] [font=Verdana][php]$sql_data_array['customers_cid'] = new_customer_id(); ------------------ Ergebnis: [$sign][ $month][ $year][$space] [$arr_cid] [beliebige Zeichen][Monat] [Jahr] [-][fortlaufende Zahl] Mein erster Kunde bekam nun die Nummer: HD0107-3490 Mein zweiter Kunde die Nummer: HD0107-3491 Der dritte: HD0107-3492 Ich hoffe, dass im Februar dann 0207... etc. in der KdNr. steht Das Problem ... war, dass die fortlaufende Nummer ($arr_cid) nicht von der Monts- und Jahreszahl (0107) klar getrennt war und somit wurde ALLES (Unix Jahr 107 [date("y")] und $arr_cid) bei jedem neuen Kunden um eins erweitert. Das Unix Jahr hat noch einen dazu genommen (+1 Jahr=107) und die fortlaufende Zahl hat auch jedesmal einen Zähler dazu genommen (+1). Da jetzt (wie im ursprünglichen Code von Jimpi) der Trennstrich ($space) zwischen [ $year] und [$arr_cid] steht, zählt nur noch die fortlaufende Nummer weiter. Anschließend habe ich noch den Code mit $sign = 'HD'; erweitet, sodass ich wieder meine variablen Zeichen einfügen kann, dass $char in $month umbenannt ... und fertig. Gruß und gute Nacht back@me Link to comment Share on other sites More sharing options...
Rovert Posted January 13, 2007 Report Share Posted January 13, 2007 Tausch Monat und Jahr um da sonst werden alle Kunden im erste Linie nach Monat sortiert - d.h. im 2008 sind die Kunden nicht mehr chronologisch auflistbar HD0107-3490 HD0107-3491 HD0107-3492 HD0108-6430 HD0108-6431 HD0108-6432 HD0207-3493 HD0207-3494 HD0207-3495 HD0208-6433 HD0208-6434 HD0208-6435 Link to comment Share on other sites More sharing options...
back@me Posted January 13, 2007 Report Share Posted January 13, 2007 Tausch Monat und Jahr um da sonst werden alle Kunden im erste Linie nach Monat sortiert - d.h. im 2008 sind die Kunden nicht mehr chronologisch auflistbar HD0107-3490 HD0107-3491 HD0107-3492 HD0108-6430 HD0108-6431 HD0108-6432 HD0207-3493 HD0207-3494 HD0207-3495 HD0208-6433 HD0208-6434 HD0208-6435 Guten Morgen Rovert ;-) das ist ein gutes Argument. Ich werde es so machen. Danke für den Tipp. EDIT: Es wird dann folgendermaßen aussehen (nur Jahr und Monat tauschen): ? $new_cid = $sign . $year . $month . $space . ($arr_cid[1]+1) : $new_cid = $sign . $year . $month . $space . $start_cid); [/php] Link to comment Share on other sites More sharing options...
fitforbike Posted January 13, 2007 Report Share Posted January 13, 2007 Herzlichen Dank für Eure Hilfe! Funktioniert ohne Einwände Link to comment Share on other sites More sharing options...
Rodent Posted January 16, 2007 Report Share Posted January 16, 2007 Vielen Dank auch von mir. Wer die Jahreszahl komßplett haben will (2007 statt 07), macht aus: $year = date("y"); ein $year = date("Y"); (grosses Y statt kleinem y) lg Alex Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.