Example #1
0
 /**
  * Main method ran during event raise
  *
  * @param \Magento\Framework\Event\Observer $observer
  */
 public function execute(Observer $observer)
 {
     if (!$this->canRun()) {
         return false;
     }
     $order = $observer->getOrder();
     if (!$order || !$order->getId()) {
         return false;
     }
     $this->logger->addInfo("Auto-invoicing  order " . $order->getId());
     if (!$order->canInvoice() || $order->getState() != \Magento\Sales\Model\Order::STATE_PROCESSING) {
         $this->logger->addInfo("Order cannot be invoiced");
         if ($this->apiConfig->isLoggingEnabled()) {
             $this->apiOrderLogger->logInvoice($order);
         }
         return false;
     }
     $invoice = $this->state->emulateAreaCode('adminhtml', array($this->invoiceService, 'prepareInvoice'), array($order));
     if (!$invoice->getTotalQty()) {
         $this->logger->addInfo("Cannot create an invoice without products");
         return;
     }
     try {
         $invoice->setRequestedCaptureCase($this->apiConfig->getCaptureCase())->addComment(__('Invoice automatically created by Riskified when order was approved'), false, false)->register();
         $order->setStatus('riskified_approved');
         $order->addStatusHistoryComment(__("Reviewed and approved by Riskified"), 'riskified_approved');
         $order->save();
     } catch (\Exception $e) {
         $this->logger->addInfo("Error creating invoice: " . $e->getMessage());
         return false;
     }
     try {
         $invoice->save();
         $invoice->getOrder()->save();
     } catch (\Exception $e) {
         $this->logger->addCritical("Error creating transaction: " . $e->getMessage());
         return false;
     }
     $this->logger->addInfo("Transaction saved");
 }