Рахунок-фактура або інвойс (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, і вся інформація, пов’язана з замовленням, буде видалена разом з ним.