1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\SalesInventory\Model\Plugin\Order\Validation;
use Magento\Sales\Api\Data\InvoiceInterface;
use Magento\Sales\Model\Order\Validation\RefundInvoiceInterface;
use Magento\Sales\Api\Data\CreditmemoCreationArgumentsInterface;
use Magento\Sales\Api\Data\CreditmemoInterface;
use Magento\Sales\Api\Data\OrderInterface;
use Magento\SalesInventory\Model\Order\ReturnValidator;
use Magento\Sales\Model\ValidatorResultInterface;
/**
* Class CreditmemoCreationArguments
*/
class InvoiceRefundCreationArguments
{
/**
* @var ReturnValidator
*/
private $returnValidator;
/**
* InvoiceRefundCreationArguments constructor.
* @param ReturnValidator $returnValidator
*/
public function __construct(
ReturnValidator $returnValidator
) {
$this->returnValidator = $returnValidator;
}
/**
* @param RefundInvoiceInterface $refundInvoiceValidator
* @param ValidatorResultInterface $validationResults
* @param InvoiceInterface $invoice
* @param OrderInterface $order
* @param CreditmemoInterface $creditmemo
* @param array $items
* @param bool $isOnline
* @param bool $notify
* @param bool $appendComment
* @param \Magento\Sales\Api\Data\CreditmemoCommentCreationInterface|null $comment
* @param \Magento\Sales\Api\Data\CreditmemoCreationArgumentsInterface|null $arguments
* @return ValidatorResultInterface
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
public function afterValidate(
RefundInvoiceInterface $refundInvoiceValidator,
ValidatorResultInterface $validationResults,
InvoiceInterface $invoice,
OrderInterface $order,
CreditmemoInterface $creditmemo,
array $items = [],
$isOnline = false,
$notify = false,
$appendComment = false,
\Magento\Sales\Api\Data\CreditmemoCommentCreationInterface $comment = null,
\Magento\Sales\Api\Data\CreditmemoCreationArgumentsInterface $arguments = null
) {
if ($this->isReturnToStockItems($arguments)) {
return $validationResults;
}
/** @var int[] $returnToStockItems */
$returnToStockItems = $arguments->getExtensionAttributes()->getReturnToStockItems();
$validationMessage = $this->returnValidator->validate($returnToStockItems, $creditmemo);
if ($validationMessage) {
$validationResults->addMessage($validationMessage);
}
return $validationResults;
}
/**
* @param CreditmemoCreationArgumentsInterface|null $arguments
* @return bool
*/
private function isReturnToStockItems($arguments)
{
return $arguments === null
|| $arguments->getExtensionAttributes() === null
|| $arguments->getExtensionAttributes()->getReturnToStockItems() === null;
}
}