Skip to content

Commit b46365a

Browse files
authored
MDEE-463: inventory exporter warning (#273)
1 parent ac3f176 commit b46365a

File tree

2 files changed

+41
-25
lines changed

2 files changed

+41
-25
lines changed

InventoryDataExporter/Plugin/BulkSourceUnassign.php

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
namespace Magento\InventoryDataExporter\Plugin;
77

8+
use Magento\DataExporter\Model\Logging\CommerceDataExportLoggerInterface;
89
use Magento\InventoryCatalogApi\Api\BulkSourceUnassignInterface;
910
use Magento\InventoryDataExporter\Model\Provider\StockStatusIdBuilder;
1011
use Magento\InventoryDataExporter\Model\Query\StockStatusDeleteQuery;
@@ -14,18 +15,20 @@
1415
*/
1516
class BulkSourceUnassign
1617
{
17-
/**
18-
* @var StockStatusDeleteQuery
19-
*/
20-
private $stockStatusDeleteQuery;
18+
private StockStatusDeleteQuery $stockStatusDeleteQuery;
19+
20+
private CommerceDataExportLoggerInterface $logger;
2121

2222
/**
2323
* @param StockStatusDeleteQuery $stockStatusDeleteQuery
24+
* @param CommerceDataExportLoggerInterface $logger
2425
*/
2526
public function __construct(
26-
StockStatusDeleteQuery $stockStatusDeleteQuery
27+
StockStatusDeleteQuery $stockStatusDeleteQuery,
28+
CommerceDataExportLoggerInterface $logger
2729
) {
2830
$this->stockStatusDeleteQuery = $stockStatusDeleteQuery;
31+
$this->logger = $logger;
2932
}
3033

3134
/**
@@ -45,12 +48,16 @@ public function afterExecute(
4548
array $skus,
4649
array $sourceCodes
4750
): int {
48-
$sourcesAssignedToProducts = $this->stockStatusDeleteQuery->getStocksAssignedToSkus($skus);
49-
$sourcesByStocks = $this->stockStatusDeleteQuery->getStocksWithSources($sourceCodes);
50-
$stocksToDelete = $this->getStocksToDelete($skus, $sourcesByStocks, $sourcesAssignedToProducts);
51+
try {
52+
$sourcesAssignedToProducts = $this->stockStatusDeleteQuery->getStocksAssignedToSkus($skus);
53+
$sourcesByStocks = $this->stockStatusDeleteQuery->getStocksWithSources($sourceCodes);
54+
$stocksToDelete = $this->getStocksToDelete($skus, $sourcesByStocks, $sourcesAssignedToProducts);
5155

52-
if (!empty($stocksToDelete)) {
53-
$this->stockStatusDeleteQuery->markStockStatusesAsDeleted($stocksToDelete);
56+
if (!empty($stocksToDelete)) {
57+
$this->stockStatusDeleteQuery->markStockStatusesAsDeleted($stocksToDelete);
58+
}
59+
} catch (\Throwable $e) {
60+
$this->logger->warning('Bulk source unassign error', ['exception' => $e]);
5461
}
5562

5663
return $result;

InventoryDataExporter/Plugin/MarkItemsAsDeleted.php

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
namespace Magento\InventoryDataExporter\Plugin;
77

8+
use Magento\DataExporter\Model\Logging\CommerceDataExportLoggerInterface;
89
use Magento\Inventory\Model\ResourceModel\SourceItem\DeleteMultiple;
910
use Magento\InventoryApi\Api\Data\SourceItemInterface;
1011
use Magento\InventoryDataExporter\Model\Provider\StockStatusIdBuilder;
@@ -15,18 +16,19 @@
1516
*/
1617
class MarkItemsAsDeleted
1718
{
18-
/**
19-
* @var StockStatusDeleteQuery
20-
*/
21-
private $stockStatusDeleteQuery;
19+
private StockStatusDeleteQuery $stockStatusDeleteQuery;
20+
private CommerceDataExportLoggerInterface $logger;
2221

2322
/**
2423
* @param StockStatusDeleteQuery $stockStatusDeleteQuery
24+
* @param CommerceDataExportLoggerInterface $logger
2525
*/
2626
public function __construct(
27-
StockStatusDeleteQuery $stockStatusDeleteQuery
27+
StockStatusDeleteQuery $stockStatusDeleteQuery,
28+
CommerceDataExportLoggerInterface $logger
2829
) {
2930
$this->stockStatusDeleteQuery = $stockStatusDeleteQuery;
31+
$this->logger = $logger;
3032
}
3133

3234
/**
@@ -42,18 +44,22 @@ public function beforeExecute(
4244
DeleteMultiple $subject,
4345
array $sourceItems
4446
): void {
45-
$deletedSourceItems = [];
46-
foreach ($sourceItems as $sourceItem) {
47-
$deletedSourceItems[$sourceItem->getSku()][] = $sourceItem->getSourceCode();
48-
}
47+
try {
48+
$deletedSourceItems = [];
49+
foreach ($sourceItems as $sourceItem) {
50+
$deletedSourceItems[$sourceItem->getSku()][] = $sourceItem->getSourceCode();
51+
}
4952

50-
$fetchedSourceItems = $this->stockStatusDeleteQuery->getStocksAssignedToSkus(array_keys($deletedSourceItems));
53+
$fetchedSourceItems = $this->stockStatusDeleteQuery->getStocksAssignedToSkus(array_keys($deletedSourceItems));
5154

52-
if (!empty($fetchedSourceItems)) {
53-
$stocksToDelete = $this->getStocksToDelete($deletedSourceItems, $fetchedSourceItems);
54-
}
55-
if (!empty($stocksToDelete)) {
56-
$this->stockStatusDeleteQuery->markStockStatusesAsDeleted($stocksToDelete);
55+
if (!empty($fetchedSourceItems)) {
56+
$stocksToDelete = $this->getStocksToDelete($deletedSourceItems, $fetchedSourceItems);
57+
}
58+
if (!empty($stocksToDelete)) {
59+
$this->stockStatusDeleteQuery->markStockStatusesAsDeleted($stocksToDelete);
60+
}
61+
} catch (\Throwable $e) {
62+
$this->logger->warning('Multiple source delete error', ['exception' => $e]);
5763
}
5864
}
5965

@@ -68,6 +74,9 @@ private function getStocksToDelete(array $deletedSourceItems, array $fetchedSour
6874
{
6975
$stocksToDelete = [];
7076
foreach ($deletedSourceItems as $deletedItemSku => $deletedItemSources) {
77+
if (!isset($fetchedSourceItems[$deletedItemSku])) {
78+
continue ;
79+
}
7180
foreach ($fetchedSourceItems[$deletedItemSku] as $fetchedItemStockId => $fetchedItemSources) {
7281
if ($this->isContainsAllKeys($fetchedItemSources, $deletedItemSources)) {
7382
$stockStatusId = StockStatusIdBuilder::build(

0 commit comments

Comments
 (0)