Opened 10 years ago
Closed 10 years ago
#850 closed Bug/Fehler (fixed)
Fehler in Zusammenhang mit Bundesländern
| Reported by: | Torsten Riemer | Owned by: | somebody |
|---|---|---|---|
| Priority: | hoch | Milestone: | modified-shop-2.0.1.0 |
| Component: | Shop | Version: | 1.06 |
| Keywords: | Cc: | ||
| Blocked By: | Blocking: |
Description (last modified by )
Das folgende Problem ist bereits in 1.06 rev 4642 SP4 vorhanden und laut Kunde nur bei PHP 5.6 und nicht bei PHP 5.5 (wobei ich mir nicht vorstellen kann, dass der Fehler abhängig ist von der PHP-Version!):
Wenn "Bundesland" im Shop aktiviert ist und der Kunde beispielsweise als Land "United States" auswählt und als Bundesland "New York", dann wird das im Checkout noch alles korrekt angezeigt. Erst auf der letzten Seite bei "Druckansicht der Bestellung" wird als Bundesland in dem Fall nur noch "43" angezeigt.
Weiteres Problem in Shopversion 2.0.0.0: -> Ticket #854
Stellt man unter "Konfiguration" -> "Kundendetails" -> "Bundesland" auf "Ja" und hat aber unter "Land/Steuer" beim entsprechenden Land "Bundesländer anzeigen" auf "rot", dann wird das Bundesland-Feld bei der Registrierung zwar nicht angezeigt, aber wenn man die Registrierung abschickt, dann kommt die Meldung, dass ein Bundesland ausgewählt werden muss.
Attachments (0)
Change History (34)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
2.0.0.0
Bei mir wird das Bundeslandfeld sogar angezeigt(Responsive Template), Es ist aber leer.
Bundesländer anzeigen: ja
Germany: Bundesländer aus
comment:3 by , 10 years ago
1.06 rev 4642 SP4
New York und 43:
43 ist Zone ID
Was steht bei der Bestellung in der orders Tabelle?
comment:5 by , 10 years ago
Ich habe noch einmal in meiner Datenbank recherchiert.
Das Problem tritt schon seit dem SP3 Update auf.
In der Spalte customers_state wird das Bundesland gespeichert, in unserer Datenbank stehen dort seit dem 8.2. (der Zeitraum in dem ich das SP3 Update aufgespielt habe) abwechselnd das Bundesland korrekt aber bei vielen Bestellungen die ID Nummer vom Bundesland. Der Fehler tritt also nicht bei jeder Bestellung auf.
Ich hoffe das hilft weiter.
comment:6 by , 10 years ago
Vielleicht doch ein Problem der PHP Version da ich nach dem SP3 Update den Server auf PHP 5.6 umgestellt habe.
comment:7 by , 10 years ago
Schau mal bei den betroffenen Bestellungen die Zahlungsart an.
Welche Zahlarten sind im Shop aktiviert
"Weiteres Problem in Shopversion 2.0.0.0:" Dafür estelle ich ein eigenes Ticket -> #854
comment:8 by , 10 years ago
| Description: | modified (diff) |
|---|
comment:9 by , 10 years ago
| Description: | modified (diff) |
|---|
comment:10 by , 10 years ago
Ich hatte per "Vorkasse/Banküberweisung (moneyorder)" bestellt. Aktiviert sind die Zahlarten (Siehe Demoshop 2.00 wo ich das auch getestet hatte):
- Barzahlung (cash)
- Lastschriftverfahren (banktransfer)
- Vorkasse/Banküberweisung (moneyorder)
- Nachnahme (cod)
- Rechnung (invoice)
Den Zusammenhang zur PHP-Version sehe ich aber immer noch nicht. Wieso verhält es sich laut Rene Steckert bei PHP 5.5 richtig?
comment:11 by , 10 years ago
Fehlerursache sind falsche Einträge in der DB Tabelle address_book in der Spalte entry_state
Hier sollte der Name stehen, nicht die ID.
Fehlerursache ist also bei der Kundenanmeldung zu suchen.
Fehler bei: Neuanmeldung
Kein Fehler wenn man im Kundenkonto eine neue Adresse anlegt.
Adresse ändern, und Adressneuanlage im Checkout noch nicht getestet.
comment:12 by , 10 years ago
Korrekt kann ich bestätigen.
Der Fehler tritt auf seit mit dem SP3 folgende Einträge in der create_account.php und in der create_guest_account.php geändert wurden.
$sql_data_array['entry_state'] = '';
geändert in
$sql_data_array['entry_state'] = $state;
Da nicht definiert erfolgten in Spalte entry_state zuvor nie Einträge.
comment:14 by , 10 years ago
Nach Rücknahme der Änderung von SP3 in der create_account.php und der create_guest_account.php von
$sql_data_array['entry_state'] = $state;
in
$sql_data_array['entry_state'] = '';
erfolgt zwar in der DB Tabelle address_book in der Spalte entry_state kein Eintrag mehr, Testbestellungen wurden aber korrekt gespeichert. In der DB Tabelle orders sind jetzt in den Spalten customers_state, delivery_state und billing_state die korrekten Bundesland Einträge vorhanden. Die Adressdaten werden auch so an PayPal ausgegeben.
comment:16 by , 10 years ago
Bei 2.x wurde das etwas anders gefixt, es wurde ein $state = ; in diese Codeblöcke hinzugfügt, das sollte zum selben Ergebnis führen.
if (xtc_db_num_rows($zone_query) == 1) {
$zone = xtc_db_fetch_array($zone_query);
$zone_id = $zone['zone_id'];
$state = '';
} else {
$error = true;
$messageStack->add('create_account', ENTRY_STATE_ERROR_SELECT);
}
comment:17 by , 10 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
Auch das hier ist noch nicht behoben.
Ich habe eine Testbestellung als Kunde durchgeführt mit folgenden Daten:
Vorname: Max
Nachname: Mustermann
Straße: Musterstr. 123
Ort: New York
PLZ: 12345
Bundelasnd: New York
Land: United States
Gemäß zugeordneter address_format (ID = 2 für "United States") müsste die Aufgabe über die "print_order" auf der "checkout_success" wie folgt erfolgen:
Max Mustermann
Musterstr. 123
New York, New York 12345
United States
Es kam jedoch:
Max Mustermann
Musterstr. 123
New York, 12345
United States
Auch in der Bestellbearbeitung ist das Feld "Bundesland" komplett leer!
comment:18 by , 10 years ago
Die Deaktivierung der Einträge in der DB Tabelle address_book in der Spalte entry_state funktioniert nur bei der Version 1.06, da hier der Name des Bundeslandes bei der checkout_process noch anders als nur über diese Spalte ausgelesen wird. Bei 2.x wird aber definitiv auf diese Spalte bei der Bestellabwicklung zugegriffen.
comment:19 by , 10 years ago
Es geht etwas schief bei der Definition des Eintrages in die DB Tabelle address_book Spalte entry_state. In der Zeit als ich die aktuelle create_account.php und die create_guest_account.php mit dem Code
$sql_data_array['entry_state'] = $state;
bei v1.06 rev 4642 SP4 im Einsatz hatte gibt es in der entry_state korrekte Einträge mit Bundesland Namen und falsche Einträge mit der Bundesland ID. Der Fehler trat nicht immer auf. Komme aber nicht dahinter warum.
follow-up: 33 comment:20 by , 10 years ago
Bei 2.00 fehlte noch eine Zuordnung in der classes/order.php
Jetzt wird auch bei 2.00 auch das Bundesland korrekt beim Bestellabschluss in die DB geschrieben.
Wobei es immer noch einen Unterschied gibt:
Ausgabe im Adressbuch:
Test User
Teststr. 111
New York, NY 12345
United States
Ausgabe in der Druckansicht und im Backend bei den Bestelldaten:
Test User
Teststr. 111
New York, New York 12345
United States
Es wird einmal die offizielle Abkürzung und einmal Komplettname ausgegeben
comment:23 by , 10 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
Bei der Bestellbearbeitung sind nun die Felder Bundesland unter "Versandadresse" & "Rechnungsadresse" gefüllt. Nicht aber unter "Kundenadresse"!
Ist es so aufwendig die Ausgabe im Adressbuch zu vereinheitlichen?
Bei der Kundenregistrierung wird übrigens "address_book.entry_state" überhaupt nicht befüllt! Es wird nur in "address_book.entry_zone_id" geschrieben.
comment:24 by , 10 years ago
Kundenregistrierung wird übrigens "address_book.entry_state":
Das Feld nur befüllt wenn es keine Bundesländer gibt, aber Bundesländer als Pflichtfeld definiert werden. Dann erscheint ein einfaches Eingabefeld, diese Einagben werden dann gespeichert.
Das ist alles unglaublich kompliziert umgesetzt.
Problem mit Kundenadresse ist jetzt auch behoben.
comment:26 by , 10 years ago
Alle Einträge in der Bestellung unter "Kundenadresse" sind jetzt leer. Es wird nun gar nichts mehr befüllt.
Es kann doch kein Hexenwerk sein im Adressbuch das Bundesland vollständig anzuzeigen und nicht nur die Abkürzung.
comment:27 by , 10 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
comment:29 by , 10 years ago
Im Adressbuch ist die Anzeige richtig, das ist die internationale Abkürzung. Das war schon immer so im System.
http://www.deutscheindenusa.com/schreibweise-amerikanischer-adressen/
comment:30 by , 10 years ago
Alles klar, dann eben an den anderen Stellen vereinheitlichen. ;-)
Alle anderen Probleme scheinen nun behoben! =)
comment:31 by , 10 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
comment:33 by , 10 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
Replying to web28:
[...]
Wobei es immer noch einen Unterschied gibt:
Ausgabe im Adressbuch:
Test User
Teststr. 111
New York, NY 12345
United States
Ausgabe in der Druckansicht und im Backend bei den Bestelldaten:
Test User
Teststr. 111
New York, New York 12345
United States
Es wird einmal die offizielle Abkürzung und einmal Komplettname ausgegeben
Das bitte noch überall vereinheitlichen auf die Kurzform, damit auch order_mail.html und print_order.html mit der für die USA beispielsweise korrekten Kurzform versehen wird.
comment:34 by , 10 years ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
Da beides richtig ist und das schon immer so war lasse ich das erst einmal so wie es ist.
Dazu wären dann noch ganz anders Stellen zu ändern.
Das kann man alles machen wenn Gerhard die die Klasse programmiert.

Nachtrag: Der Kunde hat mir nochmal bestätigt, dass der Fehler unter PHP 5.5 nicht auftritt, sondern erst unter PHP 5.6.