[GXMAIN-2929] Autofill der Browser - PLZ und ORT vertauscht

Thema wurde von Dennis (MotivMonster.de), 4. März 2013 erstellt.

  1. wölfin

    wölfin Erfahrener Benutzer

    Registriert seit:
    16. Juni 2011
    Beiträge:
    173
    Danke erhalten:
    5
    Danke vergeben:
    38
    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? .
     
  2. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.948
    Danke erhalten:
    6.089
    Danke vergeben:
    1.078
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    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.
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    10. August 2012
    Beiträge:
    1.554
    Danke erhalten:
    455
    Danke vergeben:
    96
    Es gibt tatsächlich auch Adressen ohne Hausnummer, bitte nicht als Pflichtfeld ^^
     
  4. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.948
    Danke erhalten:
    6.089
    Danke vergeben:
    1.078
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    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.
     
  5. wölfin

    wölfin Erfahrener Benutzer

    Registriert seit:
    16. Juni 2011
    Beiträge:
    173
    Danke erhalten:
    5
    Danke vergeben:
    38
    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.
     
  6. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    10. August 2012
    Beiträge:
    1.554
    Danke erhalten:
    455
    Danke vergeben:
    96
    Ja, Barbara hatte mal als Beispiel Berlin - Marienfelde, Straße 478 gepostet.
     
  7. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    30.948
    Danke erhalten:
    6.089
    Danke vergeben:
    1.078
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    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).
     
  8. wölfin

    wölfin Erfahrener Benutzer

    Registriert seit:
    16. Juni 2011
    Beiträge:
    173
    Danke erhalten:
    5
    Danke vergeben:
    38
    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.
     
  9. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.675
    Danke erhalten:
    878
    Danke vergeben:
    288
    Ich versuche mal im Laufe des Tages eine Lösung zu posten. Läuft bei mir problemlos.
     
  10. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.675
    Danke erhalten:
    878
    Danke vergeben:
    288
    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.
     
  11. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.675
    Danke erhalten:
    878
    Danke vergeben:
    288
    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');
     
  12. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    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.
     
  13. wölfin

    wölfin Erfahrener Benutzer

    Registriert seit:
    16. Juni 2011
    Beiträge:
    173
    Danke erhalten:
    5
    Danke vergeben:
    38
    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?
     
  14. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    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.
     
  15. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.675
    Danke erhalten:
    878
    Danke vergeben:
    288
    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?
     
  16. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    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.
     
  17. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.675
    Danke erhalten:
    878
    Danke vergeben:
    288
    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...
     
  18. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.675
    Danke erhalten:
    878
    Danke vergeben:
    288
    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!
     
  19. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Ups, ja, die anderen Daten hatte ich richtig eingetragen, deshalb ist mir das nicht aufgefallen :eek:
    Dann ist zumindest der Grundstein gelegt.
    Ich teste mal kurz was.
     
  20. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.675
    Danke erhalten:
    878
    Danke vergeben:
    288
    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)