Neu master / "Warenkorb zusammenfassen" zeigt seltsames Verhalten

hotzeplotz

Mitglied
4. Februar 2019
28
2
Beim Zusammenführen von Warenkörben stimmt was nicht. Glaube ich :)

1. Wenn ein Warenkorb aus _nicht_ angemeldetem Zustand in einen bestehenden/gepeicherten Warenkorb zusammengeführt werden soll läuft was schief
2. Es macht anscheinend einen Unterschied ob der gepeicherte Warenkorb bereits Positionen enthält oder nicht.

Szenario 1.

Ausgangslage: Nicht angemeldet, Warenkorb leer.

- 1. "A1" in WK; OK
- 2. Login; WK: "A1"; OK
- 3. Logout
- 4. "A2" in WK; OK
- 5. Login

Nun würde man erwarten, dass die Rückfrage erscheint und bei Bestätigung, der WK "A1" und "A2" bereithält.

Das passiert aber nicht, sondern: Es erfolgt keine Rückfrage und "A1" fehlt im WK.

Szenario 2.

Anders verhält es sich wenn man angemeldet anfängt.

Ausgangslage: Angemeldet, Warenkorb leer.

- 1. Login
- 2. "A1" in WK; OK
- 3. Logout // Ab hier ähnlich wie Szenario 1, mit dem Unterschied, dass der gespeicherte WK nicht leer ist.
- 4. "A2" in WK; OK
- 5. Login

Wieder erwartet man die Rückfrage und dass bei Bestätigung der WK die Artikel "A1" und "A2" bereithält.

Die Rückfrage erscheint, allerdings bei Bestätigung…

Code:
Kontext: Warnung ×Der Artikel „A1“ konnte nicht in den Warenkorb übernommen werden.
Kontext: Warnung ×Der Artikel „A2“ konnte nicht in den Warenkorb übernommen werden.
Kontext: Achtung ×Ihr Warenkorb ist leer.
Im Warenkorb werden keine Artikel angezeigt. Er ist aber nur scheinbar leer.

Der Status ist: Angemeldet, WK leer.

Nun kommt es darauf an wie es weitergeht.

Weg 1.

- 1. Logut
- 2. Login

Beide, "A1" und "A2", sind ohne weitere Rückfrage oder Kommentar im Warenkorb

Weg 2.

Neues Produkt in, scheinbar leeren, Warenkorb legen.

- 1. "A3" in WK; OK
- 2. Logout
- 3. Login

"A1", "A2" und "A3" sind ohne weitere Rückfrage oder Kommentar im Warenkorb

Weg 3.

Ähnlich wie Schritt 2, nur mit abmelden bevor ein neues Produkt in den WK gelegt wird.

- 1. Logout // Szenario 1; gespeicherter WK nicht leer ist.
- 2. "A3" in WK; OK
- 3. Login

Die Rückfrage nach Zusammenführung erscheint zwar, führt aber wieder scheinbar leerem Warenkorb.

Code:
Kontext: Warnung ×Der Artikel „A1“ konnte nicht in den Warenkorb übernommen werden.
Kontext: Warnung ×Der Artikel „A2“ konnte nicht in den Warenkorb übernommen werden.
Kontext: Warnung ×Der Artikel „A3“ konnte nicht in den Warenkorb übernommen werden.
Kontext: Achtung ×Ihr Warenkorb ist leer.
Ab hier wieder wie "Weg 1" oder "Weg 2", der Kreis schließt sich.

Ist das Nachvollziehbar?

Zweite Sache: Artikel mit Varianten / Array to string conversion

Ob das direkt mit der Beobachtung zusammenhängt weiß ich nicht, ich kann die genannten Schritte mit auch mit Artikel nachvollziehen, die keine Varianten haben.

"/includes/src/DB/NiceDB.php" meldet zwei "Array to string conversion " in ~415 und ~430.

- siehe https://gitlab.com/jtl-software/jtl-shop/core/-/blob/master/includes/src/DB/NiceDB.php#L415
- siehe https://gitlab.com/jtl-software/jtl-shop/core/-/blob/master/includes/src/DB/NiceDB.php#L430

PHP:
// Bei Artikel mit Varianten ist $val ein Array
$val = [
    'ger' => 'Grün'
];

// ~415
$lc = \mb_convert_case((string)$val, \MB_CASE_LOWER);
// Array to string conversion

// Ist $val ein Array, wird dieses in $assigns einsortiert und in 430 benutzt.
// ~430 

$assigns = [
  ":kWarenkorbPersPos" => 125
  ":kEigenschaft" => 1
  ":kEigenschaftWert" => 2
  ":cFreifeldWert" => ""
  ":cEigenschaftName"=> [
     "ger" => "Farbe"
  }
  ":cEigenschaftWertName" => [
     "ger" => "Grün"
  }   
]
      
$res = $s->execute($assigns);
// Array to string conversion
Keine Ahnung ob das relevant ist.

Schönen Tag noch.
 

Patrick Gugelsberger

Moderator
Mitarbeiter
1. Februar 2019
294
23
Hallo @hotzeplotz,

Szenario 1 konnte ich auch im aktuellen Master nachstellen und habe hierzu auch entsprechend ein Ticket für unsere Entwicklung eröffnet, das passende Ticket findest du hier:

https://issues.jtl-software.de/issues/SHOP-4138

Szenario 2 konnte ich so leider nicht nachstellen, das klappte alles bei mir, hier aber auch im aktuellen Master wohlgemerkt. Ich werde das ganze mal ein wenig weiter testen, eventuell hab ich hier ja auch einen Fehler gemacht.

Bei dem zweiten Thema Artikel mit Varianten / Array to string conversion bin ich leider raus, wo genau passiert da der Fehler?