/** * 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; }
public function buildQuote() { try { // do not change invoke order // --------------------------------------- $this->initializeQuote(); $this->initializeCustomer(); $this->initializeAddresses(); $this->configureStore(); $this->configureTaxCalculation(); $this->initializeCurrency(); $this->initializeShippingMethodData(); $this->initializeQuoteItems(); $this->initializePaymentMethodData(); $this->quote->collectTotals()->save(); // todo investigate // $this->prepareOrderNumber(); // --------------------------------------- } catch (\Exception $e) { $this->quote->setIsActive(false)->save(); throw $e; } }
/** * Delete quote item * * @param Quote $quote * @param array $orderData * @return \Magento\Framework\Model\AbstractExtensibleModel|\Magento\Sales\Api\Data\OrderInterface|object|void * @throws \Exception * @throws \Magento\Framework\Exception\LocalizedException */ public function submit(QuoteEntity $quote, $orderData = []) { if (!$quote->getAllVisibleItems()) { $quote->setIsActive(false); return; } return $this->submitQuote($quote, $orderData); }