GX-Bug #67138
geschlossenDas hinzufügen von unterschiedlichen Artikeln in den Warenkorb und Merkzettel führt teilweise zur Hinzufügung des immer gleichen Artikels
0%
Das Hinzufügen unterschiedlicher Artikel zum Warenkorb und Merkzettel funktioniert wieder zuverlässig
Beschreibung
Das Problem tritt vor allem bei einfachen Artikeln ohne Eigenschaften oder Attributen auf
Zugehörige Tickets
Von Timo Backhaus vor mehr als 4 Jahren aktualisiert
public function sanitizeProductidentifier(string $identifier): string
{
$propertyPart = strrchr($identifier, 'x');
$identifierWithoutPropertyId = $propertyPart ? substr($identifier, 0, strlen($propertyPart) * -1) : $identifier;
$identifierParts = str_replace('}', '{', $identifierWithoutPropertyId);
$identifierParts = explode('{', $identifierParts);
foreach ($this->contents as $contentIdentifier => $value) {
$matches = 0;
$contentIdentifierPropertyPart = strrchr($contentIdentifier, 'x');
$contentIdentifierWithoutPropertyId = $contentIdentifierPropertyPart ? substr($contentIdentifier,
0,
strlen($contentIdentifierPropertyPart)
* -1) : $contentIdentifier;
$contentIdentifierParts = str_replace('}', '{', $contentIdentifierWithoutPropertyId);
$contentIdentifierParts = explode('{', $contentIdentifierParts);
if ($propertyPart !== false && $contentIdentifierPropertyPart !== false && $propertyPart !== $contentIdentifierPropertyPart) {
continue;
}
if ($contentIdentifierParts[0] === $identifierParts[0]) {
for ($i = 1; $i < count($contentIdentifierParts); $i += 2) {
for ($j = 1; $j < count($identifierParts); $j += 2) {
if ($contentIdentifierParts[$i] === $identifierParts[$j]
&& $contentIdentifierParts[$i + 1] === $identifierParts[$j + 1]) {
$matches++;
}
}
}
}
if ($matches > 0 && $matches === (count($contentIdentifierParts) - 1) / 2) {
return $contentIdentifier;
}
}
return $identifier;
}
2 Korrekturen:
if ($propertyPart !== false && $contentIdentifierPropertyPart !== false && $propertyPart !== $contentIdentifierPropertyPart) {
Die Prüfung auf Eigenschaften war fehlerhaft. Die Inhaltsprüfung darf nur erfolgen, wenn beide Vergleichsartikel Eigenschaften besitzen ( !== false)
2.
if ($matches > 0 && $matches === (count($contentIdentifierParts) - 1) / 2) {
$matches ist standardmäßig 0 und wird bei jedem Attributtreffer hochgezählt. Die Rückgabe einer gefundenen Attributartikelnummer darf nur erfolgen, wenn $matches größer 0 ist. Beim aktuellen Verhalten ist die Bedingung bei Artikeln ohne Attribute immer erfüllt, wodurch der erste Artikel aus dem Warenkorb als Treffer erkennt wird.
Von Wilken Haase vor mehr als 4 Jahren aktualisiert
- Thema wurde von Das hinzufügen von unterschiedlichen Artikeln in den Warenkorb führt teilweise zur Hinzufügung des immer gleichen Artikels zu Das hinzufügen von unterschiedlichen Artikeln in den Warenkorb und Merkzettel führt teilweise zur Hinzufügung des immer gleichen Artikels geändert
Von Moritz Bunjes vor mehr als 4 Jahren aktualisiert
- Status wurde von Gemeldet zu Testing geändert
- Zielversion wurde von 133 zu 4.1.1.2 geändert
- Release Notes Langtext aktualisiert (Vergleich)
Von Moritz Bunjes vor mehr als 4 Jahren aktualisiert
Der Lösungsvorschlag von Timo ist ebenso fehlerhaft. Die richtige Korrektur ist im Commit.
Von Ulrich Wenk vor mehr als 4 Jahren aktualisiert
- Beziehung mit GX-Abgewiesen #67130: Artikel ohne Artikelbild verursachen viele Probleme im Merkzettel wurde hinzugefügt
Von Ronald Loyko vor mehr als 4 Jahren aktualisiert
- Zugewiesen an wurde von Core-Entwickler zu Ronald Loyko geändert
Von Moritz Bunjes vor mehr als 4 Jahren aktualisiert
- Status wurde von Testing zu Erledigt geändert
Von Moritz Bunjes vor mehr als 4 Jahren aktualisiert
- Status wurde von Erledigt zu Testing geändert
Von Ronald Loyko vor mehr als 4 Jahren aktualisiert
- Status wurde von Testing zu Erledigt geändert