Bestelle ich einen Artikel xy mit einem zugehörigem Artikel zz (oxbundleid = zz) wird der zugehörige Artikel zz mitbestellt.
Bestelle ich Artikel xy dreimal dann wird der Artikel zz jedoch nur einmal in den Warenkorb gelegt. Reduziere ich im Backend in der Bestellung die Anzahl Artikel xy von 3 auf 2, dann ist der zugehörige Artikel zz ganz weg.
Wenn ich mir die Funktion _getArticleBundles anschaue, dann steht da:
$oArticle = $oBasketItem->getArticle(true);
if ($oArticle && $oArticle->oxarticles__oxbundleid->value) {
$aBundles[$oArticle->oxarticles__oxbundleid->value] = [B][U]1[/U][/B];
}
Entweder verstehe ich das Konzept von Bundles nicht oder hier sollte folgendes stehen:
$aBundles[$oArticle->oxarticles__oxbundleid->value] = $oBasketItem->getAmount ();
Dann stimmt zwar die Anzahl, wenn ich aber im Backend von 3 Artikeln einen lösche bzw. einfach den “Aktualisieren” Button klicke, sind alle zugehörigen Artikel weg.
Wenn ich über das Backend den Artikel xy einfüge, liefert
$oArticle = $oBasketItem->getArticle(true);
ein oePayPalOxArticle Object also vermutlich einfach ein OxArticle Object
Wenn ich die Bestellung im Backend aktualisiere, ist $oArticle plötzlich ein oxOrderArticle Object. Damit funktioniert dann $oArticle->oxarticles__oxbundleid->value nicht mehr. Im Shop Frontend funktioniert es richtig.
Folgender Workaround funktioniert hier:
$oArticle = $oBasketItem->getArticle(true);
if(!$oArticle->oxarticles__oxid->value)
$oArticle = $oArticle->getArticle(true);
Warum kann ein Artikel nur einen zugehörigen Artikel haben?