orderValidator = $orderValidator; $this->creditmemoValidator = $creditmemoValidator; $this->itemCreationValidator = $itemCreationValidator; $this->validatorResultMerger = $validatorResultMerger; } /** * @inheritdoc */ public function validate( OrderInterface $order, CreditmemoInterface $creditmemo, array $items = [], $notify = false, $appendComment = false, \Magento\Sales\Api\Data\CreditmemoCommentCreationInterface $comment = null, \Magento\Sales\Api\Data\CreditmemoCreationArgumentsInterface $arguments = null ) { $orderValidationResult = $this->orderValidator->validate( $order, [ CanRefund::class ] ); $creditmemoValidationResult = $this->creditmemoValidator->validate( $creditmemo, [ QuantityValidator::class, TotalsValidator::class ] ); $itemsValidation = []; foreach ($items as $item) { $itemsValidation[] = $this->itemCreationValidator->validate( $item, [CreationQuantityValidator::class], $order )->getMessages(); } return $this->validatorResultMerger->merge( $orderValidationResult, $creditmemoValidationResult, ...$itemsValidation ); } }