Рахунок-фактура – це елемент Обробка замовлень Magento , який є таким же важливим, як і саме замовлення. Рахунок-фактура – це документ, який означає «угоду» між магазином та особою та містить усі деталі замовлення.
Зазвичай рахунки-фактури на замовлення в 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 може бути простою;)
Хоча створення рахунків-фактур вручну не є поширеною практикою, буде корисно знати, як це зробити. Крім того, ви також можете створити його в панелі адміністратора. Вам просто потрібно натиснути кнопку Рахунок-фактура на відповідній сторінці перегляду замовлення.
Якщо ви хочете видалити рахунок-фактуру, ви можете просто видалити замовлення в Magento 2 , і вся інформація, пов’язана із замовленням, буде видалена разом із ним.