orderInvoiceStatusRepository = $orderInvoiceStatusRepository; $this->invoiceRepository = $invoiceRepository; $this->criteriaBuilderFactory = $criteriaBuilderFactory; $this->invoiceSentRegistry = $invoiceSentRegistry; } /** * Determine whether or not an order has at least one invoice sent to Vertex * * @param int $orderId * @return bool */ public function hasInvoice($orderId) { try { $this->orderInvoiceStatusRepository->getByOrderId($orderId); return true; } catch (NoSuchEntityException $e) { // Not a failure condition here } /** @var SearchCriteriaBuilder $criteriaBuilder */ $criteriaBuilder = $this->criteriaBuilderFactory->create(); $criteriaBuilder->addFilter(InvoiceInterface::ORDER_ID, $orderId); $criteria = $criteriaBuilder->create(); $invoices = $this->invoiceRepository->getList($criteria); foreach ($invoices->getItems() as $invoice) { if ($this->invoiceSentRegistry->hasInvoiceBeenSentToVertex($invoice)) { return true; } } return false; } }