configurable = $configurable; $this->productIndexer = $productIndexer; } /** * We need reset attribute set id to attribute after related simple product was saved * * @param \Magento\Catalog\Model\ResourceModel\Product $subject * @param \Magento\Framework\DataObject $object * @return void * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function beforeSave( \Magento\Catalog\Model\ResourceModel\Product $subject, \Magento\Framework\DataObject $object ) { /** @var \Magento\Catalog\Model\Product $object */ if ($object->getTypeId() == Configurable::TYPE_CODE) { $object->getTypeInstance()->getSetAttributes($object); } } /** * Gather configurable parent ids of product being deleted and reindex after delete is complete. * * @param \Magento\Catalog\Model\ResourceModel\Product $subject * @param \Closure $proceed * @param \Magento\Catalog\Model\Product $product * @return \Magento\Catalog\Model\ResourceModel\Product * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function aroundDelete( \Magento\Catalog\Model\ResourceModel\Product $subject, \Closure $proceed, \Magento\Catalog\Model\Product $product ) { $configurableProductIds = $this->configurable->getParentIdsByChild($product->getId()); $result = $proceed($product); $this->productIndexer->executeList($configurableProductIds); return $result; } }