Wir haben das Problem mit den vertauschten Einträgen jetzt auch. Bei Anbindung an eine Wawi wird es da auch Probleme geben. Wir haben im Moment noch v2.0.15.1 r13109 im Einsatz. Ist in der neuesten Version die Kontrolle eingebaut? .
Ja, und die Hausnummer müsste abgedrennt als extra Feld sein und Pflichtfeld - da wir min. 1 mal im Monat einen Vollpfosten haben der seine Hausnummer nicht beischreibt und sich dann wundert das Paket nicht ankommt.
In Deutschland? - Reicht ja wenns ne Option ist - aber die Online-Label erstellung will ne Hausnummer - ohne erstellt er mir kein Label und dann rennst den Kunden hinterher, die antworten nie weil sie ihre Mail nicht lesen, und dann jammern sie weil sie Paket nicht bekommen.
Dennis, hast Du schon die neueste Version von Gambio GX2? Eine Einarbeitung der Kontrolle war ja von Gambio angekündigt worden. Deshalb meine Frage, ob es jetzt schon drin ist.
Wir haben 2.1.1.x bisher keine PLZ Ort verdreher mehr aber Hausnummer is noch imer ein Problem das wir rel. oft haben. (Abgestehen von den Leuten die ihre eigene Straße oder PLZ nicht richtig schreiben können. Da wäre dann nach eingabe PLZ so ne ORT Vorselektierung schön das die autom. sofort online geprüft werden und vervollständigt. (Gibts ja auf manchen Websites schon).
Dann werden wir wohl doch in den sauren Apfel beißen und auf 2.1. aufrüsten müssen. Ich habe da noch so meine Bedenken, ob ich die Stellen, an denen ich im Code geändert habe, alle noch wiederfinde. Es hat sich ja doch wohl ab 2.1. vieles in der Programmierung geändert.
Das kann man ganz einfach machen. Einfach prüfen ob eine Zahl im String vorkommt. Reicht für 99% aller Fälle aus. Die paar Sonderfälle ohne Hausnummer können entweder anrufen oder eine 0 reinschreiben.
Suche in den folgenden Dateien: address_book_process.php checkout_payment_address.php create_account.php create_guest_account.php diese Zeile: PHP: if (strlen($street_address) < ENTRY_STREET_ADDRESS_MIN_LENGTH) { Davor einfügen: PHP: // #### BOM Auf Hausnummer prüfen ### if (reset(array_filter(str_split($street_address), 'ctype_digit')) == '') { $error = true; $smarty->assign('error_street', ENTRY_HOUSE_NUMBER_ERROR); $messageStack->add('create_account', ENTRY_STREET_ADDRESS_ERROR); } // #### EOM ##### In der /lang/german.php folgendes einfügen: PHP: define('ENTRY_HOUSE_NUMBER_ERROR','Sie haben keine Hausnummer eingegeben');
Du brauchst eine Shop-Paket in Deiner Version und winmerge, dann kannst Du die Dateien vergleichen. Ist zwar eine endlose Klickerei, aber man findet seine Anpassungen und kann diese gleich Dokumentieren. Und winmerge lässt sich so einstellen, dass nur die unterschiedlichen Dateien angezeigt werden.
So richtig habe ich das noch nicht verstanden. Bisher habe ich das Update-Paket genommen und die von mir geänderten Dateien mit denen aus dem Update-Paket mit Hilfe von winmerge verglichen und geändert. Dokumentiert in der Datei und in einer Worddatei habe ich die Änderungen auch. Das hilft mir aber nicht, wenn die Dateien, die ich geändert habe, nicht mehr an der Stelle sind, wie gewohnt oder umprogrammiert wurden. Manches ist ja vielleicht jetzt auch als Standard schon drin, was ich früher mal zufügen musste. Bsp: Sollte mal die Anzeige der Artikelnummern standardmäßig ein- oder ausgeschaltet werden können, brauchte ich das nicht mehr einarbeiten. Wie merke ich sowas? Lest Ihr erst alle Changelogs, auch von den Versionen, die man überspringen kann?
Dann habe ich Dich falsch verstanden. Ich dachte Du wüsstest nicht wo Du was geändert hast Mach das Update im Testshop, dann kannst Du alles ausprobieren und Dir ansehen.
Ich habe das nun mal für 2.1. angepasst: In /system/classes/accounts/CreateAccountContentControl.inc.php folgendes suchen: [ PHP: if(strlen_wrapper($this->customer_data_array['city']) < ENTRY_CITY_MIN_LENGTH) ] Davor folgendes einfügen: PHP: // #### BOM Auf Hausnummer prüfen ### if (reset(array_filter(str_split($this->customer_data_array['street_address']), 'ctype_digit')) == '') { $this->error = true; $this->error_array['error_street'] = sprintf(ENTRY_HOUSE_NUMBER_ERROR); } // #### EOM ##### // BOM PLZ-Check Postleitzahl auf Gültigkeit prüfen (numerisch oder nicht?) // 14 = Österreich // 21 = Belgien // 73 = Frankreich // 81 = Deutschland // 122 = Liechtenstein // 124 = Luxemburg // 204 = Schweiz if ($this->customer_data_array['country'] == 81 or $this->customer_data_array['country'] == 73 or $this->customer_data_array['country'] == 14 or $this->customer_data_array['country'] == 124 or $this->customer_data_array['country'] == 21 or $this->customer_data_array['country'] == 204 or $this->customer_data_array['country'] == 122 ) { if (is_numeric($this->customer_data_array['postcode']) == false) { $this->error = true; $this->error_array['error_post_code'] = sprintf(ENTRY_POST_CODE_ERROR2); } } // EOM PLZ-Check ] Die Sprachkostanten wie bisher anlegen. Jetzt die Gretchenfrage: Wie kann man das updatesicher anlegen?
Könntest Du das mal testen? Leg im Verzeichnis user_classes/ overloads/ einen Ordner CreateAccountContentControl an und erstelle darin eine Datei post_CreateAccountContentControl.inc.php mit diesem Inhalt: PHP: <?php/* -------------------------------------------------------------- CreateAccountContentControl.inc.php 2014-09-14 gm Gambio GmbH http://www.gambio.de Copyright (c) 2014 Gambio GmbH Released under the GNU General Public License (Version 2) [http://www.gnu.org/licenses/gpl-2.0.html] -------------------------------------------------------------- ---------------------------------------------------------------------------------------*/class post_CreateAccountContentControl extends post_CreateAccountContentControl_parent{ protected function validate_customer_data() { // #### BOM Auf Hausnummer prüfen ### if (reset(array_filter(str_split($this->customer_data_array['street_address']), 'ctype_digit')) == '') { $this->error = true; $this->error_array['error_street'] = sprintf(ENTRY_HOUSE_NUMBER_ERROR); } // #### EOM ##### // BOM PLZ-Check Postleitzahl auf Gültigkeit prüfen (numerisch oder nicht?) // 14 = Österreich // 21 = Belgien // 73 = Frankreich // 81 = Deutschland // 122 = Liechtenstein // 124 = Luxemburg // 204 = Schweiz if ($this->customer_data_array['country'] == 81 or $this->customer_data_array['country'] == 73 or $this->customer_data_array['country'] == 14 or $this->customer_data_array['country'] == 124 or $this->customer_data_array['country'] == 21 or $this->customer_data_array['country'] == 204 or $this->customer_data_array['country'] == 122 ) { if (is_numeric($this->customer_data_array['postcode']) == false) { $this->error = true; $this->error_array['error_post_code'] = sprintf(ENTRY_POST_CODE_ERROR2); } } // EOM PLZ-Check }} Das scheint zu funktionieren.
Aua... jein, das funktioniert aber zu gut. Wenn PLZ und Hausnummer stimmen, wird kein Check der anderen Felder mehr ausgeführt. Man kann ohne Passwort und ohne sonstige Eingaben ein Konto anlegen. Sogar ohne eMail-Adresse...
So geht es richtig: PHP: <?php/* -------------------------------------------------------------- CreateAccountContentControl.inc.php 2014-09-14 gm Gambio GmbH http://www.gambio.de Copyright (c) 2014 Gambio GmbH Released under the GNU General Public License (Version 2) [http://www.gnu.org/licenses/gpl-2.0.html] -------------------------------------------------------------- ---------------------------------------------------------------------------------------*/class post_CreateAccountContentControl extends post_CreateAccountContentControl_parent{ function validate_customer_data() { parent::validate_customer_data(); // #### BOM Auf Hausnummer prüfen ### if (reset(array_filter(str_split($this->customer_data_array['street_address']), 'ctype_digit')) == '') { $this->error = true; $this->error_array['error_street'] = sprintf(ENTRY_HOUSE_NUMBER_ERROR); } // #### EOM ##### // BOM PLZ-Check Postleitzahl auf Gültigkeit prüfen (numerisch oder nicht?) // 14 = Österreich // 21 = Belgien // 73 = Frankreich // 81 = Deutschland // 122 = Liechtenstein // 124 = Luxemburg // 204 = Schweiz if ($this->customer_data_array['country'] == 81 or $this->customer_data_array['country'] == 73 or $this->customer_data_array['country'] == 14 or $this->customer_data_array['country'] == 124 or $this->customer_data_array['country'] == 21 or $this->customer_data_array['country'] == 204 or $this->customer_data_array['country'] == 122 ) { if (is_numeric($this->customer_data_array['postcode']) == false) { $this->error = true; $this->error_array['error_post_code'] = sprintf(ENTRY_POST_CODE_ERROR2); } } // EOM PLZ-Check } Danke!
Ups, ja, die anderen Daten hatte ich richtig eingetragen, deshalb ist mir das nicht aufgefallen Dann ist zumindest der Grundstein gelegt. Ich teste mal kurz was.
Eine Idee wie man die PLZ jetzt noch elegant auf die erforderliche Länge testen kann? DE=5 FR=5 AT=4 BE=4 LU=4 CH=4 LI=4 (9485-9498)