123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Model\Order;
- use Magento\Sales\Api\Data\InvoiceCommentCreationInterface;
- use Magento\Sales\Api\Data\InvoiceCreationArgumentsInterface;
- use Magento\Sales\Api\Data\InvoiceInterface;
- use Magento\Sales\Api\Data\InvoiceItemCreationInterface;
- use Magento\Sales\Api\Data\OrderInterface;
- use Magento\Sales\Model\Service\InvoiceService;
- /**
- * Class InvoiceDocumentFactory
- *
- * @api
- * @since 100.1.2
- */
- class InvoiceDocumentFactory
- {
- /**
- * @var InvoiceService
- */
- private $invoiceService;
- /**
- * InvoiceDocumentFactory constructor.
- * @param InvoiceService $invoiceService
- */
- public function __construct(
- InvoiceService $invoiceService
- ) {
- $this->invoiceService = $invoiceService;
- }
- /**
- * @param OrderInterface $order
- * @param array $items
- * @param InvoiceCommentCreationInterface|null $comment
- * @param bool|false $appendComment
- * @param InvoiceCreationArgumentsInterface|null $arguments
- * @return InvoiceInterface
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- * @since 100.1.2
- */
- public function create(
- OrderInterface $order,
- $items = [],
- InvoiceCommentCreationInterface $comment = null,
- $appendComment = false,
- InvoiceCreationArgumentsInterface $arguments = null
- ) {
- $invoiceItems = $this->itemsToArray($items);
- $invoice = $this->invoiceService->prepareInvoice($order, $invoiceItems);
- if ($comment) {
- $invoice->addComment(
- $comment->getComment(),
- $appendComment,
- $comment->getIsVisibleOnFront()
- );
- }
- return $invoice;
- }
- /**
- * Convert Items To Array
- *
- * @param InvoiceItemCreationInterface[] $items
- * @return array
- */
- private function itemsToArray($items = [])
- {
- $invoiceItems = [];
- foreach ($items as $item) {
- $invoiceItems[$item->getOrderItemId()] = $item->getQty();
- }
- return $invoiceItems;
- }
- }
|