isSourceItemManagementAllowedForProductType = $isSourceItemManagementAllowedForProductType; $this->sourceItemsConfigurationProcessor = $sourceItemsConfigurationProcessor; $this->isSingleSourceMode = $isSingleSourceMode; $this->defaultSourceProvider = $defaultSourceProvider; } /** * @param EventObserver $observer * @return void */ public function execute(EventObserver $observer) { /** @var ProductInterface $product */ $product = $observer->getEvent()->getProduct(); if ($this->isSourceItemManagementAllowedForProductType->execute($product->getTypeId()) === false) { return; } /** @var Save $controller */ $controller = $observer->getEvent()->getController(); $assignedSources = []; if ($this->isSingleSourceMode->execute()) { $stockData = $controller->getRequest()->getParam('product', [])['stock_data'] ?? []; $assignedSources[] = [ SourceItemInterface::SOURCE_CODE => $this->defaultSourceProvider->getCode(), StockItemConfigurationInterface::NOTIFY_STOCK_QTY => $stockData[StockItemConfigurationInterface::NOTIFY_STOCK_QTY] ?? 0, 'notify_stock_qty_use_default' => $stockData[StockItemConfigurationInterface::USE_CONFIG_NOTIFY_STOCK_QTY] ?? 1, ]; } else { $sources = $controller->getRequest()->getParam('sources', []); if (isset($sources['assigned_sources']) && is_array($sources['assigned_sources'])) { $assignedSources = $sources['assigned_sources']; } } $this->sourceItemsConfigurationProcessor->process($product->getSku(), $assignedSources); } }