diff --git a/vendor/magento/module-inventory-bundle-import-export/Plugin/Import/Product/UpdateBundleProductsStockItemStatusPlugin.php b/vendor/magento/module-inventory-bundle-import-export/Plugin/Import/Product/UpdateBundleProductsStockItemStatusPlugin.php deleted file mode 100644 index 22d4e5077d7..00000000000 --- a/vendor/magento/module-inventory-bundle-import-export/Plugin/Import/Product/UpdateBundleProductsStockItemStatusPlugin.php +++ /dev/null @@ -1,58 +0,0 @@ -changeParentStockStatus = $changeParentStockStatus; - $this->isSingleSourceMode = $isSingleSourceMode; - } - - /** - * Allow automatic parent stock update in single source mode only - * - * @param StockItemImporterInterface $subject - * @param mixed $result - * @param array $stockData - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - */ - public function afterImport( - StockItemImporterInterface $subject, - $result, - array $stockData - ): void { - if ($stockData && $this->isSingleSourceMode->execute()) { - $this->changeParentStockStatus->execute(array_column($stockData, 'product_id')); - } - } -} diff --git a/vendor/magento/module-inventory-bundle-import-export/etc/di.xml b/vendor/magento/module-inventory-bundle-import-export/etc/di.xml index 2e96e75240c..b35e3e61025 100644 --- a/vendor/magento/module-inventory-bundle-import-export/etc/di.xml +++ b/vendor/magento/module-inventory-bundle-import-export/etc/di.xml @@ -11,8 +11,5 @@ - diff --git a/vendor/magento/module-inventory-bundle-product/Model/StockStatusProcessor.php b/vendor/magento/module-inventory-bundle-product/Model/StockStatusProcessor.php new file mode 100644 index 00000000000..ea4b5154622 --- /dev/null +++ b/vendor/magento/module-inventory-bundle-product/Model/StockStatusProcessor.php @@ -0,0 +1,39 @@ +changeParentStockStatus = $changeParentStockStatus; + } + + /** + * @inheritDoc + */ + public function execute(array $productIds): void + { + $this->changeParentStockStatus->execute($productIds); + } +} diff --git a/vendor/magento/module-inventory-bundle-product/etc/di.xml b/vendor/magento/module-inventory-bundle-product/etc/di.xml index 622c345aecd..e8bdbaaa618 100644 --- a/vendor/magento/module-inventory-bundle-product/etc/di.xml +++ b/vendor/magento/module-inventory-bundle-product/etc/di.xml @@ -6,6 +6,13 @@ */ --> + + + + Magento\InventoryBundleProduct\Model\StockStatusProcessor + + + diff --git a/vendor/magento/module-inventory-catalog/Plugin/Inventory/UpdateCompositeProductStockStatusOnDecrementSourceItemQty.php b/vendor/magento/module-inventory-catalog/Plugin/Inventory/UpdateCompositeProductStockStatusOnDecrementSourceItemQty.php new file mode 100644 index 00000000000..673984bb109 --- /dev/null +++ b/vendor/magento/module-inventory-catalog/Plugin/Inventory/UpdateCompositeProductStockStatusOnDecrementSourceItemQty.php @@ -0,0 +1,79 @@ +getProductIdsBySkus = $getProductIdsBySkus; + $this->isSingleSourceMode = $isSingleSourceMode; + $this->compositeProductStockStatusProcessor = $compositeProductStockStatusProcessor; + } + + /** + * Update parent products stock status after decrementing quantity of children stock + * + * @param DecrementSourceItemQty $subject + * @param void $result + * @param SourceItemInterface[] $sourceItemDecrementData + * @return void + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function afterExecute(DecrementSourceItemQty $subject, $result, array $sourceItemDecrementData): void + { + if ($this->isSingleSourceMode->execute()) { + $productIds = []; + $sourceItems = array_column($sourceItemDecrementData, 'source_item'); + foreach ($sourceItems as $sourceItem) { + $sku = $sourceItem->getSku(); + try { + $productIds[] = (int)$this->getProductIdsBySkus->execute([$sku])[$sku]; + } catch (NoSuchEntityException $e) { + continue; + } + } + if ($productIds) { + $this->compositeProductStockStatusProcessor->execute($productIds); + } + } + } +} diff --git a/vendor/magento/module-inventory-catalog/Plugin/InventoryApi/UpdateCompositeProductStockStatusOnSourceItemsSave.php b/vendor/magento/module-inventory-catalog/Plugin/InventoryApi/UpdateCompositeProductStockStatusOnSourceItemsSave.php new file mode 100644 index 00000000000..c79f501795e --- /dev/null +++ b/vendor/magento/module-inventory-catalog/Plugin/InventoryApi/UpdateCompositeProductStockStatusOnSourceItemsSave.php @@ -0,0 +1,78 @@ +getProductIdsBySkus = $getProductIdsBySkus; + $this->isSingleSourceMode = $isSingleSourceMode; + $this->compositeProductStockStatusProcessor = $compositeProductStockStatusProcessor; + } + + /** + * Update parent products stock status on children products source items update + * + * @param SourceItemsSaveInterface $subject + * @param void $result + * @param SourceItemInterface[] $sourceItems + * @return void + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function afterExecute(SourceItemsSaveInterface $subject, $result, array $sourceItems): void + { + if ($this->isSingleSourceMode->execute()) { + $productIds = []; + foreach ($sourceItems as $sourceItem) { + $sku = $sourceItem->getSku(); + try { + $productIds[] = (int)$this->getProductIdsBySkus->execute([$sku])[$sku]; + } catch (NoSuchEntityException $e) { + continue; + } + } + if ($productIds) { + $this->compositeProductStockStatusProcessor->execute($productIds); + } + } + } +} diff --git a/vendor/magento/module-inventory-catalog/etc/di.xml b/vendor/magento/module-inventory-catalog/etc/di.xml index 29bb39faa6f..541ac9f6e11 100644 --- a/vendor/magento/module-inventory-catalog/etc/di.xml +++ b/vendor/magento/module-inventory-catalog/etc/di.xml @@ -21,10 +21,14 @@ + + @@ -94,6 +98,7 @@ + diff --git a/vendor/magento/module-inventory-catalog-api/Model/CompositeProductStockStatusProcessorInterface.php b/vendor/magento/module-inventory-catalog-api/Model/CompositeProductStockStatusProcessorInterface.php new file mode 100644 index 00000000000..44bc9feaf09 --- /dev/null +++ b/vendor/magento/module-inventory-catalog-api/Model/CompositeProductStockStatusProcessorInterface.php @@ -0,0 +1,22 @@ +compositeProductStockStatusProcessors = $compositeProductStockStatusProcessors; + } + + /** + * @inheritdoc + */ + public function execute(array $productIds): void + { + foreach ($this->compositeProductStockStatusProcessors as $compositeProductStockStatusProcessor) { + $compositeProductStockStatusProcessor->execute($productIds); + } + } +} diff --git a/vendor/magento/module-inventory-catalog-api/etc/di.xml b/vendor/magento/module-inventory-catalog-api/etc/di.xml index 60beb25a0d9..f3666356bb7 100644 --- a/vendor/magento/module-inventory-catalog-api/etc/di.xml +++ b/vendor/magento/module-inventory-catalog-api/etc/di.xml @@ -15,4 +15,6 @@ type="Magento\InventoryCatalogApi\Model\BulkInventoryTransferValidatorChain" /> - \ No newline at end of file + + diff --git a/vendor/magento/module-inventory-configurable-product/Model/StockStatusProcessor.php b/vendor/magento/module-inventory-configurable-product/Model/StockStatusProcessor.php new file mode 100644 index 00000000000..f9b14c80929 --- /dev/null +++ b/vendor/magento/module-inventory-configurable-product/Model/StockStatusProcessor.php @@ -0,0 +1,39 @@ +changeParentStockStatus = $changeParentStockStatus; + } + + /** + * @inheritDoc + */ + public function execute(array $productIds): void + { + $this->changeParentStockStatus->execute($productIds); + } +} diff --git a/vendor/magento/module-inventory-configurable-product/etc/di.xml b/vendor/magento/module-inventory-configurable-product/etc/di.xml index cfe1b00afbc..38d3cfca04c 100644 --- a/vendor/magento/module-inventory-configurable-product/etc/di.xml +++ b/vendor/magento/module-inventory-configurable-product/etc/di.xml @@ -36,9 +36,12 @@ - - + + + + Magento\InventoryConfigurableProduct\Model\StockStatusProcessor + + changeParentStockStatus = $changeParentStockStatus; + } + + /** + * @inheritDoc + */ + public function execute(array $productIds): void + { + foreach ($productIds as $productId) { + $this->changeParentStockStatus->execute($productId); + } + } +} diff --git a/vendor/magento/module-inventory-grouped-product/Plugin/InventoryCatalog/Model/UpdateParentStockStatusPlugin.php b/vendor/magento/module-inventory-grouped-product/Plugin/InventoryCatalog/Model/UpdateParentStockStatusPlugin.php deleted file mode 100644 index a8381d474a2..00000000000 --- a/vendor/magento/module-inventory-grouped-product/Plugin/InventoryCatalog/Model/UpdateParentStockStatusPlugin.php +++ /dev/null @@ -1,79 +0,0 @@ -messageManager = $messageManager; - $this->changeParentStockStatus = $changeParentStockStatus; - $this->getProductIdsBySkus = $getProductIdsBySkus; - } - - /** - * After execute plugin - * - * @param UpdateInventory $subject - * @param mixed $result - * @param InventoryData $data - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - */ - public function afterExecute(UpdateInventory $subject, $result, InventoryData $data) - { - $skus = $data->getSkus(); - try { - $productIds = $this->getProductIdsBySkus->execute($skus); - } catch (NoSuchEntityException $e) { - $productIds = []; - } - try { - foreach ($productIds as $productId) { - $this->changeParentStockStatus->execute((int)$productId); - } - } catch (\Exception $e) { - $this->messageManager->addExceptionMessage( - $e, - __('Something went wrong while updating the product(s) stock status.') - ); - } - } -} diff --git a/vendor/magento/module-inventory-grouped-product/etc/di.xml b/vendor/magento/module-inventory-grouped-product/etc/di.xml index 7375b46ff18..cecb0ac36e5 100644 --- a/vendor/magento/module-inventory-grouped-product/etc/di.xml +++ b/vendor/magento/module-inventory-grouped-product/etc/di.xml @@ -10,7 +10,11 @@ - - + + + + Magento\InventoryGroupedProduct\Model\StockStatusProcessor + + diff --git a/vendor/magento/module-inventory-import-export/Plugin/Import/UpdateConfigurableProductsPlugin.php b/vendor/magento/module-inventory-import-export/Plugin/Import/UpdateConfigurableProductsPlugin.php deleted file mode 100644 index ca1f54066ab..00000000000 --- a/vendor/magento/module-inventory-import-export/Plugin/Import/UpdateConfigurableProductsPlugin.php +++ /dev/null @@ -1,56 +0,0 @@ -changeParentStockStatus = $changeParentStockStatus; - $this->isSingleSourceMode = $isSingleSourceMode; - } - - /** - * Update configurable products stock item status based on children products stock status after import - * - * @param StockItemImporterInterface $subject - * @param void $result - * @param array $stockData - * @return void - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - */ - public function afterImport( - StockItemImporterInterface $subject, - $result, - array $stockData - ): void { - if ($stockData && $this->isSingleSourceMode->execute()) { - $this->changeParentStockStatus->execute(array_column($stockData, 'product_id')); - } - } -} diff --git a/vendor/magento/module-inventory-import-export/etc/di.xml b/vendor/magento/module-inventory-import-export/etc/di.xml index 5d0db315768..c7b505e1dad 100644 --- a/vendor/magento/module-inventory-import-export/etc/di.xml +++ b/vendor/magento/module-inventory-import-export/etc/di.xml @@ -27,9 +27,9 @@ - +