12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Multishipping\Helper;
- /**
- * Data helper
- */
- class Data extends \Magento\Framework\App\Helper\AbstractHelper
- {
- /*
- * Xml paths for multishipping checkout
- *
- **/
- const XML_PATH_CHECKOUT_MULTIPLE_AVAILABLE = 'multishipping/options/checkout_multiple';
- const XML_PATH_CHECKOUT_MULTIPLE_MAXIMUM_QUANTITY = 'multishipping/options/checkout_multiple_maximum_qty';
- /**
- * Checkout session
- *
- * @var \Magento\Checkout\Model\Session
- */
- protected $checkoutSession;
- /**
- * Construct
- *
- * @param \Magento\Framework\App\Helper\Context $context
- * @param \Magento\Checkout\Model\Session $checkoutSession
- */
- public function __construct(
- \Magento\Framework\App\Helper\Context $context,
- \Magento\Checkout\Model\Session $checkoutSession
- ) {
- $this->checkoutSession = $checkoutSession;
- parent::__construct($context);
- }
- /**
- * Retrieve checkout quote
- *
- * @return \Magento\Quote\Model\Quote
- */
- public function getQuote()
- {
- return $this->checkoutSession->getQuote();
- }
- /**
- * Get maximum quantity allowed for shipping to multiple addresses
- *
- * @return int
- */
- public function getMaximumQty()
- {
- return (int)$this->scopeConfig->getValue(
- self::XML_PATH_CHECKOUT_MULTIPLE_MAXIMUM_QUANTITY,
- \Magento\Store\Model\ScopeInterface::SCOPE_STORE
- );
- }
- /**
- * Check if multishipping checkout is available
- * There should be a valid quote in checkout session. If not, only the config value will be returned
- *
- * @return bool
- */
- public function isMultishippingCheckoutAvailable()
- {
- $quote = $this->getQuote();
- $isMultiShipping = $this->scopeConfig->isSetFlag(
- self::XML_PATH_CHECKOUT_MULTIPLE_AVAILABLE,
- \Magento\Store\Model\ScopeInterface::SCOPE_STORE
- );
- if (!$quote || !$quote->hasItems()) {
- return $isMultiShipping;
- }
- return $isMultiShipping && !$quote->hasItemsWithDecimalQty() && $quote->validateMinimumAmount(
- true
- ) &&
- $quote->getItemsSummaryQty() - $quote->getItemVirtualQty() > 0 &&
- $quote->getItemsSummaryQty() <= $this->getMaximumQty();
- }
- }
|