mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
223 lines
7.1 KiB
PHP
223 lines
7.1 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Backend\Model\Session;
|
|
|
|
use Magento\Customer\Api\CustomerRepositoryInterface;
|
|
use Magento\Customer\Api\GroupManagementInterface;
|
|
|
|
/**
|
|
* Adminhtml quote session
|
|
*
|
|
* @api
|
|
* @method Quote setCustomerId($id)
|
|
* @method int getCustomerId()
|
|
* @method bool hasCustomerId()
|
|
* @method Quote setStoreId($storeId)
|
|
* @method int getStoreId()
|
|
* @method Quote setQuoteId($quoteId)
|
|
* @method int getQuoteId()
|
|
* @method Quote setCurrencyId($currencyId)
|
|
* @method int getCurrencyId()
|
|
* @method Quote setOrderId($orderId)
|
|
* @method int getOrderId()
|
|
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
|
|
* @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
|
|
* @since 100.0.2
|
|
*/
|
|
class Quote extends \Magento\Framework\Session\SessionManager
|
|
{
|
|
/**
|
|
* Quote model object
|
|
*
|
|
* @var \Magento\Quote\Model\Quote
|
|
*/
|
|
protected $_quote;
|
|
|
|
/**
|
|
* Store model object
|
|
*
|
|
* @var \Magento\Store\Model\Store
|
|
*/
|
|
protected $_store;
|
|
|
|
/**
|
|
* Order model object
|
|
*
|
|
* @var \Magento\Sales\Model\Order
|
|
*/
|
|
protected $_order;
|
|
|
|
/**
|
|
* @var \Magento\Sales\Model\OrderFactory
|
|
*/
|
|
protected $_orderFactory;
|
|
|
|
/**
|
|
* @var CustomerRepositoryInterface
|
|
*/
|
|
protected $customerRepository;
|
|
|
|
/**
|
|
* Sales quote repository
|
|
*
|
|
* @var \Magento\Quote\Api\CartRepositoryInterface
|
|
*/
|
|
protected $quoteRepository;
|
|
|
|
/**
|
|
* @var \Magento\Store\Model\StoreManagerInterface
|
|
*/
|
|
protected $_storeManager;
|
|
|
|
/**
|
|
* @var GroupManagementInterface
|
|
*/
|
|
protected $groupManagement;
|
|
|
|
/**
|
|
* @var \Magento\Quote\Model\QuoteFactory
|
|
*/
|
|
protected $quoteFactory;
|
|
|
|
/**
|
|
* @param \Magento\Framework\App\Request\Http $request
|
|
* @param \Magento\Framework\Session\SidResolverInterface $sidResolver
|
|
* @param \Magento\Framework\Session\Config\ConfigInterface $sessionConfig
|
|
* @param \Magento\Framework\Session\SaveHandlerInterface $saveHandler
|
|
* @param \Magento\Framework\Session\ValidatorInterface $validator
|
|
* @param \Magento\Framework\Session\StorageInterface $storage
|
|
* @param \Magento\Framework\Stdlib\CookieManagerInterface $cookieManager
|
|
* @param \Magento\Framework\Stdlib\Cookie\CookieMetadataFactory $cookieMetadataFactory
|
|
* @param \Magento\Framework\App\State $appState
|
|
* @param CustomerRepositoryInterface $customerRepository
|
|
* @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository
|
|
* @param \Magento\Sales\Model\OrderFactory $orderFactory
|
|
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
|
|
* @param GroupManagementInterface $groupManagement
|
|
* @param \Magento\Quote\Model\QuoteFactory $quoteFactory
|
|
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
|
|
*/
|
|
public function __construct(
|
|
\Magento\Framework\App\Request\Http $request,
|
|
\Magento\Framework\Session\SidResolverInterface $sidResolver,
|
|
\Magento\Framework\Session\Config\ConfigInterface $sessionConfig,
|
|
\Magento\Framework\Session\SaveHandlerInterface $saveHandler,
|
|
\Magento\Framework\Session\ValidatorInterface $validator,
|
|
\Magento\Framework\Session\StorageInterface $storage,
|
|
\Magento\Framework\Stdlib\CookieManagerInterface $cookieManager,
|
|
\Magento\Framework\Stdlib\Cookie\CookieMetadataFactory $cookieMetadataFactory,
|
|
\Magento\Framework\App\State $appState,
|
|
CustomerRepositoryInterface $customerRepository,
|
|
\Magento\Quote\Api\CartRepositoryInterface $quoteRepository,
|
|
\Magento\Sales\Model\OrderFactory $orderFactory,
|
|
\Magento\Store\Model\StoreManagerInterface $storeManager,
|
|
GroupManagementInterface $groupManagement,
|
|
\Magento\Quote\Model\QuoteFactory $quoteFactory
|
|
) {
|
|
$this->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());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function _resetState(): void
|
|
{
|
|
parent::_resetState();
|
|
$this->_quote = null;
|
|
$this->_store = null;
|
|
$this->_order = null;
|
|
}
|
|
|
|
/**
|
|
* 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()) {
|
|
$customerGroupId = $this->groupManagement->getDefaultGroup($this->getStoreId())->getId();
|
|
$this->_quote->setCustomerGroupId($customerGroupId);
|
|
$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;
|
|
}
|
|
}
|