diff --git a/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php b/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php index 3c9eac68eb9e4..7d84f77c156d4 100644 --- a/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php +++ b/app/code/Magento/Bundle/Controller/Adminhtml/Product/Initialization/Helper/Plugin/Bundle.php @@ -48,6 +48,11 @@ class Bundle */ protected $storeManager; + /** + * @var Boolean + */ + protected $isDuplicateAction; + /** * @param RequestInterface $request * @param OptionFactory $optionFactory @@ -87,6 +92,7 @@ public function afterInitialize( \Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper $subject, \Magento\Catalog\Model\Product $product ) { + $this->isDuplicateAction = $this->request->getPost('back') === 'duplicate' ?: 0; $compositeReadonly = $product->getCompositeReadonly(); $result['bundle_selections'] = $result['bundle_options'] = []; if (isset($this->request->getPost('bundle_options')['bundle_options'])) { @@ -94,6 +100,7 @@ public function afterInitialize( if (empty($option['bundle_selections'])) { continue; } + $result['bundle_selections'][$key] = $option['bundle_selections']; unset($option['bundle_selections']); $result['bundle_options'][$key] = $option; @@ -120,6 +127,8 @@ public function afterInitialize( } /** + * Process Bundle Options Data + * * @param \Magento\Catalog\Model\Product $product * @return void * @SuppressWarnings(PHPMD.CyclomaticComplexity) @@ -149,11 +158,19 @@ protected function processBundleOptionsData(\Magento\Catalog\Model\Product $prod if (!empty($linkData['delete'])) { continue; } + + // Keeping old bundle selection. + if ($this->isDuplicateAction) { + unset($linkData['selection_id']); + } + if (!empty($linkData['selection_id'])) { $linkData['id'] = $linkData['selection_id']; } + $links[] = $this->buildLink($product, $linkData); } + $option->setProductLinks($links); $options[] = $option; } @@ -161,10 +178,11 @@ protected function processBundleOptionsData(\Magento\Catalog\Model\Product $prod $extension = $product->getExtensionAttributes(); $extension->setBundleProductOptions($options); $product->setExtensionAttributes($extension); - return; } /** + * Process Dynamic Options Data + * * @param \Magento\Catalog\Model\Product $product * @return void */ @@ -198,6 +216,8 @@ protected function processDynamicOptionsData(\Magento\Catalog\Model\Product $pro } /** + * Build Link + * * @param \Magento\Catalog\Model\Product $product * @param array $linkData *