/** * 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); }