Example #1
0
 /**
  * Setting Bundle Items Data to product for father processing
  *
  * @param \Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper $subject
  * @param \Magento\Catalog\Model\Product $product
  *
  * @return \Magento\Catalog\Model\Product
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 public function afterInitialize(\Magento\Catalog\Controller\Adminhtml\Product\Initialization\Helper $subject, \Magento\Catalog\Model\Product $product)
 {
     if (($items = $this->request->getPost('bundle_options')) && !$product->getCompositeReadonly()) {
         $product->setBundleOptionsData($items);
     }
     if (($selections = $this->request->getPost('bundle_selections')) && !$product->getCompositeReadonly()) {
         $product->setBundleSelectionsData($selections);
     }
     if ($product->getPriceType() == '0' && !$product->getOptionsReadonly()) {
         $product->setCanSaveCustomOptions(true);
         if ($customOptions = $product->getProductOptions()) {
             foreach (array_keys($customOptions) as $key) {
                 $customOptions[$key]['is_delete'] = 1;
             }
             $product->setProductOptions($customOptions);
         }
     }
     $product->setCanSaveBundleSelections((bool) $this->request->getPost('affect_bundle_product_selections') && !$product->getCompositeReadonly());
     return $product;
 }
 /**
  * @param \Magento\Catalog\Model\Product $product
  * @return void
  */
 protected function processDynamicOptionsData(\Magento\Catalog\Model\Product $product)
 {
     if ((int) $product->getPriceType() !== \Magento\Bundle\Model\Product\Price::PRICE_TYPE_DYNAMIC) {
         return;
     }
     if ($product->getOptionsReadonly()) {
         return;
     }
     $product->setCanSaveCustomOptions(true);
     $customOptions = $product->getProductOptions();
     if (!$customOptions) {
         return;
     }
     foreach (array_keys($customOptions) as $key) {
         $customOptions[$key]['is_delete'] = 1;
     }
     $newOptions = $product->getOptions();
     foreach ($customOptions as $customOptionData) {
         if ((bool) $customOptionData['is_delete']) {
             continue;
         }
         $customOption = $this->customOptionFactory->create(['data' => $customOptionData]);
         $customOption->setProductSku($product->getSku());
         $customOption->setOptionId(null);
         $newOptions[] = $customOption;
     }
     $product->setOptions($newOptions);
 }