9
9
10
10
use Magento \InventoryApi \Api \Data \SourceItemInterface ;
11
11
use Magento \InventoryApi \Api \SourceItemsSaveInterface ;
12
+ use Magento \InventoryCatalogApi \Api \DefaultSourceProviderInterface ;
12
13
use Magento \InventoryIndexer \Indexer \SourceItem \GetSourceItemIds ;
13
14
use Magento \InventoryIndexer \Indexer \SourceItem \SourceItemIndexer ;
14
15
@@ -27,14 +28,24 @@ class ReindexAfterSourceItemsSavePlugin
27
28
*/
28
29
private $ sourceItemIndexer ;
29
30
31
+ /**
32
+ * @var DefaultSourceProviderInterface
33
+ */
34
+ private $ defaultSourceProvider ;
35
+
30
36
/**
31
37
* @param GetSourceItemIds $getSourceItemIds
32
38
* @param SourceItemIndexer $sourceItemIndexer
39
+ * @param DefaultSourceProviderInterface $defaultSourceProvider
33
40
*/
34
- public function __construct (GetSourceItemIds $ getSourceItemIds , SourceItemIndexer $ sourceItemIndexer )
35
- {
41
+ public function __construct (
42
+ GetSourceItemIds $ getSourceItemIds ,
43
+ SourceItemIndexer $ sourceItemIndexer ,
44
+ DefaultSourceProviderInterface $ defaultSourceProvider
45
+ ) {
36
46
$ this ->getSourceItemIds = $ getSourceItemIds ;
37
47
$ this ->sourceItemIndexer = $ sourceItemIndexer ;
48
+ $ this ->defaultSourceProvider = $ defaultSourceProvider ;
38
49
}
39
50
40
51
/**
@@ -49,9 +60,22 @@ public function afterExecute(
49
60
$ result ,
50
61
array $ sourceItems
51
62
) {
63
+ $ sourceItems = $ this ->sanitizeSources ($ sourceItems );
52
64
$ sourceItemIds = $ this ->getSourceItemIds ->execute ($ sourceItems );
53
65
if (count ($ sourceItemIds )) {
54
66
$ this ->sourceItemIndexer ->executeList ($ sourceItemIds );
55
67
}
56
68
}
69
+
70
+ private function sanitizeSources (array $ sourceItems ) : array
71
+ {
72
+ $ result = [];
73
+ $ defaultCode = $ this ->defaultSourceProvider ->getCode ();
74
+ foreach ($ sourceItems as $ item ) {
75
+ if ($ item ->getSourceCode () !== $ defaultCode ) {
76
+ $ result [] = $ item ;
77
+ }
78
+ }
79
+ return $ result ;
80
+ }
57
81
}
0 commit comments