6
6
namespace Magento \SalesInventory \Model \Order ;
7
7
8
8
use Magento \Sales \Api \Data \CreditmemoInterface ;
9
- use Magento \Sales \Api \Data \CreditmemoItemInterface ;
10
9
use Magento \Sales \Api \Data \OrderInterface ;
11
10
12
11
/**
@@ -29,75 +28,58 @@ class ReturnProcessor
29
28
*/
30
29
private $ priceIndexer ;
31
30
32
- /**
33
- * @var \Magento\Sales\Api\CreditmemoRepositoryInterface
34
- */
35
- private $ creditmemoRepository ;
36
-
37
31
/**
38
32
* @var \Magento\Store\Model\StoreManagerInterface
39
33
*/
40
34
private $ storeManager ;
41
35
42
- /**
43
- * @var \Magento\Sales\Api\OrderRepositoryInterface
44
- */
45
- private $ orderRepository ;
46
-
47
36
/**
48
37
* @var \Magento\Sales\Api\OrderItemRepositoryInterface
49
38
*/
50
39
private $ orderItemRepository ;
51
40
52
41
/**
53
- * ReturnToStockPlugin constructor.
54
- * @param \Magento\CatalogInventory\Api\StockConfigurationInterface $stockConfiguration
42
+ * ReturnProcessor constructor.
55
43
* @param \Magento\CatalogInventory\Api\StockManagementInterface $stockManagement
56
44
* @param \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexer
57
45
* @param \Magento\Catalog\Model\Indexer\Product\Price\Processor $priceIndexer
58
- * @param \Magento\Sales\Api\CreditmemoRepositoryInterface $creditmemoRepository
59
46
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
60
- * @param \Magento\Sales\Api\OrderRepositoryInterface $orderRepository
61
47
* @param \Magento\Sales\Api\OrderItemRepositoryInterface $orderItemRepository
62
48
*/
63
49
public function __construct (
64
50
\Magento \CatalogInventory \Api \StockManagementInterface $ stockManagement ,
65
51
\Magento \CatalogInventory \Model \Indexer \Stock \Processor $ stockIndexer ,
66
52
\Magento \Catalog \Model \Indexer \Product \Price \Processor $ priceIndexer ,
67
- \Magento \Sales \Api \CreditmemoRepositoryInterface $ creditmemoRepository ,
68
53
\Magento \Store \Model \StoreManagerInterface $ storeManager ,
69
- \Magento \Sales \Api \OrderRepositoryInterface $ orderRepository ,
70
54
\Magento \Sales \Api \OrderItemRepositoryInterface $ orderItemRepository
71
55
) {
72
56
$ this ->stockManagement = $ stockManagement ;
73
57
$ this ->stockIndexerProcessor = $ stockIndexer ;
74
58
$ this ->priceIndexer = $ priceIndexer ;
75
- $ this ->creditmemoRepository = $ creditmemoRepository ;
76
59
$ this ->storeManager = $ storeManager ;
77
- $ this ->orderRepository = $ orderRepository ;
78
60
$ this ->orderItemRepository = $ orderItemRepository ;
79
61
}
80
62
81
63
/**
82
64
* @param CreditmemoInterface $creditmemo
83
65
* @param OrderInterface $order
84
66
* @param array $returnToStockItems
67
+ * @param bool $isAutoReturn
85
68
* @return void
86
69
*/
87
70
public function execute (
88
71
CreditmemoInterface $ creditmemo ,
89
72
OrderInterface $ order ,
90
- array $ returnToStockItems = []
73
+ array $ returnToStockItems = [],
74
+ $ isAutoReturn = false
91
75
) {
92
76
$ itemsToUpdate = [];
93
77
foreach ($ creditmemo ->getItems () as $ item ) {
94
- $ qty = $ item ->getQty ();
95
78
$ productId = $ item ->getProductId ();
96
79
$ orderItem = $ this ->orderItemRepository ->get ($ item ->getOrderItemId ());
97
80
$ parentItemId = $ orderItem ->getParentItemId ();
98
- if ($ this ->canReturnItem ($ item , $ qty , $ parentItemId , $ returnToStockItems )) {
99
- $ parentItem = $ parentItemId ? $ this ->getItemByOrderId ($ creditmemo , $ parentItemId ) : false ;
100
- $ qty = $ parentItem ? $ parentItem ->getQty () * $ qty : $ qty ;
81
+ $ qty = $ item ->getQty ();
82
+ if ($ isAutoReturn || $ this ->canReturnItem ($ item , $ qty , $ parentItemId , $ returnToStockItems )) {
101
83
if (isset ($ itemsToUpdate [$ productId ])) {
102
84
$ itemsToUpdate [$ productId ] += $ qty ;
103
85
} else {
@@ -122,21 +104,6 @@ public function execute(
122
104
}
123
105
}
124
106
125
- /**
126
- * @param \Magento\Sales\Api\Data\CreditmemoInterface $creditmemo
127
- * @param int $parentItemId
128
- * @return bool|CreditmemoItemInterface
129
- */
130
- private function getItemByOrderId (\Magento \Sales \Api \Data \CreditmemoInterface $ creditmemo , $ parentItemId )
131
- {
132
- foreach ($ creditmemo ->getItems () as $ item ) {
133
- if ($ item ->getOrderItemId () == $ parentItemId ) {
134
- return $ item ;
135
- }
136
- }
137
- return false ;
138
- }
139
-
140
107
/**
141
108
* @param \Magento\Sales\Api\Data\CreditmemoItemInterface $item
142
109
* @param int $qty
0 commit comments