diff --git a/vendor/magento/module-quote/Model/Cart/AddProductsToCart.php b/vendor/magento/module-quote/Model/Cart/AddProductsToCart.php index 9be1e9d32e3..d2c361356dc 100644 --- a/vendor/magento/module-quote/Model/Cart/AddProductsToCart.php +++ b/vendor/magento/module-quote/Model/Cart/AddProductsToCart.php @@ -7,6 +7,7 @@ declare(strict_types=1); namespace Magento\Quote\Model\Cart; +use Magento\Catalog\Api\Data\ProductInterface; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Quote\Api\CartRepositoryInterface; use Magento\Quote\Model\Cart\BuyRequest\BuyRequestBuilder; @@ -18,6 +19,8 @@ use Magento\Framework\Message\MessageInterface; /** * Unified approach to add products to the Shopping Cart. * Client code must validate, that customer is eligible to call service with provided {cartId} and {cartItems} + * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class AddProductsToCart { @@ -165,7 +168,7 @@ class AddProductsToCart $cartItemPosition ); } else { - $product = $this->productReader->getProductBySku($sku); + $product = $this->getProductOptions($this->productReader->getProductBySku($sku)); if (!$product || !$product->isSaleable() || !$product->isAvailable()) { $errors[] = $this->error->create( __('Could not find a product with SKU "%sku"', ['sku' => $sku])->render(), @@ -206,4 +209,16 @@ class AddProductsToCart return $output; } + + /** + * Set options from product options collection + * + * @param ProductInterface|null $productItem + * @return ProductInterface|null + */ + private function getProductOptions(ProductInterface|null $productItem): ?ProductInterface + { + $productItem?->setOptions($productItem->getProductOptionsCollection()->getItems()); + return $productItem; + } }