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
Checkliste 0/0
Zugehörige Tickets
Von Timo Backhaus vor fast 5 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 fast 5 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 fast 5 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 fast 5 Jahren aktualisiert
Der Lösungsvorschlag von Timo ist ebenso fehlerhaft. Die richtige Korrektur ist im Commit.
Von Ulrich Wenk vor fast 5 Jahren aktualisiert
- Beziehung mit GX-Abgewiesen #67130: Artikel ohne Artikelbild verursachen viele Probleme im Merkzettel wurde hinzugefügt
Von Ronald Loyko vor fast 5 Jahren aktualisiert
- Zugewiesen an wurde von Core-Entwickler zu Ronald Loyko geändert
Von Moritz Bunjes vor fast 5 Jahren aktualisiert
- Status wurde von Testing zu Erledigt geändert
Von Moritz Bunjes vor fast 5 Jahren aktualisiert
- Status wurde von Erledigt zu Testing geändert
Von Ronald Loyko vor fast 5 Jahren aktualisiert
- Status wurde von Testing zu Erledigt geändert