customerRepository = $customerRepository; $this->quoteRepository = $quoteRepository; $this->_orderFactory = $orderFactory; $this->_storeManager = $storeManager; $this->groupManagement = $groupManagement; $this->quoteFactory = $quoteFactory; parent::__construct( $request, $sidResolver, $sessionConfig, $saveHandler, $validator, $storage, $cookieManager, $cookieMetadataFactory, $appState ); if ($this->_storeManager->hasSingleStore()) { $this->setStoreId($this->_storeManager->getStore(true)->getId()); } } /** * Retrieve quote model object * * @return \Magento\Quote\Model\Quote */ public function getQuote() { if ($this->_quote === null) { $this->_quote = $this->quoteFactory->create(); if ($this->getStoreId()) { if (!$this->getQuoteId()) { $this->_quote->setCustomerGroupId($this->groupManagement->getDefaultGroup()->getId()); $this->_quote->setIsActive(false); $this->_quote->setStoreId($this->getStoreId()); $this->quoteRepository->save($this->_quote); $this->setQuoteId($this->_quote->getId()); $this->_quote = $this->quoteRepository->get($this->getQuoteId(), [$this->getStoreId()]); } else { $this->_quote = $this->quoteRepository->get($this->getQuoteId(), [$this->getStoreId()]); $this->_quote->setStoreId($this->getStoreId()); } if ($this->getCustomerId() && $this->getCustomerId() != $this->_quote->getCustomerId()) { $customer = $this->customerRepository->getById($this->getCustomerId()); $this->_quote->assignCustomer($customer); $this->quoteRepository->save($this->_quote); } } $this->_quote->setIgnoreOldQty(true); $this->_quote->setIsSuperMode(true); } return $this->_quote; } /** * Retrieve store model object * * @return \Magento\Store\Model\Store */ public function getStore() { if ($this->_store === null) { $this->_store = $this->_storeManager->getStore($this->getStoreId()); $currencyId = $this->getCurrencyId(); if ($currencyId) { $this->_store->setCurrentCurrencyCode($currencyId); } } return $this->_store; } /** * Retrieve order model object * * @return \Magento\Sales\Model\Order */ public function getOrder() { if ($this->_order === null) { $this->_order = $this->_orderFactory->create(); if ($this->getOrderId()) { $this->_order->load($this->getOrderId()); } } return $this->_order; } }