55 */
66namespace Magento \InventoryDataExporter \Plugin ;
77
8+ use Magento \DataExporter \Model \Logging \CommerceDataExportLoggerInterface ;
89use Magento \Inventory \Model \ResourceModel \SourceItem \DeleteMultiple ;
910use Magento \InventoryApi \Api \Data \SourceItemInterface ;
1011use Magento \InventoryDataExporter \Model \Provider \StockStatusIdBuilder ;
1516 */
1617class 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