From cf683da35d1a1a9d005d8299d0b06a8a19e586d3 Mon Sep 17 00:00:00 2001 From: Michael Mussulis Date: Fri, 24 Feb 2023 10:41:18 -0500 Subject: [PATCH 1/3] github issue 36908, fixed null quote in quote observers --- app/code/Magento/Checkout/Model/Cart.php | 2 +- app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Checkout/Model/Cart.php b/app/code/Magento/Checkout/Model/Cart.php index 4b411e61ddaf8..d5493e5ff1339 100644 --- a/app/code/Magento/Checkout/Model/Cart.php +++ b/app/code/Magento/Checkout/Model/Cart.php @@ -591,8 +591,8 @@ public function save() $this->getQuote()->getBillingAddress(); $this->getQuote()->getShippingAddress()->setCollectShippingRates(true); - $this->getQuote()->collectTotals(); $this->quoteRepository->save($this->getQuote()); + $this->getQuote()->collectTotals(); $this->_checkoutSession->setQuoteId($this->getQuote()->getId()); /** * Cart save usually called after changes with cart items. diff --git a/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php b/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php index 12a71648690d4..34b9b5405ffeb 100644 --- a/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php +++ b/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php @@ -118,7 +118,9 @@ public function save(CartInterface $quote) } $this->processShippingAssignment($quote); - $this->quoteResourceModel->save($quote->collectTotals()); + $this->quoteResourceModel->save($quote); + $quote = $quote->collectTotals(); + $this->quoteResourceModel->save($quote); return $quote; } From ba1e525a1aa17ca9e023023f40733c86e4f25a7a Mon Sep 17 00:00:00 2001 From: Michael Mussulis Date: Mon, 27 Feb 2023 16:37:54 -0500 Subject: [PATCH 2/3] Reworked solution for null quote in observers --- app/code/Magento/Quote/Model/Quote.php | 2 ++ app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Quote/Model/Quote.php b/app/code/Magento/Quote/Model/Quote.php index 572d87d5f4bec..76f0c6f541f2a 100644 --- a/app/code/Magento/Quote/Model/Quote.php +++ b/app/code/Magento/Quote/Model/Quote.php @@ -2014,9 +2014,11 @@ public function removePayment() */ public function collectTotals() { + /* To fix null quote in observers if ($this->getTotalsCollectedFlag()) { return $this; } + */ $total = $this->totalsCollector->collect($this); $this->addData($total->getData()); diff --git a/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php b/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php index 34b9b5405ffeb..e4b3bb634c37d 100644 --- a/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php +++ b/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php @@ -118,9 +118,8 @@ public function save(CartInterface $quote) } $this->processShippingAssignment($quote); - $this->quoteResourceModel->save($quote); $quote = $quote->collectTotals(); - $this->quoteResourceModel->save($quote); + $quote = $this->quoteResourceModel->save($quote); return $quote; } From fa0cb032e55da1c36afec60e814f42cf5e0d7d3a Mon Sep 17 00:00:00 2001 From: Michael Mussulis Date: Tue, 28 Feb 2023 09:25:13 -0500 Subject: [PATCH 3/3] Fix for failed unit test? --- app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php b/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php index e4b3bb634c37d..0f12dca32c460 100644 --- a/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php +++ b/app/code/Magento/Quote/Model/QuoteRepository/SaveHandler.php @@ -119,7 +119,7 @@ public function save(CartInterface $quote) $this->processShippingAssignment($quote); $quote = $quote->collectTotals(); - $quote = $this->quoteResourceModel->save($quote); + $this->quoteResourceModel->save($quote); return $quote; }