Skip to content

Commit ab3125d

Browse files
committed
MAGETWO-67240: Duplicate and broken products appear after import
1 parent 00f46ce commit ab3125d

File tree

2 files changed

+31
-27
lines changed

2 files changed

+31
-27
lines changed

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

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2191,38 +2191,42 @@ protected function _saveStockItem()
21912191

21922192
$row = [];
21932193
$sku = $rowData[self::COL_SKU];
2194-
$row['product_id'] = $this->skuProcessor->getNewSku($sku)['entity_id'];
2195-
$productIdsToReindex[] = $row['product_id'];
2194+
if ($this->skuProcessor->getNewSku($sku) !== null) {
2195+
$row['product_id'] = $this->skuProcessor->getNewSku($sku)['entity_id'];
2196+
$productIdsToReindex[] = $row['product_id'];
21962197

2197-
$row['website_id'] = $this->stockConfiguration->getDefaultScopeId();
2198-
$row['stock_id'] = $this->stockRegistry->getStock($row['website_id'])->getStockId();
2198+
$row['website_id'] = $this->stockConfiguration->getDefaultScopeId();
2199+
$row['stock_id'] = $this->stockRegistry->getStock($row['website_id'])->getStockId();
21992200

2200-
$stockItemDo = $this->stockRegistry->getStockItem($row['product_id'], $row['website_id']);
2201-
$existStockData = $stockItemDo->getData();
2201+
$stockItemDo = $this->stockRegistry->getStockItem($row['product_id'], $row['website_id']);
2202+
$existStockData = $stockItemDo->getData();
22022203

2203-
$row = array_merge(
2204-
$this->defaultStockData,
2205-
array_intersect_key($existStockData, $this->defaultStockData),
2206-
array_intersect_key($rowData, $this->defaultStockData),
2207-
$row
2208-
);
2204+
$row = array_merge(
2205+
$this->defaultStockData,
2206+
array_intersect_key($existStockData, $this->defaultStockData),
2207+
array_intersect_key($rowData, $this->defaultStockData),
2208+
$row
2209+
);
22092210

2210-
if ($this->stockConfiguration->isQty(
2211-
$this->skuProcessor->getNewSku($sku)['type_id']
2212-
)) {
2213-
$stockItemDo->setData($row);
2214-
$row['is_in_stock'] = $this->stockStateProvider->verifyStock($stockItemDo);
2215-
if ($this->stockStateProvider->verifyNotification($stockItemDo)) {
2216-
$row['low_stock_date'] = $this->dateTime->gmDate(
2217-
'Y-m-d H:i:s',
2218-
(new \DateTime())->getTimestamp()
2219-
);
2211+
if ($this->stockConfiguration->isQty(
2212+
$this->skuProcessor->getNewSku($sku)['type_id']
2213+
)
2214+
) {
2215+
$stockItemDo->setData($row);
2216+
$row['is_in_stock'] = $this->stockStateProvider->verifyStock($stockItemDo);
2217+
if ($this->stockStateProvider->verifyNotification($stockItemDo)) {
2218+
$row['low_stock_date'] = $this->dateTime->gmDate(
2219+
'Y-m-d H:i:s',
2220+
(new \DateTime())->getTimestamp()
2221+
);
2222+
}
2223+
$row['stock_status_changed_auto'] =
2224+
(int)!$this->stockStateProvider->verifyStock($stockItemDo);
2225+
} else {
2226+
$row['qty'] = 0;
22202227
}
2221-
$row['stock_status_changed_auto'] =
2222-
(int) !$this->stockStateProvider->verifyStock($stockItemDo);
2223-
} else {
2224-
$row['qty'] = 0;
22252228
}
2229+
22262230
if (!isset($stockData[$sku])) {
22272231
$stockData[$sku] = $row;
22282232
}

app/code/Magento/ConfigurableImportExport/Model/Import/Product/Type/Configurable.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,7 @@ public function saveData()
768768
}
769769
// remember SCOPE_DEFAULT row data
770770
$scope = $this->_entityModel->getRowScope($rowData);
771-
if ((ImportProduct::SCOPE_DEFAULT == $scope) &&
771+
if (ImportProduct::SCOPE_DEFAULT == $scope &&
772772
!empty($rowData[ImportProduct::COL_SKU])) {
773773
$sku = strtolower($rowData[ImportProduct::COL_SKU]);
774774
$this->_productData = isset($newSku[$sku]) ? $newSku[$sku] : $oldSku[$sku];

0 commit comments

Comments
 (0)