Рахунок-фактура або інвойс (invoice) – це елемент процесу обробки замовлення, який настільки ж важливий, як і саме замовлення. Рахунок-фактура – це документ, який є «угодою» між магазином та особою та містить усі деталі замовлення.
Зазвичай інвойси на замовлення в Magento 2 створюються автоматично, коли платіж авторизується або перераховується магазину. Однак бувають випадки, коли вам потрібно створити інвойс програмно в Magento 2.
Це якраз той випадок. Ми покажемо вам, як це зробити всього за 1 крок:
Щоб створити рахунок-фактуру програмно в Magento 2, створіть нову модель у своєму модулі, напр: app/code/Vendor/Module/Model/CreateInvoice.php з таким кодом:
<?php namespace [Vendor]\[Module]\Model; use Magento\Sales\Api\OrderRepositoryInterface; use Magento\Sales\Model\Service\InvoiceService; use Magento\Framework\DB\Transaction; use Magento\Sales\Model\Order\Email\Sender\InvoiceSender; class CreateInvoice { protected $orderRepository; protected $invoiceService; protected $transaction; protected $invoiceSender; public function __construct( OrderRepositoryInterface $orderRepository, InvoiceService $invoiceService, InvoiceSender $invoiceSender, Transaction $transaction ) { $this->orderRepository = $orderRepository; $this->invoiceService = $invoiceService; $this->transaction = $transaction; $this->invoiceSender = $invoiceSender; } public function execute($orderId) { $order = $this->orderRepository->get($orderId); if ($order->canInvoice()) { $invoice = $this->invoiceService->prepareInvoice($order); $invoice->register(); $invoice->save(); $transactionSave = $this->transaction ->addObject($invoice) ->addObject($invoice->getOrder()); $transactionSave->save(); $this->invoiceSender->send($invoice); $order->addCommentToStatusHistory( __('Notified customer about invoice creation #%1.', $invoice->getId()) )->setIsCustomerNotified(true)->save(); } } }
Потів ви можете швидко перевірити як він працює з ObjectManager:
\Magento\Framework\App\ObjectManager::getInstance()
->create(\Vendor\Module\Model\CreateInvoice::class)
->execute(4);
Як бачите, у програмному створенні інвойсів не має нічого складного. Розробка Magento може бути легкою;)
Хоча вам не часто потрібно буде створювати інвойси вручну, вам корисно знати, як це робити. Крім того, ви також можете створити рахунок-фактуру в адмін панелі. Вам просто потрібно натиснути кнопку Invoice на сторінці перегляду відповідного замовлення.
Якщо ви хочете видалити рахунок-фактуру, ви можете просто видалити замовлення у Magento 2, і вся інформація, пов’язана з замовленням, буде видалена разом з ним.