22 private $productRepository;
27 private $cartItemOptionProcessor;
38 $this->cartItemOptionProcessor = $cartItemOptionProcessor;
54 $qty =
$item->getQty();
55 if (!is_numeric($qty) || $qty <= 0) {
59 $itemId =
$item->getItemId();
63 $currentItem =
$quote->getItemById($itemId);
66 __(
'The %1 Cart doesn\'t contain the %2 item.',
$cartId, $itemId)
69 $productType = $currentItem->getProduct()->getTypeId();
70 $buyRequestData = $this->cartItemOptionProcessor->getBuyRequest($productType,
$item);
71 if (is_object($buyRequestData)) {
73 $item =
$quote->updateItem($itemId, $buyRequestData);
75 if (
$item->getQty() !== $currentItem->getQty()) {
76 $currentItem->setQty($qty);
81 if (!empty($currentItem->getMessage())) {
82 throw new LocalizedException(
__($currentItem->getMessage()));
89 $productType =
$product->getTypeId();
92 $this->cartItemOptionProcessor->getBuyRequest($productType,
$item)
94 if (is_string(
$item)) {
95 throw new LocalizedException(
__(
$item));
98 }
catch (NoSuchEntityException $e) {
100 }
catch (LocalizedException $e) {
102 }
catch (\Exception $e) {
103 throw new CouldNotSaveException(
__(
"The quote couldn't be saved."));
105 $itemId =
$item->getId();
109 $item = $this->cartItemOptionProcessor->addProductOptions($productType,
$quoteItem);
110 return $this->cartItemOptionProcessor->applyCustomOptions(
$item);
113 throw new CouldNotSaveException(
__(
"The quote couldn't be saved."));
__construct(ProductRepositoryInterface $productRepository, CartItemOptionsProcessor $cartItemOptionProcessor)