Skip to content

Commit 4240a6b

Browse files
change fix
1 parent 7af13d7 commit 4240a6b

File tree

2 files changed

+13
-22
lines changed

2 files changed

+13
-22
lines changed

app/code/Magento/GroupedProduct/Model/Product/Type/Grouped.php

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -393,9 +393,7 @@ protected function _prepareProduct(\Magento\Framework\DataObject $buyRequest, $p
393393

394394
if (is_string($_result)) {
395395
return $_result;
396-
}
397-
398-
if (!isset($_result[0])) {
396+
} elseif (!isset($_result[0])) {
399397
return __('Cannot process the item.')->render();
400398
}
401399

@@ -413,11 +411,6 @@ protected function _prepareProduct(\Magento\Framework\DataObject $buyRequest, $p
413411
]
414412
)
415413
);
416-
if ($buyRequest->getSuperGroup()) {
417-
$serializedValue = $this->serializer->serialize($buyRequest->getSuperGroup());
418-
$_result[0]->addCustomOption('grouped_options', $serializedValue);
419-
}
420-
421414
$products[] = $_result[0];
422415
} else {
423416
$associatedProductsInfo[] = [$subProduct->getId() => $qty];

app/code/Magento/GroupedProduct/Model/Quote/Item/CartItemProcessor.php

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ class CartItemProcessor implements CartItemProcessorInterface
4949
*/
5050
private $productOptionFactory;
5151

52+
/**
53+
* @var array|null
54+
*/
55+
private $groupedOptions;
56+
5257
/**
5358
* @param ObjectFactory $objectFactory
5459
* @param GroupedOptionsInterfaceFactory $groupedOptionFactory
@@ -84,6 +89,7 @@ public function convertToBuyRequest(CartItemInterface $cartItem): ?DataObject
8489
if ($extensionAttributes) {
8590
$groupedOptions = $extensionAttributes->getGroupedOptions();
8691
if ($groupedOptions) {
92+
$this->groupedOptions = $groupedOptions;
8793
$requestData = [];
8894

8995
foreach ($groupedOptions as $item) {
@@ -105,24 +111,16 @@ public function convertToBuyRequest(CartItemInterface $cartItem): ?DataObject
105111
*/
106112
public function processOptions(CartItemInterface $cartItem): CartItemInterface
107113
{
108-
if ($cartItem->getProductType() !== Grouped::TYPE_CODE) {
114+
if (empty($this->groupedOptions) || $cartItem->getProductType() !== Grouped::TYPE_CODE) {
109115
return $cartItem;
110116
}
111117

112-
$groupedOptions = $cartItem->getOptionByCode('grouped_options');
113-
$groupedOptionsData = $groupedOptions ? $this->jsonSerializer->unserialize($groupedOptions->getValue()) : null;
114-
if ($groupedOptionsData) {
115-
$productOptions = [];
116-
foreach ($groupedOptionsData as $id => $qty) {
117-
$productOptions[] = $this->groupedOptionFactory->create(['id' => $id, 'qty' => $qty]);
118-
}
119-
120-
$extension = $this->productOptionExtensionFactory->create()->setGroupedOptions($productOptions);
121-
if (!$cartItem->getProductOption()) {
122-
$cartItem->setProductOption($this->productOptionFactory->create());
123-
}
124-
$cartItem->getProductOption()->setExtensionAttributes($extension);
118+
$extension = $this->productOptionExtensionFactory->create()
119+
->setGroupedOptions($this->groupedOptions);
120+
if (!$cartItem->getProductOption()) {
121+
$cartItem->setProductOption($this->productOptionFactory->create());
125122
}
123+
$cartItem->getProductOption()->setExtensionAttributes($extension);
126124

127125
return $cartItem;
128126
}

0 commit comments

Comments
 (0)