From 718521d9f0762b02b6634885c783861e050cb46d Mon Sep 17 00:00:00 2001 From: Viktor Tymchynskyi Date: Fri, 15 Jul 2022 11:36:30 -0500 Subject: [PATCH 01/10] ACP2E-981: Error when creating event attribute which is reserved keyword --- .../Magento/Eav/Model/Entity/Attribute.php | 25 +++++++++++++++---- .../Eav/Model/ReservedAttributeChecker.php | 22 ++++++++++++++-- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/Eav/Model/Entity/Attribute.php b/app/code/Magento/Eav/Model/Entity/Attribute.php index e24787bb0056f..e1094a331149e 100644 --- a/app/code/Magento/Eav/Model/Entity/Attribute.php +++ b/app/code/Magento/Eav/Model/Entity/Attribute.php @@ -5,6 +5,7 @@ */ namespace Magento\Eav\Model\Entity; +use Magento\Eav\Model\ReservedAttributeCheckerInterface; use Magento\Eav\Model\Validator\Attribute\Code as AttributeCodeValidator; use Magento\Framework\Api\AttributeValueFactory; use Magento\Framework\App\ObjectManager; @@ -29,17 +30,17 @@ class Attribute extends \Magento\Eav\Model\Entity\Attribute\AbstractAttribute im * The value is defined as 60 because in the flat mode attribute code will be transformed into column name. * MySQL allows only 64 symbols in column name. */ - const ATTRIBUTE_CODE_MAX_LENGTH = 60; + public const ATTRIBUTE_CODE_MAX_LENGTH = 60; /** * Min accepted length of an attribute code. */ - const ATTRIBUTE_CODE_MIN_LENGTH = 1; + public const ATTRIBUTE_CODE_MIN_LENGTH = 1; /** * Tag to use for attributes caching. */ - const CACHE_TAG = 'EAV_ATTRIBUTE'; + public const CACHE_TAG = 'EAV_ATTRIBUTE'; /** * Prefix of model events names @@ -69,6 +70,9 @@ class Attribute extends \Magento\Eav\Model\Entity\Attribute\AbstractAttribute im /** * @var \Magento\Catalog\Model\Product\ReservedAttributeList + * + * @deprecated Incorrect direct dependency on Product attribute. + * @see \Magento\Eav\Model\Entity\Attribute::$reservedAttributeChecker */ protected $reservedAttributeList; @@ -87,6 +91,11 @@ class Attribute extends \Magento\Eav\Model\Entity\Attribute\AbstractAttribute im */ private $attributeCodeValidator; + /** + * @var ReservedAttributeCheckerInterface|null + */ + private $reservedAttributeChecker; + /** * @param \Magento\Framework\Model\Context $context * @param \Magento\Framework\Registry $registry @@ -108,6 +117,7 @@ class Attribute extends \Magento\Eav\Model\Entity\Attribute\AbstractAttribute im * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection * @param array $data * @param AttributeCodeValidator|null $attributeCodeValidator + * @param ReservedAttributeCheckerInterface|null $reservedAttributeChecker * @SuppressWarnings(PHPMD.ExcessiveParameterList) * @codeCoverageIgnore */ @@ -131,7 +141,8 @@ public function __construct( \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, array $data = [], - AttributeCodeValidator $attributeCodeValidator = null + AttributeCodeValidator $attributeCodeValidator = null, + ?ReservedAttributeCheckerInterface $reservedAttributeChecker = null ) { parent::__construct( $context, @@ -157,6 +168,9 @@ public function __construct( $this->attributeCodeValidator = $attributeCodeValidator ?: ObjectManager::getInstance()->get( AttributeCodeValidator::class ); + $this->reservedAttributeChecker = $reservedAttributeChecker ?: ObjectManager::getInstance()->get( + ReservedAttributeCheckerInterface::class + ); } /** @@ -251,7 +265,7 @@ public function beforeSave() } // prevent overriding product data - if (isset($this->_data['attribute_code']) && $this->reservedAttributeList->isReservedAttribute($this)) { + if (isset($this->_data['attribute_code']) && $this->reservedAttributeChecker->isReservedAttribute($this)) { throw new LocalizedException( __( 'The attribute code \'%1\' is reserved by system. Please try another attribute code', @@ -535,6 +549,7 @@ public function __wakeup() $this->_localeDate = $objectManager->get(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class); $this->_localeResolver = $objectManager->get(\Magento\Framework\Locale\ResolverInterface::class); $this->reservedAttributeList = $objectManager->get(\Magento\Catalog\Model\Product\ReservedAttributeList::class); + $this->reservedAttributeChecker = $objectManager->get(ReservedAttributeCheckerInterface::class); $this->dateTimeFormatter = $objectManager->get(DateTimeFormatterInterface::class); } diff --git a/app/code/Magento/Eav/Model/ReservedAttributeChecker.php b/app/code/Magento/Eav/Model/ReservedAttributeChecker.php index be941ae98842c..06cc4b68b3207 100644 --- a/app/code/Magento/Eav/Model/ReservedAttributeChecker.php +++ b/app/code/Magento/Eav/Model/ReservedAttributeChecker.php @@ -18,7 +18,7 @@ class ReservedAttributeChecker implements ReservedAttributeCheckerInterface { /** - * @var ReservedAttributeCheckerInterface[][] + * @var ReservedAttributeCheckerInterface[] */ private $validators; @@ -37,7 +37,8 @@ public function __construct( public function isReservedAttribute(AbstractAttribute $attribute): bool { $isReserved = false; - $validators = $this->validators[$attribute->getEntityType()->getEntityTypeCode()] ?? []; + $entityTypeCode = $this->getAttributeEntityTypeCode($attribute); + $validators = $this->validators[$entityTypeCode] ?? []; foreach ($validators as $validator) { $isReserved = $validator->isReservedAttribute($attribute); if ($isReserved === true) { @@ -47,4 +48,21 @@ public function isReservedAttribute(AbstractAttribute $attribute): bool return $isReserved; } + + /** + * Returns attribute entity type code. + * + * @param AbstractAttribute $attribute + * @return string|null + */ + private function getAttributeEntityTypeCode(AbstractAttribute $attribute): ?string + { + try { + $result = $attribute->getEntityType()->getEntityTypeCode(); + } catch (LocalizedException $e) { + $result = null; + } + + return $result; + } } From 328397cf00ef9134779fb22ac6cdd9ef057e219a Mon Sep 17 00:00:00 2001 From: Viktor Tymchynskyi Date: Mon, 18 Jul 2022 11:49:46 -0500 Subject: [PATCH 02/10] ACP2E-981: Error when creating event attribute which is reserved keyword --- .../Catalog/Controller/Adminhtml/Product/Attribute/Save.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php index 440716e456910..491e6e2c9fac1 100644 --- a/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php +++ b/app/code/Magento/Catalog/Controller/Adminhtml/Product/Attribute/Save.php @@ -327,6 +327,9 @@ public function execute() return $this->returnResult('catalog/*/', [], ['error' => false]); } catch (\Exception $e) { $this->messageManager->addErrorMessage($e->getMessage()); + if ($attributeId === null) { + unset($data['frontend_input']); + } $this->_session->setAttributeData($data); return $this->returnResult( 'catalog/*/edit', From 401c1fe9bb4c85447fd346461957d165787184b3 Mon Sep 17 00:00:00 2001 From: pradeep1819 Date: Thu, 4 Aug 2022 13:40:56 +0530 Subject: [PATCH 03/10] ACP2E-982: Assignment of sources changes after importing data --- app/code/Magento/CatalogImportExport/Model/Import/Product.php | 1 + .../Magento/CatalogImportExport/Model/StockItemImporter.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index ac18211b44bd4..8b422088fb00d 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -2336,6 +2336,7 @@ protected function _saveStockItem() $stockItem = $this->getRowExistingStockItem($rowData); $existingStockItemData = $stockItem->getData(); $row = $this->formatStockDataForRow($rowData); + $row['explicit_qty'] = array_key_exists('qty', $rowData); $productIdsToReindex[] = $row['product_id']; $storeId = $this->getRowStoreId($rowData); if (!empty(array_diff_assoc($row, $existingStockItemData)) diff --git a/app/code/Magento/CatalogImportExport/Model/StockItemImporter.php b/app/code/Magento/CatalogImportExport/Model/StockItemImporter.php index 0e8d3c5fa4cc5..e60725446cad6 100644 --- a/app/code/Magento/CatalogImportExport/Model/StockItemImporter.php +++ b/app/code/Magento/CatalogImportExport/Model/StockItemImporter.php @@ -50,8 +50,8 @@ public function import(array $stockData) $entityTable = $stockItemResource->getMainTable(); try { $stockImportData = array_map( - function ($stockItemData) { - unset($stockItemData['sku']); + static function ($stockItemData) { + unset($stockItemData['sku'], $stockItemData['explicit_qty']); return $stockItemData; }, array_values($stockData) From 7173bd857110193400477419edf4c6a665ced49c Mon Sep 17 00:00:00 2001 From: pradeep1819 Date: Thu, 4 Aug 2022 16:39:40 +0530 Subject: [PATCH 04/10] ACP2E-982: Assignment of sources changes after importing data --- .../Magento/CatalogImportExport/Model/Import/Product.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index 8b422088fb00d..fe15f1c0a5372 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -227,7 +227,7 @@ class Product extends AbstractEntity * Links attribute name-to-link type ID. * * @deprecated 101.1.0 use DI for LinkProcessor class if you want to add additional types - * + * @see It is possible to supply additional link types via DI * @var array */ protected $_linkNameToId = [ @@ -548,6 +548,7 @@ class Product extends AbstractEntity /** * @var \Magento\CatalogInventory\Model\ResourceModel\Stock\ItemFactory * @deprecated 101.0.0 this variable isn't used anymore. + * @see avoid using this variable */ protected $_stockResItemFac; @@ -613,6 +614,7 @@ class Product extends AbstractEntity * @var array * @deprecated 100.0.3 * @since 100.0.3 + * @see avoid using this variable */ protected $productUrlKeys = []; @@ -1280,6 +1282,7 @@ protected function _prepareRowForDb(array $rowData) * Must be called after ALL products saving done. * * @deprecated 101.1.0 use linkProcessor Directly + * @see \Magento\CatalogImportExport\Model\Import\Product\linkProcessor::saveLinks * * @return $this */ @@ -1489,6 +1492,7 @@ private function getNewSkuFieldsForSelect() * @return void * @since 100.0.4 * @deprecated 100.2.3 + * @see avoid using this function */ protected function initMediaGalleryResources() { From 1af2a36580818db4662b5ede912ac18e45888685 Mon Sep 17 00:00:00 2001 From: pradeep1819 Date: Mon, 8 Aug 2022 17:45:59 +0530 Subject: [PATCH 05/10] ACP2E-982: Assignment of sources changes after importing data --- .../Magento/CatalogImportExport/Model/Import/Product.php | 7 +------ .../CatalogImportExport/Model/StockItemImporter.php | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index fe15f1c0a5372..ac18211b44bd4 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -227,7 +227,7 @@ class Product extends AbstractEntity * Links attribute name-to-link type ID. * * @deprecated 101.1.0 use DI for LinkProcessor class if you want to add additional types - * @see It is possible to supply additional link types via DI + * * @var array */ protected $_linkNameToId = [ @@ -548,7 +548,6 @@ class Product extends AbstractEntity /** * @var \Magento\CatalogInventory\Model\ResourceModel\Stock\ItemFactory * @deprecated 101.0.0 this variable isn't used anymore. - * @see avoid using this variable */ protected $_stockResItemFac; @@ -614,7 +613,6 @@ class Product extends AbstractEntity * @var array * @deprecated 100.0.3 * @since 100.0.3 - * @see avoid using this variable */ protected $productUrlKeys = []; @@ -1282,7 +1280,6 @@ protected function _prepareRowForDb(array $rowData) * Must be called after ALL products saving done. * * @deprecated 101.1.0 use linkProcessor Directly - * @see \Magento\CatalogImportExport\Model\Import\Product\linkProcessor::saveLinks * * @return $this */ @@ -1492,7 +1489,6 @@ private function getNewSkuFieldsForSelect() * @return void * @since 100.0.4 * @deprecated 100.2.3 - * @see avoid using this function */ protected function initMediaGalleryResources() { @@ -2340,7 +2336,6 @@ protected function _saveStockItem() $stockItem = $this->getRowExistingStockItem($rowData); $existingStockItemData = $stockItem->getData(); $row = $this->formatStockDataForRow($rowData); - $row['explicit_qty'] = array_key_exists('qty', $rowData); $productIdsToReindex[] = $row['product_id']; $storeId = $this->getRowStoreId($rowData); if (!empty(array_diff_assoc($row, $existingStockItemData)) diff --git a/app/code/Magento/CatalogImportExport/Model/StockItemImporter.php b/app/code/Magento/CatalogImportExport/Model/StockItemImporter.php index e60725446cad6..0e8d3c5fa4cc5 100644 --- a/app/code/Magento/CatalogImportExport/Model/StockItemImporter.php +++ b/app/code/Magento/CatalogImportExport/Model/StockItemImporter.php @@ -50,8 +50,8 @@ public function import(array $stockData) $entityTable = $stockItemResource->getMainTable(); try { $stockImportData = array_map( - static function ($stockItemData) { - unset($stockItemData['sku'], $stockItemData['explicit_qty']); + function ($stockItemData) { + unset($stockItemData['sku']); return $stockItemData; }, array_values($stockData) From cfd9cb64737d7bdcb8df02d8000d83706a219a4d Mon Sep 17 00:00:00 2001 From: pradeep1819 Date: Tue, 23 Aug 2022 16:10:55 +0530 Subject: [PATCH 06/10] ACP2E-982: Assignment of sources changes after importing data --- .../Model/Import/Product.php | 22 +++++++++++-- .../Model/StockItemProcessor.php | 33 +++++++++++++++++++ .../Model/StockItemProcessorInterface.php | 27 +++++++++++++++ .../Magento/CatalogImportExport/etc/di.xml | 1 + 4 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 app/code/Magento/CatalogImportExport/Model/StockItemProcessor.php create mode 100644 app/code/Magento/CatalogImportExport/Model/StockItemProcessorInterface.php diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index ac18211b44bd4..487ae5acdff5a 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -16,6 +16,7 @@ use Magento\CatalogImportExport\Model\Import\Product\StatusProcessor; use Magento\CatalogImportExport\Model\Import\Product\StockProcessor; use Magento\CatalogImportExport\Model\StockItemImporterInterface; +use Magento\CatalogImportExport\Model\StockItemProcessorInterface; use Magento\CatalogInventory\Api\Data\StockItemInterface; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\App\ObjectManager; @@ -227,7 +228,7 @@ class Product extends AbstractEntity * Links attribute name-to-link type ID. * * @deprecated 101.1.0 use DI for LinkProcessor class if you want to add additional types - * + * @see It is possible to supply additional link types via DI * @var array */ protected $_linkNameToId = [ @@ -548,6 +549,7 @@ class Product extends AbstractEntity /** * @var \Magento\CatalogInventory\Model\ResourceModel\Stock\ItemFactory * @deprecated 101.0.0 this variable isn't used anymore. + * @see avoid using this variable */ protected $_stockResItemFac; @@ -613,6 +615,7 @@ class Product extends AbstractEntity * @var array * @deprecated 100.0.3 * @since 100.0.3 + * @see avoid using this variable */ protected $productUrlKeys = []; @@ -751,6 +754,11 @@ class Product extends AbstractEntity */ private $linkProcessor; + /** + * @var StockItemProcessorInterface + */ + private $stockItemProcessor; + /** * @param \Magento\Framework\Json\Helper\Data $jsonHelper * @param \Magento\ImportExport\Helper\Data $importExportData @@ -800,6 +808,7 @@ class Product extends AbstractEntity * @param StockProcessor|null $stockProcessor * @param LinkProcessor|null $linkProcessor * @param File|null $fileDriver + * @param StockItemProcessorInterface|null $stockItemProcessor * @throws LocalizedException * @throws \Magento\Framework\Exception\FileSystemException * @SuppressWarnings(PHPMD.ExcessiveParameterList) @@ -854,7 +863,8 @@ public function __construct( StatusProcessor $statusProcessor = null, StockProcessor $stockProcessor = null, LinkProcessor $linkProcessor = null, - ?File $fileDriver = null + ?File $fileDriver = null, + ?StockItemProcessorInterface $stockItemProcessor = null ) { $this->_eventManager = $eventManager; $this->stockRegistry = $stockRegistry; @@ -918,6 +928,8 @@ public function __construct( $this->dateTimeFactory = $dateTimeFactory ?? ObjectManager::getInstance()->get(DateTimeFactory::class); $this->productRepository = $productRepository ?? ObjectManager::getInstance() ->get(ProductRepositoryInterface::class); + $this->stockItemProcessor = $stockItemProcessor ?? ObjectManager::getInstance() + ->get(StockItemProcessorInterface::class); } /** @@ -1280,6 +1292,7 @@ protected function _prepareRowForDb(array $rowData) * Must be called after ALL products saving done. * * @deprecated 101.1.0 use linkProcessor Directly + * @see \Magento\CatalogImportExport\Model\Import\Product\linkProcessor::saveLinks * * @return $this */ @@ -1489,6 +1502,7 @@ private function getNewSkuFieldsForSelect() * @return void * @since 100.0.4 * @deprecated 100.2.3 + * @see avoid using this function */ protected function initMediaGalleryResources() { @@ -2322,6 +2336,7 @@ protected function _saveStockItem() { while ($bunch = $this->_dataSourceModel->getNextBunch()) { $stockData = []; + $importedData = []; $productIdsToReindex = []; $stockChangedProductIds = []; // Format bunch to stock data rows @@ -2347,12 +2362,13 @@ protected function _saveStockItem() if (!isset($stockData[$sku])) { $stockData[$sku] = $row; + $importedData[$sku] = $rowData; } } // Insert rows if (!empty($stockData)) { - $this->stockItemImporter->import($stockData); + $this->stockItemProcessor->process($stockData, $importedData); } $this->reindexStockStatus($stockChangedProductIds); diff --git a/app/code/Magento/CatalogImportExport/Model/StockItemProcessor.php b/app/code/Magento/CatalogImportExport/Model/StockItemProcessor.php new file mode 100644 index 0000000000000..e32596f85109c --- /dev/null +++ b/app/code/Magento/CatalogImportExport/Model/StockItemProcessor.php @@ -0,0 +1,33 @@ +stockItemImporter = $stockItemImporter; + } + + /** + * @inheritdoc + */ + public function process(array $stockData, array $importedData): void + { + $this->stockItemImporter->import($stockData); + } +} diff --git a/app/code/Magento/CatalogImportExport/Model/StockItemProcessorInterface.php b/app/code/Magento/CatalogImportExport/Model/StockItemProcessorInterface.php new file mode 100644 index 0000000000000..870bddde0116b --- /dev/null +++ b/app/code/Magento/CatalogImportExport/Model/StockItemProcessorInterface.php @@ -0,0 +1,27 @@ + + From f3bd604b3b9ee073043ad02fb3574042f531fe72 Mon Sep 17 00:00:00 2001 From: pradeep1819 Date: Tue, 23 Aug 2022 19:53:48 +0530 Subject: [PATCH 07/10] ACP2E-982: Assignment of sources changes after importing data --- .../Magento/CatalogImportExport/Model/StockItemProcessor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/CatalogImportExport/Model/StockItemProcessor.php b/app/code/Magento/CatalogImportExport/Model/StockItemProcessor.php index e32596f85109c..c1923b0d52ae8 100644 --- a/app/code/Magento/CatalogImportExport/Model/StockItemProcessor.php +++ b/app/code/Magento/CatalogImportExport/Model/StockItemProcessor.php @@ -15,7 +15,7 @@ class StockItemProcessor implements StockItemProcessorInterface private $stockItemImporter; /** - * @param StockItemImporterInterface + * @param StockItemImporterInterface $stockItemImporter */ public function __construct( StockItemImporterInterface $stockItemImporter From 3a2417a4b9ad2c9663d31c264c96adc1d7e99648 Mon Sep 17 00:00:00 2001 From: pradeep1819 Date: Fri, 26 Aug 2022 12:46:18 +0530 Subject: [PATCH 08/10] ACP2E-982: Assignment of sources changes after importing data --- .../Model/Import/Product.php | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index ac18211b44bd4..487ae5acdff5a 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -16,6 +16,7 @@ use Magento\CatalogImportExport\Model\Import\Product\StatusProcessor; use Magento\CatalogImportExport\Model\Import\Product\StockProcessor; use Magento\CatalogImportExport\Model\StockItemImporterInterface; +use Magento\CatalogImportExport\Model\StockItemProcessorInterface; use Magento\CatalogInventory\Api\Data\StockItemInterface; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\App\ObjectManager; @@ -227,7 +228,7 @@ class Product extends AbstractEntity * Links attribute name-to-link type ID. * * @deprecated 101.1.0 use DI for LinkProcessor class if you want to add additional types - * + * @see It is possible to supply additional link types via DI * @var array */ protected $_linkNameToId = [ @@ -548,6 +549,7 @@ class Product extends AbstractEntity /** * @var \Magento\CatalogInventory\Model\ResourceModel\Stock\ItemFactory * @deprecated 101.0.0 this variable isn't used anymore. + * @see avoid using this variable */ protected $_stockResItemFac; @@ -613,6 +615,7 @@ class Product extends AbstractEntity * @var array * @deprecated 100.0.3 * @since 100.0.3 + * @see avoid using this variable */ protected $productUrlKeys = []; @@ -751,6 +754,11 @@ class Product extends AbstractEntity */ private $linkProcessor; + /** + * @var StockItemProcessorInterface + */ + private $stockItemProcessor; + /** * @param \Magento\Framework\Json\Helper\Data $jsonHelper * @param \Magento\ImportExport\Helper\Data $importExportData @@ -800,6 +808,7 @@ class Product extends AbstractEntity * @param StockProcessor|null $stockProcessor * @param LinkProcessor|null $linkProcessor * @param File|null $fileDriver + * @param StockItemProcessorInterface|null $stockItemProcessor * @throws LocalizedException * @throws \Magento\Framework\Exception\FileSystemException * @SuppressWarnings(PHPMD.ExcessiveParameterList) @@ -854,7 +863,8 @@ public function __construct( StatusProcessor $statusProcessor = null, StockProcessor $stockProcessor = null, LinkProcessor $linkProcessor = null, - ?File $fileDriver = null + ?File $fileDriver = null, + ?StockItemProcessorInterface $stockItemProcessor = null ) { $this->_eventManager = $eventManager; $this->stockRegistry = $stockRegistry; @@ -918,6 +928,8 @@ public function __construct( $this->dateTimeFactory = $dateTimeFactory ?? ObjectManager::getInstance()->get(DateTimeFactory::class); $this->productRepository = $productRepository ?? ObjectManager::getInstance() ->get(ProductRepositoryInterface::class); + $this->stockItemProcessor = $stockItemProcessor ?? ObjectManager::getInstance() + ->get(StockItemProcessorInterface::class); } /** @@ -1280,6 +1292,7 @@ protected function _prepareRowForDb(array $rowData) * Must be called after ALL products saving done. * * @deprecated 101.1.0 use linkProcessor Directly + * @see \Magento\CatalogImportExport\Model\Import\Product\linkProcessor::saveLinks * * @return $this */ @@ -1489,6 +1502,7 @@ private function getNewSkuFieldsForSelect() * @return void * @since 100.0.4 * @deprecated 100.2.3 + * @see avoid using this function */ protected function initMediaGalleryResources() { @@ -2322,6 +2336,7 @@ protected function _saveStockItem() { while ($bunch = $this->_dataSourceModel->getNextBunch()) { $stockData = []; + $importedData = []; $productIdsToReindex = []; $stockChangedProductIds = []; // Format bunch to stock data rows @@ -2347,12 +2362,13 @@ protected function _saveStockItem() if (!isset($stockData[$sku])) { $stockData[$sku] = $row; + $importedData[$sku] = $rowData; } } // Insert rows if (!empty($stockData)) { - $this->stockItemImporter->import($stockData); + $this->stockItemProcessor->process($stockData, $importedData); } $this->reindexStockStatus($stockChangedProductIds); From 7c9cb7806d22a70d372cd5789eb1d2c902066c2e Mon Sep 17 00:00:00 2001 From: pradeep1819 Date: Fri, 26 Aug 2022 12:55:51 +0530 Subject: [PATCH 09/10] ACP2E-982: Assignment of sources changes after importing data --- .../CatalogImportExport/Model/Import/Product.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/CatalogImportExport/Model/Import/Product.php b/app/code/Magento/CatalogImportExport/Model/Import/Product.php index 487ae5acdff5a..a436d6af51ed5 100644 --- a/app/code/Magento/CatalogImportExport/Model/Import/Product.php +++ b/app/code/Magento/CatalogImportExport/Model/Import/Product.php @@ -228,7 +228,8 @@ class Product extends AbstractEntity * Links attribute name-to-link type ID. * * @deprecated 101.1.0 use DI for LinkProcessor class if you want to add additional types - * @see It is possible to supply additional link types via DI + * + * @see Magento_CatalogImportExport::etc/di.xml * @var array */ protected $_linkNameToId = [ @@ -549,7 +550,7 @@ class Product extends AbstractEntity /** * @var \Magento\CatalogInventory\Model\ResourceModel\Stock\ItemFactory * @deprecated 101.0.0 this variable isn't used anymore. - * @see avoid using this variable + * @see we don't recommend this approach anymore */ protected $_stockResItemFac; @@ -614,8 +615,9 @@ class Product extends AbstractEntity /** * @var array * @deprecated 100.0.3 + * * @since 100.0.3 - * @see avoid using this variable + * @see we don't recommend this approach anymore */ protected $productUrlKeys = []; @@ -1292,7 +1294,7 @@ protected function _prepareRowForDb(array $rowData) * Must be called after ALL products saving done. * * @deprecated 101.1.0 use linkProcessor Directly - * @see \Magento\CatalogImportExport\Model\Import\Product\linkProcessor::saveLinks + * @see linkProcessor * * @return $this */ @@ -1502,7 +1504,7 @@ private function getNewSkuFieldsForSelect() * @return void * @since 100.0.4 * @deprecated 100.2.3 - * @see avoid using this function + * @see \Magento\CatalogImportExport\Model\Import\Product\MediaGalleryProcessor::initMediaGalleryResources */ protected function initMediaGalleryResources() { From 4984468fce8524abd8accf5764b28134707667c7 Mon Sep 17 00:00:00 2001 From: Oleksandr Dubovyk Date: Wed, 12 Oct 2022 07:34:04 -0500 Subject: [PATCH 10/10] ACP2E-1275: Fix test fail during PR delivery MC-37339: Check notification message container --- .../Test/StoreFrontCheckNotificationMessageContainerTest.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/code/Magento/Theme/Test/Mftf/Test/StoreFrontCheckNotificationMessageContainerTest.xml b/app/code/Magento/Theme/Test/Mftf/Test/StoreFrontCheckNotificationMessageContainerTest.xml index c60385b768bf3..76cfaa461dfaa 100644 --- a/app/code/Magento/Theme/Test/Mftf/Test/StoreFrontCheckNotificationMessageContainerTest.xml +++ b/app/code/Magento/Theme/Test/Mftf/Test/StoreFrontCheckNotificationMessageContainerTest.xml @@ -19,6 +19,7 @@ + @@ -28,6 +29,7 @@ +