hotzeplotz
Aktives Mitglied
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…
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.
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
Keine Ahnung ob das relevant ist.
Schönen Tag noch.
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.