Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RefundInvoice.php
Go to the documentation of this file.
1 <?php
7 
19 
24 {
28  private $orderValidator;
29 
33  private $creditmemoValidator;
34 
38  private $itemCreationValidator;
39 
43  private $invoiceValidator;
44 
48  private $validatorResultMerger;
49 
58  public function __construct(
59  OrderValidatorInterface $orderValidator,
60  CreditmemoValidatorInterface $creditmemoValidator,
61  ItemCreationValidatorInterface $itemCreationValidator,
62  InvoiceValidatorInterface $invoiceValidator,
63  ValidatorResultMerger $validatorResultMerger
64  ) {
65  $this->orderValidator = $orderValidator;
66  $this->creditmemoValidator = $creditmemoValidator;
67  $this->itemCreationValidator = $itemCreationValidator;
68  $this->invoiceValidator = $invoiceValidator;
69  $this->validatorResultMerger = $validatorResultMerger;
70  }
71 
75  public function validate(
79  array $items = [],
80  $isOnline = false,
81  $notify = false,
82  $appendComment = false,
83  \Magento\Sales\Api\Data\CreditmemoCommentCreationInterface $comment = null,
84  \Magento\Sales\Api\Data\CreditmemoCreationArgumentsInterface $arguments = null
85  ) {
86  $orderValidationResult = $this->orderValidator->validate(
87  $order,
88  [
89  CanRefund::class
90  ]
91  );
92  $creditmemoValidationResult = $this->creditmemoValidator->validate(
94  [
95  QuantityValidator::class,
96  TotalsValidator::class
97  ]
98  );
99 
100  $itemsValidation = [];
101  foreach ($items as $item) {
102  $itemsValidation[] = $this->itemCreationValidator->validate(
103  $item,
104  [CreationQuantityValidator::class],
105  $order
106  )->getMessages();
107  }
108 
109  $invoiceValidationResult = $this->invoiceValidator->validate(
110  $invoice,
111  [
112  \Magento\Sales\Model\Order\Invoice\Validation\CanRefund::class
113  ]
114  );
115 
116  return $this->validatorResultMerger->merge(
117  $orderValidationResult,
118  $creditmemoValidationResult,
119  $invoiceValidationResult->getMessages(),
120  ...$itemsValidation
121  );
122  }
123 }
$order
Definition: order.php:55
validate(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)
__construct(OrderValidatorInterface $orderValidator, CreditmemoValidatorInterface $creditmemoValidator, ItemCreationValidatorInterface $itemCreationValidator, InvoiceValidatorInterface $invoiceValidator, ValidatorResultMerger $validatorResultMerger)
$invoice
$arguments
$items