Skip to content

Commit c93ac28

Browse files
committed
ACP2E-4142: Post-Patch ACP2E-4118: Stock Threshold Change in Admin Causes Negative Salable Quantities and Stock Status Mismatch
1 parent 8bb30a1 commit c93ac28

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

app/code/Magento/CatalogImportExport/Model/Import/Product.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2530,22 +2530,22 @@ protected function _saveStockItem()
25302530

25312531
$row = [];
25322532
$sku = $rowData[self::COL_SKU];
2533+
$storeId = $this->getRowStoreId($rowData);
25332534
if ($this->skuProcessor->getNewSku($sku) !== null) {
25342535
$stockItem = $this->getRowExistingStockItem($rowData);
25352536
$existingStockItemData = $stockItem->getData();
25362537
$row = $this->formatStockDataForRow($rowData);
25372538
$productIdsToReindex[] = $row['product_id'];
2538-
$storeId = $this->getRowStoreId($rowData);
25392539
if (!empty(array_diff_assoc($row, $existingStockItemData))
25402540
|| $this->statusProcessor->isStatusChanged($sku, $storeId)
25412541
) {
25422542
$stockChangedProductIds[] = $row['product_id'];
25432543
}
25442544
}
25452545

2546-
if (!isset($stockData[$sku])) {
2547-
$stockData[$sku] = $row;
2548-
$importedData[$sku] = $rowData;
2546+
if (!isset($stockData[$sku][$storeId])) {
2547+
$stockData[$sku][$storeId] = $row;
2548+
$importedData[$sku][$storeId] = $rowData;
25492549
}
25502550
}
25512551

@@ -3399,7 +3399,7 @@ private function formatStockDataForRow(array $rowData): array
33993399
{
34003400
$sku = $rowData[self::COL_SKU];
34013401
$row['product_id'] = $this->skuProcessor->getNewSku($sku)['entity_id'];
3402-
$row['website_id'] = $this->stockConfiguration->getDefaultScopeId();
3402+
$row['website_id'] = $this->stockConfiguration->getDefaultScopeId();//here be the problem
34033403
$row['stock_id'] = $this->stockRegistry->getStock($row['website_id'])->getStockId();
34043404

34053405
$stockItemDo = $this->stockRegistry->getStockItem($row['product_id'], $row['website_id']);

app/code/Magento/CatalogImportExport/Model/StockItemProcessor.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
namespace Magento\CatalogImportExport\Model;
99

10+
use Magento\Store\Model\Store;
11+
1012
class StockItemProcessor implements StockItemProcessorInterface
1113
{
1214
/**
@@ -28,6 +30,14 @@ public function __construct(
2830
*/
2931
public function process(array $stockData, array $importedData): void
3032
{
31-
$this->stockItemImporter->import($stockData);
33+
$importStockData = [];
34+
foreach ($stockData as $sku => $productStockData) {
35+
if (isset($stockData[Store::DEFAULT_STORE_ID])) {
36+
$importStockData[$sku] = $productStockData[Store::DEFAULT_STORE_ID];
37+
} else {
38+
$importStockData[$sku] = reset($productStockData);
39+
}
40+
}
41+
$this->stockItemImporter->import($importStockData);
3242
}
3343
}

0 commit comments

Comments
 (0)