Example #1
0
 /**
  * Setting flag if dowenloadable product can be or not in complex product
  * based on link can be purchased separately or not
  *
  * @param \Magento\Catalog\Model\Product $product
  * @return void
  */
 public function beforeSave($product)
 {
     parent::beforeSave($product);
     if ($this->getLinkSelectionRequired($product)) {
         $product->setTypeHasRequiredOptions(true)->setRequiredOptions(true);
     } else {
         $product->setTypeHasRequiredOptions(false)->setRequiredOptions(false);
     }
     // Update links_exist attribute value
     $linksExist = false;
     if ($data = $product->getDownloadableData()) {
         if (isset($data['link'])) {
             foreach ($data['link'] as $linkItem) {
                 if (!isset($linkItem['is_delete']) || !$linkItem['is_delete']) {
                     $linksExist = true;
                     break;
                 }
             }
         }
     }
     $product->setTypeHasOptions($linksExist);
     $product->setLinksExist($linksExist);
 }