Your IP : 127.0.0.1


Current Path : /home/dev2.destoffenstraat.com/app/code/Mrgig/MV/Controller/Adminhtml/Invoice/
Upload File :
Current File : /home/dev2.destoffenstraat.com/app/code/Mrgig/MV/Controller/Adminhtml/Invoice/MultiSend.php

<?php

namespace Mrgig\MV\Controller\Adminhtml\Invoice;

use Mrgig\MV\Model\Config\Source\Status as MVStatus;
use Magento\Framework\Controller\ResultFactory;

class MultiSend extends \Magento\Backend\App\Action
{
    protected $_resultPageFactory;

    public function __construct(
        \Magento\Backend\App\Action\Context $context,
        \Magento\Ui\Component\MassAction\Filter $filter,
        \Magento\Sales\Model\ResourceModel\Order\Invoice\CollectionFactory $collectionFactory,
        \Magento\Sales\Api\InvoiceRepositoryInterface $invoiceRepository,
        \Mrgig\MV\Model\CustomerInvoice $customerInvoice
    ) 
    {
        parent::__construct($context);
        $this->filter = $filter;
        $this->collectionFactory = $collectionFactory;
        $this->invoiceRepository = $invoiceRepository;
        $this->customerInvoice = $customerInvoice;
    }

    public function getInvoiceData($invoiceId)
    {
        try {
            $invoice = $this->invoiceRepository->get($invoiceId);
        } catch (\Exception $exception)  {
            $invoice = null;
        }

        return $invoice;
    }

    public function execute()
    {
        $collection = $this->filter->getCollection($this->collectionFactory->create());
        $errorInvoiceIDs = [];
        $sendInvoiceIDs = [];
        $skipInvoiceIDs = [];
        if($collection->getSize() > 0) {
            foreach($collection as $invoice) {
                if($invoice->getIsProcess() != MVStatus::INVOICE_SEND) {
                    try {
                        $this->customerInvoice->createInvoice($invoice);
                        $sendInvoiceIDs[] = $invoice->getIncrementId();
                    } catch(\Exception $exception) {
                        $errorInvoiceIDs[] = $invoice->getIncrementId();
                    }
                } else {
                    $skipInvoiceIDs[] = $invoice->getIncrementId();
                }
            }
        }

        if ($sendInvoiceIDs) {
            $this->messageManager->addSuccessMessage(
                __('Invoices: %1 have been sent to MV.', implode(', ', $sendInvoiceIDs))
            );
        }

        if ($errorInvoiceIDs) {
            $this->messageManager->addErrorMessage(
                __(
                    'Invoices: %1 haven\'t been send to MV. Please see MV logs for more details.',
                    implode(', ', $errorInvoiceIDs)
                )
            );
        }

        if ($skipInvoiceIDs) {
            $this->messageManager->addNoticeMessage(
                __('Invoices: %1 have been already sent to MV.', implode(', ', $skipInvoiceIDs))
            );
        }

        return $this->resultFactory->create(ResultFactory::TYPE_REDIRECT)->setPath('sales/invoice/index');
    }
}