diff --git a/vendor/magento/module-sales-inventory/Model/Plugin/Order/CreditmemoDocumentFactoryPlugin.php b/vendor/magento/module-sales-inventory/Model/Plugin/Order/CreditmemoDocumentFactoryPlugin.php new file mode 100644 index 00000000000..74b3f52fd91 --- /dev/null +++ b/vendor/magento/module-sales-inventory/Model/Plugin/Order/CreditmemoDocumentFactoryPlugin.php @@ -0,0 +1,95 @@ +getExtensionAttributes() !== null + && $arguments->getExtensionAttributes()->getReturnToStockItems() !== null + ) { + $returnToStockItems = $arguments->getExtensionAttributes()->getReturnToStockItems(); + foreach ($creditmemo->getItems() as $item) { + if (in_array($item->getOrderItemId(), $returnToStockItems)) { + $item->setBackToStock(true); + } + } + } + return $creditmemo; + } + + /** + * Synchronize "back_to_stock" with extension attribute "return_to_stock_items" for creditmemo items + * + * @param CreditmemoDocumentFactory $subject + * @param CreditmemoInterface $creditmemo + * @param InvoiceInterface $invoice + * @param array $items + * @param CreditmemoCommentCreationInterface|null $comment + * @param bool $appendComment + * @param CreditmemoCreationArgumentsInterface|null $arguments + * @return CreditmemoInterface + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + */ + public function afterCreateFromInvoice( + CreditmemoDocumentFactory $subject, + CreditmemoInterface $creditmemo, + InvoiceInterface $invoice, + array $items = [], + CreditmemoCommentCreationInterface $comment = null, + $appendComment = false, + CreditmemoCreationArgumentsInterface $arguments = null + ): CreditmemoInterface { + if ($arguments !== null + && $arguments->getExtensionAttributes() !== null + && $arguments->getExtensionAttributes()->getReturnToStockItems() !== null + ) { + $returnToStockItems = $arguments->getExtensionAttributes()->getReturnToStockItems(); + foreach ($creditmemo->getItems() as $item) { + if (in_array($item->getOrderItemId(), $returnToStockItems)) { + $item->setBackToStock(true); + } + } + } + return $creditmemo; + } +} diff --git a/vendor/magento/module-sales-inventory/etc/di.xml b/vendor/magento/module-sales-inventory/etc/di.xml index e7464d6df3f..9efc3520685 100644 --- a/vendor/magento/module-sales-inventory/etc/di.xml +++ b/vendor/magento/module-sales-inventory/etc/di.xml @@ -6,11 +6,8 @@ */ --> - - - - - + +