skip to Main Content

I have a magento 2.3.2 and tried to do the order.After completing the order,success page is not redirected.But the order has created. Can anyone tell what will be issue. Below I’m getting in error log

main.CRITICAL: No such entity with customerId = 1 {"exception":"[object] 
(Magento\Framework\Exception\NoSuchEntityException(code: 0): No such entity 
with customerId = 1 at /opt/magento/public_html/vendor/magento/framework/Exception/NoSuchEntityException.php:50)"} []main.CRITICAL: No such entity with customerId = 1 {"exception":"[object] (Magento\Framework\Exception\NoSuchEntityException(code: 0): No such entity with customerId = 1 at /opt/magento/public_html/vendor/magento/framework/Exception/NoSuchEntityException.php:50)"} []main.CRITICAL: No such entity with customerId = 1 {"exception":"[object] (Magento\Framework\Exception\NoSuchEntityException(code: 0): No such entity with customerId = 1 at /opt/magento/public_html/vendor/magento/framework/Exception/NoSuchEntityException.php:50)"} [](END)

2

Answers


  1. Apply this patch:

    diff --git a/app/code/Magento/Checkout/Model/Session.php b/app/code/Magento/Checkout/Model/Session.php
    index a654c78853d7..4a4861fa9ccd 100644
    --- a/app/code/Magento/Checkout/Model/Session.php
    +++ b/app/code/Magento/Checkout/Model/Session.php
    @@ -7,6 +7,8 @@
     
     use MagentoCustomerApiDataCustomerInterface;
     use MagentoFrameworkAppObjectManager;
    +use MagentoFrameworkExceptionNoSuchEntityException;
    +use MagentoQuoteApiDataCartInterface;
     use MagentoQuoteModelQuote;
     use MagentoQuoteModelQuoteIdMaskFactory;
     use PsrLogLoggerInterface;
    @@ -21,9 +23,6 @@
      */
     class Session extends MagentoFrameworkSessionSessionManager
     {
    -    /**
    -     * Checkout state begin
    -     */
         const CHECKOUT_STATE_BEGIN = 'begin';
     
         /**
    @@ -228,7 +227,7 @@ public function setLoadInactive($load = true)
          *
          * @return Quote
          * @throws MagentoFrameworkExceptionLocalizedException
    -     * @throws MagentoFrameworkExceptionNoSuchEntityException
    +     * @throws NoSuchEntityException
          * @SuppressWarnings(PHPMD.CyclomaticComplexity)
          * @SuppressWarnings(PHPMD.NPathComplexity)
          */
    @@ -273,21 +272,17 @@ public function getQuote()
                              */
                             $quote = $this->quoteRepository->get($this->getQuoteId());
                         }
    -                } catch (MagentoFrameworkExceptionNoSuchEntityException $e) {
    +                } catch (NoSuchEntityException $e) {
                         $this->setQuoteId(null);
                     }
                 }
     
                 if (!$this->getQuoteId()) {
                     if ($this->_customerSession->isLoggedIn() || $this->_customer) {
    -                    $customerId = $this->_customer
    -                        ? $this->_customer->getId()
    -                        : $this->_customerSession->getCustomerId();
    -                    try {
    -                        $quote = $this->quoteRepository->getActiveForCustomer($customerId);
    -                        $this->setQuoteId($quote->getId());
    -                    } catch (MagentoFrameworkExceptionNoSuchEntityException $e) {
    -                        $this->logger->critical($e);
    +                    $quoteByCustomer = $this->getQuoteByCustomer();
    +                    if ($quoteByCustomer !== null) {
    +                        $this->setQuoteId($quoteByCustomer->getId());
    +                        $quote = $quoteByCustomer;
                         }
                     } else {
                         $quote->setIsCheckoutCart(true);
    @@ -375,7 +370,7 @@ public function loadCustomerQuote()
     
             try {
                 $customerQuote = $this->quoteRepository->getForCustomer($this->_customerSession->getCustomerId());
    -        } catch (MagentoFrameworkExceptionNoSuchEntityException $e) {
    +        } catch (NoSuchEntityException $e) {
                 $customerQuote = $this->quoteFactory->create();
             }
             $customerQuote->setStoreId($this->_storeManager->getStore()->getId());
    @@ -558,7 +553,7 @@ public function restoreQuote()
                     $this->replaceQuote($quote)->unsLastRealOrderId();
                     $this->_eventManager->dispatch('restore_quote', ['order' => $order, 'quote' => $quote]);
                     return true;
    -            } catch (MagentoFrameworkExceptionNoSuchEntityException $e) {
    +            } catch (NoSuchEntityException $e) {
                     $this->logger->critical($e);
                 }
             }
    @@ -588,4 +583,22 @@ protected function isQuoteMasked()
         {
             return $this->isQuoteMasked;
         }
    +
    +    /**
    +     * Returns quote for customer if there is any
    +     */
    +    private function getQuoteByCustomer(): ?CartInterface
    +    {
    +        $customerId = $this->_customer
    +            ? $this->_customer->getId()
    +            : $this->_customerSession->getCustomerId();
    +
    +        try {
    +            $quote = $this->quoteRepository->getActiveForCustomer($customerId);
    +        } catch (NoSuchEntityException $e) {
    +            $quote = null;
    +        }
    +
    +        return $quote;
    +    }
     }
    diff --git a/app/code/Magento/Checkout/Test/Unit/Model/SessionTest.php b/app/code/Magento/Checkout/Test/Unit/Model/SessionTest.php
    index 26234992e613..969631901adf 100644
    --- a/app/code/Magento/Checkout/Test/Unit/Model/SessionTest.php
    +++ b/app/code/Magento/Checkout/Test/Unit/Model/SessionTest.php
    @@ -9,7 +9,8 @@
      */
     namespace MagentoCheckoutTestUnitModel;
     
    -use MagentoCheckoutModelSession;
    +use MagentoCheckoutModelSession;
    +use MagentoFrameworkExceptionNoSuchEntityException;
     
     /**
      * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
    @@ -374,6 +375,68 @@ public function testGetStepData()
             $this->assertEquals($stepData['complex']['key'], $session->getStepData('complex', 'key'));
         }
     
    +    /**
    +     * Ensure that if quote not exist for customer quote will be null
    +     *
    +     * @return void
    +     */
    +    public function testGetQuote(): void
    +    {
    +        $storeManager = $this->getMockForAbstractClass(MagentoStoreModelStoreManagerInterface::class);
    +        $customerSession = $this->createMock(MagentoCustomerModelSession::class);
    +        $quoteRepository = $this->createMock(MagentoQuoteApiCartRepositoryInterface::class);
    +        $quoteFactory = $this->createMock(MagentoQuoteModelQuoteFactory::class);
    +        $quote = $this->createMock(MagentoQuoteModelQuote::class);
    +        $logger = $this->createMock(PsrLogLoggerInterface::class);
    +        $loggerMethods = get_class_methods(PsrLogLoggerInterface::class);
    +
    +        $quoteFactory->expects($this->once())
    +             ->method('create')
    +             ->willReturn($quote);
    +        $customerSession->expects($this->exactly(3))
    +             ->method('isLoggedIn')
    +             ->willReturn(true);
    +        $store = $this->getMockBuilder(MagentoStoreModelStore::class)
    +             ->disableOriginalConstructor()
    +             ->setMethods(['getWebsiteId', '__wakeup'])
    +             ->getMock();
    +        $storeManager->expects($this->any())
    +             ->method('getStore')
    +             ->will($this->returnValue($store));
    +        $storage = $this->getMockBuilder(MagentoFrameworkSessionStorage::class)
    +             ->disableOriginalConstructor()
    +             ->setMethods(['setData', 'getData'])
    +             ->getMock();
    +        $storage->expects($this->at(0))
    +             ->method('getData')
    +             ->willReturn(1);
    +        $quoteRepository->expects($this->once())
    +             ->method('getActiveForCustomer')
    +         ->willThrowException(new NoSuchEntityException());
    +
    +        foreach ($loggerMethods as $method) {
    +            $logger->expects($this->never())->method($method);
    +        }
    +
    +        $quote->expects($this->once())
    +             ->method('setCustomer')
    +             ->with(null);
    +
    +        $constructArguments = $this->_helper->getConstructArguments(
    +            MagentoCheckoutModelSession::class,
    +            [
    +                'storeManager' => $storeManager,
    +                'quoteRepository' => $quoteRepository,
    +                'customerSession' => $customerSession,
    +                'storage' => $storage,
    +                'quoteFactory' => $quoteFactory,
    +                'logger' => $logger
    +            ]
    +        );
    +        $this->_session = $this->_helper->getObject(MagentoCheckoutModelSession::class, $constructArguments);
    +        $this->_session->getQuote();
    +    }
    +
         public function testSetStepData()
         {
             $stepData = [
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search