Quote.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Backend\Model\Session;
  7. use Magento\Customer\Api\CustomerRepositoryInterface;
  8. use Magento\Customer\Api\GroupManagementInterface;
  9. /**
  10. * Adminhtml quote session
  11. *
  12. * @api
  13. * @method Quote setCustomerId($id)
  14. * @method int getCustomerId()
  15. * @method bool hasCustomerId()
  16. * @method Quote setStoreId($storeId)
  17. * @method int getStoreId()
  18. * @method Quote setQuoteId($quoteId)
  19. * @method int getQuoteId()
  20. * @method Quote setCurrencyId($currencyId)
  21. * @method int getCurrencyId()
  22. * @method Quote setOrderId($orderId)
  23. * @method int getOrderId()
  24. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  25. * @since 100.0.2
  26. */
  27. class Quote extends \Magento\Framework\Session\SessionManager
  28. {
  29. /**
  30. * Quote model object
  31. *
  32. * @var \Magento\Quote\Model\Quote
  33. */
  34. protected $_quote;
  35. /**
  36. * Store model object
  37. *
  38. * @var \Magento\Store\Model\Store
  39. */
  40. protected $_store;
  41. /**
  42. * Order model object
  43. *
  44. * @var \Magento\Sales\Model\Order
  45. */
  46. protected $_order;
  47. /**
  48. * @var \Magento\Sales\Model\OrderFactory
  49. */
  50. protected $_orderFactory;
  51. /**
  52. * @var CustomerRepositoryInterface
  53. */
  54. protected $customerRepository;
  55. /**
  56. * Sales quote repository
  57. *
  58. * @var \Magento\Quote\Api\CartRepositoryInterface
  59. */
  60. protected $quoteRepository;
  61. /**
  62. * @var \Magento\Store\Model\StoreManagerInterface
  63. */
  64. protected $_storeManager;
  65. /**
  66. * @var GroupManagementInterface
  67. */
  68. protected $groupManagement;
  69. /**
  70. * @var \Magento\Quote\Model\QuoteFactory
  71. */
  72. protected $quoteFactory;
  73. /**
  74. * @param \Magento\Framework\App\Request\Http $request
  75. * @param \Magento\Framework\Session\SidResolverInterface $sidResolver
  76. * @param \Magento\Framework\Session\Config\ConfigInterface $sessionConfig
  77. * @param \Magento\Framework\Session\SaveHandlerInterface $saveHandler
  78. * @param \Magento\Framework\Session\ValidatorInterface $validator
  79. * @param \Magento\Framework\Session\StorageInterface $storage
  80. * @param \Magento\Framework\Stdlib\CookieManagerInterface $cookieManager
  81. * @param \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory $cookieMetadataFactory
  82. * @param \Magento\Framework\App\State $appState
  83. * @param CustomerRepositoryInterface $customerRepository
  84. * @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository
  85. * @param \Magento\Sales\Model\OrderFactory $orderFactory
  86. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  87. * @param GroupManagementInterface $groupManagement
  88. * @param \Magento\Quote\Model\QuoteFactory $quoteFactory
  89. * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  90. */
  91. public function __construct(
  92. \Magento\Framework\App\Request\Http $request,
  93. \Magento\Framework\Session\SidResolverInterface $sidResolver,
  94. \Magento\Framework\Session\Config\ConfigInterface $sessionConfig,
  95. \Magento\Framework\Session\SaveHandlerInterface $saveHandler,
  96. \Magento\Framework\Session\ValidatorInterface $validator,
  97. \Magento\Framework\Session\StorageInterface $storage,
  98. \Magento\Framework\Stdlib\CookieManagerInterface $cookieManager,
  99. \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory $cookieMetadataFactory,
  100. \Magento\Framework\App\State $appState,
  101. CustomerRepositoryInterface $customerRepository,
  102. \Magento\Quote\Api\CartRepositoryInterface $quoteRepository,
  103. \Magento\Sales\Model\OrderFactory $orderFactory,
  104. \Magento\Store\Model\StoreManagerInterface $storeManager,
  105. GroupManagementInterface $groupManagement,
  106. \Magento\Quote\Model\QuoteFactory $quoteFactory
  107. ) {
  108. $this->customerRepository = $customerRepository;
  109. $this->quoteRepository = $quoteRepository;
  110. $this->_orderFactory = $orderFactory;
  111. $this->_storeManager = $storeManager;
  112. $this->groupManagement = $groupManagement;
  113. $this->quoteFactory = $quoteFactory;
  114. parent::__construct(
  115. $request,
  116. $sidResolver,
  117. $sessionConfig,
  118. $saveHandler,
  119. $validator,
  120. $storage,
  121. $cookieManager,
  122. $cookieMetadataFactory,
  123. $appState
  124. );
  125. if ($this->_storeManager->hasSingleStore()) {
  126. $this->setStoreId($this->_storeManager->getStore(true)->getId());
  127. }
  128. }
  129. /**
  130. * Retrieve quote model object
  131. *
  132. * @return \Magento\Quote\Model\Quote
  133. */
  134. public function getQuote()
  135. {
  136. if ($this->_quote === null) {
  137. $this->_quote = $this->quoteFactory->create();
  138. if ($this->getStoreId()) {
  139. if (!$this->getQuoteId()) {
  140. $this->_quote->setCustomerGroupId($this->groupManagement->getDefaultGroup()->getId());
  141. $this->_quote->setIsActive(false);
  142. $this->_quote->setStoreId($this->getStoreId());
  143. $this->quoteRepository->save($this->_quote);
  144. $this->setQuoteId($this->_quote->getId());
  145. $this->_quote = $this->quoteRepository->get($this->getQuoteId(), [$this->getStoreId()]);
  146. } else {
  147. $this->_quote = $this->quoteRepository->get($this->getQuoteId(), [$this->getStoreId()]);
  148. $this->_quote->setStoreId($this->getStoreId());
  149. }
  150. if ($this->getCustomerId() && $this->getCustomerId() != $this->_quote->getCustomerId()) {
  151. $customer = $this->customerRepository->getById($this->getCustomerId());
  152. $this->_quote->assignCustomer($customer);
  153. $this->quoteRepository->save($this->_quote);
  154. }
  155. }
  156. $this->_quote->setIgnoreOldQty(true);
  157. $this->_quote->setIsSuperMode(true);
  158. }
  159. return $this->_quote;
  160. }
  161. /**
  162. * Retrieve store model object
  163. *
  164. * @return \Magento\Store\Model\Store
  165. */
  166. public function getStore()
  167. {
  168. if ($this->_store === null) {
  169. $this->_store = $this->_storeManager->getStore($this->getStoreId());
  170. $currencyId = $this->getCurrencyId();
  171. if ($currencyId) {
  172. $this->_store->setCurrentCurrencyCode($currencyId);
  173. }
  174. }
  175. return $this->_store;
  176. }
  177. /**
  178. * Retrieve order model object
  179. *
  180. * @return \Magento\Sales\Model\Order
  181. */
  182. public function getOrder()
  183. {
  184. if ($this->_order === null) {
  185. $this->_order = $this->_orderFactory->create();
  186. if ($this->getOrderId()) {
  187. $this->_order->load($this->getOrderId());
  188. }
  189. }
  190. return $this->_order;
  191. }
  192. }