Reject quote on Frontend

Case1

  • Go to Magento Frontend and login as a Company admin user

  • Add some product to Cart - click Cart icon - View and Edit Cart link

  • Click the Request a Quote button - Send Request

  • Go to Magento admin panel - Sales - Quotes

  • Check Quote was synced

  • Go to Frontend - My Account - My Quotes - View created quote

  • Click Reject button

AR1: An error has happened during application run. See exception log for details.

 

[2023-03-17T14:28:10.159821+00:00] report.CRITICAL: TypeError: Magento\Framework\Mail\AddressConverter::convertMany(): Argument #1 ($addresses) must be of type array, null given, called in /var/www/html/magento245/vendor/magento/framework/Mail/Template/TransportBuilder.php on line 435 and defined in /var/www/html/magento245/vendor/magento/framework/Mail/AddressConverter.php:84
Stack trace:
#0 /var/www/html/magento245/vendor/magento/framework/Mail/Template/TransportBuilder.php(435): Magento\Framework\Mail\AddressConverter->convertMany()
#1 /var/www/html/magento245/vendor/magento/framework/Mail/Template/TransportBuilder.php(201): Magento\Framework\Mail\Template\TransportBuilder->addAddressByType()
#2 /var/www/html/magento245/vendor/magento/module-negotiable-quote/Model/Email/Sender.php(235): Magento\Framework\Mail\Template\TransportBuilder->addTo()
#3 /var/www/html/magento245/vendor/magento/module-negotiable-quote/Model/Email/Sender.php(126): Magento\NegotiableQuote\Model\Email\Sender->sendEmailTemplate()
#4 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(58): Magento\NegotiableQuote\Model\Email\Sender->sendChangeQuoteEmailToMerchant()
#5 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(138): TNW\B2B\Model\Email\Sender\Interceptor->___callParent()
#6 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(153): TNW\B2B\Model\Email\Sender\Interceptor->Magento\Framework\Interception\{closure}()
#7 /var/www/html/magento245/generated/code/TNW/B2B/Model/Email/Sender/Interceptor.php(32): TNW\B2B\Model\Email\Sender\Interceptor->___callPlugins()
#8 /var/www/html/magento245/vendor/magento/module-negotiable-quote/Model/NegotiableQuoteManagement.php(180): TNW\B2B\Model\Email\Sender\Interceptor->sendChangeQuoteEmailToMerchant()
#9 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(58): Magento\NegotiableQuote\Model\NegotiableQuoteManagement->send()
#10 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(138): Magento\NegotiableQuote\Model\NegotiableQuoteManagement\Interceptor->___callParent()
#11 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(153): Magento\NegotiableQuote\Model\NegotiableQuoteManagement\Interceptor->Magento\Framework\Interception\{closure}()
#12 /var/www/html/magento245/generated/code/Magento/NegotiableQuote/Model/NegotiableQuoteManagement/Interceptor.php(32): Magento\NegotiableQuote\Model\NegotiableQuoteManagement\Interceptor->___callPlugins()
#13 /var/www/html/magento245/vendor/tnw/b2b/Controller/Quote/Send.php(137): Magento\NegotiableQuote\Model\NegotiableQuoteManagement\Interceptor->send()
#14 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(58): TNW\B2B\Controller\Quote\Send->execute()
#15 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(138): TNW\B2B\Controller\Quote\Send\Interceptor->___callParent()
#16 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(153): TNW\B2B\Controller\Quote\Send\Interceptor->Magento\Framework\Interception\{closure}()
#17 /var/www/html/magento245/generated/code/TNW/B2B/Controller/Quote/Send/Interceptor.php(23): TNW\B2B\Controller\Quote\Send\Interceptor->___callPlugins()
#18 /var/www/html/magento245/vendor/magento/framework/App/Action/Action.php(111): TNW\B2B\Controller\Quote\Send\Interceptor->execute()
#19 /var/www/html/magento245/vendor/magento/module-negotiable-quote/Controller/Quote.php(113): Magento\Framework\App\Action\Action->dispatch()
#20 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(58): Magento\NegotiableQuote\Controller\Quote->dispatch()
#21 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(138): TNW\B2B\Controller\Quote\Send\Interceptor->___callParent()
#22 /var/www/html/magento245/vendor/magento/module-company/Plugin/Framework/App/Action/AbstractActionPlugin.php(65): TNW\B2B\Controller\Quote\Send\Interceptor->Magento\Framework\Interception\{closure}()
#23 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(135): Magento\Company\Plugin\Framework\App\Action\AbstractActionPlugin->aroundDispatch()
#24 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(153): TNW\B2B\Controller\Quote\Send\Interceptor->Magento\Framework\Interception\{closure}()
#25 /var/www/html/magento245/generated/code/TNW/B2B/Controller/Quote/Send/Interceptor.php(32): TNW\B2B\Controller\Quote\Send\Interceptor->___callPlugins()
#26 /var/www/html/magento245/vendor/magento/framework/App/FrontController.php(245): TNW\B2B\Controller\Quote\Send\Interceptor->dispatch()
#27 /var/www/html/magento245/vendor/magento/framework/App/FrontController.php(212): Magento\Framework\App\FrontController->getActionResponse()
#28 /var/www/html/magento245/vendor/magento/framework/App/FrontController.php(147): Magento\Framework\App\FrontController->processRequest()
#29 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\App\FrontController->dispatch()
#30 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\App\FrontController\Interceptor->___callParent()
#31 /var/www/html/magento245/vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php(99): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#32 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(135): Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch()
#33 /var/www/html/magento245/vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php(75): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#34 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(135): Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch()
#35 /var/www/html/magento245/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#36 /var/www/html/magento245/generated/code/Magento/Framework/App/FrontController/Interceptor.php(23): Magento\Framework\App\FrontController\Interceptor->___callPlugins()
#37 /var/www/html/magento245/vendor/magento/framework/App/Http.php(116): Magento\Framework\App\FrontController\Interceptor->dispatch()
#38 /var/www/html/magento245/vendor/magento/framework/App/Bootstrap.php(264): Magento\Framework\App\Http->launch()
#39 /var/www/html/magento245/pub/index.php(30): Magento\Framework\App\Bootstrap->run()
#40 {main} [] []

this issue not reproductble for simple customer

  • As result: The original quote will be Closed and a new one created

  • Salesforce Opportunity will be inherited from the first quote

Case2

  • Go to Magento Frontend and login as a Company admin user

  • Add some product to Cart - click Cart icon - View and Edit Cart link

  • Click the Request a Quote button - Send Request

  • Go to Magento admin panel - Sales - Quotes

  • Check Quote was synced

  • Click Select - View link on create a quote

  • Click Save & Send button

  • Go to Frontend - My Account - My Quotes - View created quote

  • Click Reject button

  • Go to Frontend - My Account - My Quotes - View second quote version

  • Click Reject button

AR: Third quote version does not iheried Opportunity from first quote

Close quote from Frontend?

  •