hi i faced problem with my magento after the customers pay.. they faced this errors messages
There has been an error processing your request Type Error occurred when creating object: Vendor\AutoInvoice\Observer\OrderObserver Error log record number: 36209293a74e8a1a4c09d455d7907e74f6e256326a6b65b3bb4cff3f84501279
i open the record number file:
{"0":"Type Error occurred when creating object: Vendor\AutoInvoice\Observer\OrderObserver","1":"#1 Magento\Framework\ObjectManager\Factory\Compiled->create() called at [vendor/magento/framework/ObjectManager/ObjectManager.php:70]\n#2 Magento\Framework\ObjectManager\ObjectManager->get() called at [vendor/magento/framework/Event/ObserverFactory.php:33]\n#3 Magento\Framework\Event\ObserverFactory->get() called at [vendor/magento/framework/Event/Invoker/InvokerDefault.php:72]\n#4 Magento\Framework\Event\Invoker\InvokerDefault->dispatch() called at [vendor/magento/framework/Event/Manager.php:66]\n#5 Magento\Framework\Event\Manager->dispatch() called at [generated/code/Magento/Framework/Event/Manager/Proxy.php:95]\n#6 Magento\Framework\Event\Manager\Proxy->dispatch() called at [vendor/magento/module-checkout/Controller/Onepage/Success.php:33]\n#7 Magento\Checkout\Controller\Onepage\Success->execute() called at [vendor/magento/framework/App/Action/Action.php:108]\n#8 Magento\Framework\App\Action\Action->dispatch() called at [vendor/magento/module-checkout/Controller/Onepage.php:161]\n#9 Magento\Checkout\Controller\Onepage->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58]\n#10 Magento\Checkout\Controller\Onepage\Success\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]\n#11 Magento\Checkout\Controller\Onepage\Success\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]\n#12 Magento\Checkout\Controller\Onepage\Success\Interceptor->___callPlugins() called at [generated/code/Magento/Checkout/Controller/Onepage/Success/Interceptor.php:26]\n#13 Magento\Checkout\Controller\Onepage\Success\Interceptor->dispatch() called at [vendor/magento/framework/App/FrontController.php:162]\n#14 Magento\Framework\App\FrontController->processRequest() called at [vendor/magento/framework/App/FrontController.php:98]\n#15 Magento\Framework\App\FrontController->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58]\n#16 Magento\Framework\App\FrontController\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138]\n#17 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php:99]\n#18 Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135]\n#19 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [app/code/Mirasvit/CacheWarmer/Plugin/Debug/OnHitPlugin.php:140]\n#20 Mirasvit\CacheWarmer\Plugin\Debug\OnHitPlugin->aroundAroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135]\n#21 Magento\PageCache\Model\App\FrontController\BuiltinPlugin\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]\n#22 Magento\PageCache\Model\App\FrontController\BuiltinPlugin\Interceptor->___callPlugins() called at [generated/code/Magento/PageCache/Model/App/FrontController/BuiltinPlugin/Interceptor.php:26]\n#23 Magento\PageCache\Model\App\FrontController\BuiltinPlugin\Interceptor->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135]\n#24 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]\n#25 Magento\Framework\App\FrontController\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:26]\n#26 Magento\Framework\App\FrontController\Interceptor->dispatch() called at [vendor/magento/framework/App/Http.php:116]\n#27 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:24]\n#28 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:261]\n#29 Magento\Framework\App\Bootstrap->run() called at [index.php:39]\n","url":"/checkout/onepage/success/","script_name":"/index.php","report_id":"36209293a74e8a1a4c09d455d7907e74f6e256326a6b65b3bb4cff3f84501279"}
how to solve this? with easiest way because i don't have experience with this.. thanks
Please share the code of Vendor\AutoInvoice\Observer\OrderObserver file
thanks for your response
<?php namespace Vendor\AutoInvoice\Observer; use Magento\Framework\Event\ObserverInterface; use Magento\Sales\Model\Order; use Magento\Sales\Model\Order\Email\Sender\InvoiceSender; use Magento\Sales\Model\ResourceModel\Order\Invoice as InvoiceResource; use \Magento\Framework\Exception\LocalizedException; use \Psr\Log\LoggerInterface; class OrderObserver implements ObserverInterface { /** * @var \Magento\Sales\Model\ResourceModel\Order\Invoice\CollectionFactory */ protected $_invoiceCollectionFactory; /** * @var \Magento\Sales\Api\InvoiceRepositoryInterface */ protected $_invoiceRepository; /** * @var \Magento\Sales\Model\Service\InvoiceService */ protected $_invoiceService; /** * @var \Magento\Framework\DB\TransactionFactory */ protected $_transactionFactory; /** * @var \Magento\Sales\Api\OrderRepositoryInterface */ protected $_orderRepository; /** * @var InvoiceResource */ protected $invoiceResource; /** * @var \Magento\Sales\Model\OrderFactory */ protected $orderModel; /** * @var \Magento\Sales\Model\Order\Email\Sender\InvoiceSender */ protected $invoiceSender; /** * Logger * @var LoggerInterface */ protected $logger; /** * Message Manager * @var MessageManager */ protected $messageManager; /** * @param \Magento\Sales\Model\ResourceModel\Order\Invoice\CollectionFactory $invoiceCollectionFactory * @param \Magento\Sales\Model\Service\InvoiceService $invoiceService * @param \Magento\Framework\DB\TransactionFactory $transactionFactory * @param \Magento\Sales\Api\InvoiceRepositoryInterface $invoiceRepository * @param \Magento\Sales\Api\OrderRepositoryInterface $orderRepository * @param \Magento\Sales\Model\OrderFactory $orderModel * @param InvoiceResource $invoiceResource * @param InvoiceSender $invoiceSender * @param LoggerInterface $logger */ public function __construct( \Magento\Sales\Model\ResourceModel\Order\Invoice\CollectionFactory $invoiceCollectionFactory, \Magento\Sales\Model\Service\InvoiceService $invoiceService, \Magento\Framework\DB\TransactionFactory $transactionFactory, \Magento\Sales\Api\InvoiceRepositoryInterface $invoiceRepository, \Magento\Sales\Api\OrderRepositoryInterface $orderRepository, \Magento\Sales\Model\OrderFactory $orderModel, \Magento\Sales\Model\Order\Email\Sender\InvoiceSender $invoiceSender, \Magento\Framework\Message\ManagerInterface $messageManager, InvoiceResource $invoiceResource, LoggerInterface $logger ) { $this->_invoiceCollectionFactory = $invoiceCollectionFactory; $this->_invoiceService = $invoiceService; $this->_transactionFactory = $transactionFactory; $this->_invoiceRepository = $invoiceRepository; $this->_orderRepository = $orderRepository; $this->orderModel = $orderModel; $this->invoiceSender = $invoiceSender; $this->messageManager = $messageManager; $this->invoiceResource = $invoiceResource; $this->logger = $logger; } public function execute(\Magento\Framework\Event\Observer $observer) { $orderId = $observer->getEvent()->getOrder()->getId(); if (!$orderId) { throw new LocalizedException(__('The order no longer exists.')); } $this->createInvoice($orderId); } /** * Create Invoice Based on Order Object * @param \Magento\Sales\Model\Order $order * @return $this */ protected function createInvoice($orderId) { try { $order = $this->_orderRepository->get($orderId); if (!$order->canInvoice()) { return false; } if ($order && $this->checkPaymentMethod($order) && $this->checkStateOrder($order)) { $invoices = $this->_invoiceCollectionFactory->create() ->addAttributeToFilter('order_id', array('eq' => $order->getId())); $invoices->getSelect()->limit(1); if ((int)$invoices->count() !== 0) { $invoices = $invoices->getFirstItem(); $invoice = $this->_invoiceRepository->get($invoices->getId()); $this->sendInvoiceMail($invoice); return $invoice; } $invoice = $this->_invoiceService->prepareInvoice($order); if (!$invoice) { throw new LocalizedException(__('We can\'t save the invoice right now.')); } if (!$invoice->getTotalQty()) { throw new LocalizedException( __('You can\'t create an invoice without products.') ); } $invoice->setRequestedCaptureCase(\Magento\Sales\Model\Order\Invoice::CAPTURE_ONLINE); $invoice->register(); $invoice->getOrder()->setCustomerNoteNotify(false); // $invoice->getOrder()->setIsInProcess(true); $order->addStatusHistoryComment(__('Automatically INVOICED by kamilha.com'), true); $transactionSave = $this->_transactionFactory->create()->addObject($invoice)->addObject($invoice->getOrder()); $transactionSave->save(); // send invoice emails, If you want to stop mail disable below try/catch code try { $this->invoiceSender->send($invoice); $this->invoiceResource->saveAttribute($invoice, 'send_email'); } catch (\Exception $e) { $this->messageManager->addError(__('We can\'t send the invoice email right now.')); } } } catch (\Exception $e) { throw new LocalizedException(__($e->getMessage())); } return $invoice; } /** * Check State Order * @param $order * @return bool */ protected function checkStateOrder($order) { if ($order->getState() !== Order::STATE_PENDING_PAYMENT && ($order->getState() === Order::STATE_NEW || $order->getState() === Order::STATE_PROCESSING)) { return true; } else { return false; } } /** * Validate payment methods * Not banktransfer, cashondelivery or bankcheck etc * Offline Payment methods are Cash on delivery, Check/Money order, Bank transfer. * @param $order * @return bool */ protected function checkPaymentMethod($order) { // get the payment method for corresponding order $offlinepayment = array('cashondelivery', 'checkmo', 'banktransfer'); $payment_code = $order->getPayment()->getMethodInstance()->getCode(); //$isOffline = $order->getPayment()->getMethodInstance()->isOffline(); if (in_array($payment_code, $offlinepayment)) { return false; } else { return true; } } /** * * @comment Send invoice mail to customer * @param $invoice * @throws LocalizedException */ protected function sendInvoiceMail($invoice) { if (!$invoice->getEmailSent()) { try { $this->invoiceSender->send($invoice); $this->invoiceResource->saveAttribute($invoice, 'send_email'); } catch (\Exception $e) { $this->logger->error($e->getMessage()); } } } }
Hello @mohammed_alahma ,
Looks like some issue with the module "Mirasvit_CacheWarmer"
in file "app/code/Mirasvit/CacheWarmer/Plugin/Debug/OnHitPlugin.php"
at line "140"
Share code for that file.