File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/magento/module-checkout/Helper/Data.php
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Checkout\Helper;
use Magento\Framework\Pricing\PriceCurrencyInterface;
use Magento\Quote\Model\Quote\Item\AbstractItem;
use Magento\Store\Model\Store;
use Magento\Store\Model\ScopeInterface;
use Magento\Sales\Api\PaymentFailuresInterface;
/**
* Checkout default helper
*
* @author Magento Core Team <core@magentocommerce.com>
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
const XML_PATH_GUEST_CHECKOUT = 'checkout/options/guest_checkout';
const XML_PATH_CUSTOMER_MUST_BE_LOGGED = 'checkout/options/customer_must_be_logged';
/**
* @var \Magento\Store\Model\StoreManagerInterface
*/
protected $_storeManager;
/**
* @var \Magento\Checkout\Model\Session
*/
protected $_checkoutSession;
/**
* @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
*/
protected $_localeDate;
/**
* @var \Magento\Framework\Mail\Template\TransportBuilder
*/
protected $_transportBuilder;
/**
* @var \Magento\Framework\Translate\Inline\StateInterface
*/
protected $inlineTranslation;
/**
* @var PriceCurrencyInterface
*/
protected $priceCurrency;
/**
* @var PaymentFailuresInterface
*/
private $paymentFailures;
/**
* Data constructor.
*
* @param \Magento\Framework\App\Helper\Context $context
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param \Magento\Checkout\Model\Session $checkoutSession
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
* @param \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder
* @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation
* @param PriceCurrencyInterface $priceCurrency
* @param PaymentFailuresInterface|null $paymentFailures
* @codeCoverageIgnore
*/
public function __construct(
\Magento\Framework\App\Helper\Context $context,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Checkout\Model\Session $checkoutSession,
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
\Magento\Framework\Mail\Template\TransportBuilder $transportBuilder,
\Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
PriceCurrencyInterface $priceCurrency,
PaymentFailuresInterface $paymentFailures = null
) {
$this->_storeManager = $storeManager;
$this->_checkoutSession = $checkoutSession;
$this->_localeDate = $localeDate;
$this->_transportBuilder = $transportBuilder;
$this->inlineTranslation = $inlineTranslation;
$this->priceCurrency = $priceCurrency;
$this->paymentFailures = $paymentFailures ? : \Magento\Framework\App\ObjectManager::getInstance()
->get(PaymentFailuresInterface::class);
parent::__construct($context);
}
/**
* Retrieve checkout session model
*
* @return \Magento\Checkout\Model\Session
* @codeCoverageIgnore
*/
public function getCheckout()
{
return $this->_checkoutSession;
}
/**
* Retrieve checkout quote model object
*
* @return \Magento\Quote\Model\Quote
* @codeCoverageIgnore
*/
public function getQuote()
{
return $this->getCheckout()->getQuote();
}
/**
* Format Price
*
* @param float $price
* @return string
*/
public function formatPrice($price)
{
return $this->priceCurrency->format(
$price,
true,
PriceCurrencyInterface::DEFAULT_PRECISION,
$this->getQuote()->getStore()
);
}
/**
* Convert Price
*
* @param float $price
* @param bool $format
* @return float
*/
public function convertPrice($price, $format = true)
{
return $format
? $this->priceCurrency->convertAndFormat($price)
: $this->priceCurrency->convert($price);
}
/**
* Get onepage checkout availability
*
* @return bool
*/
public function canOnepageCheckout()
{
return $this->scopeConfig->isSetFlag(
'checkout/options/onepage_checkout_enabled',
ScopeInterface::SCOPE_STORE
);
}
/**
* Get sales item (quote item, order item etc) price including tax based on row total and tax amount
*
* @param \Magento\Framework\DataObject $item
* @return float
*/
public function getPriceInclTax($item)
{
if ($item->getPriceInclTax()) {
return $item->getPriceInclTax();
}
$qty = $item->getQty() ? $item->getQty() : ($item->getQtyOrdered() ? $item->getQtyOrdered() : 1);
$taxAmount = $item->getTaxAmount() + $item->getDiscountTaxCompensation();
$price = (float)$qty ? ($item->getRowTotal() + $taxAmount) / $qty : 0;
return $this->priceCurrency->round($price);
}
/**
* Get sales item (quote item, order item etc) row total price including tax
*
* @param \Magento\Framework\DataObject $item
* @return float
*/
public function getSubtotalInclTax($item)
{
if ($item->getRowTotalInclTax()) {
return $item->getRowTotalInclTax();
}
$tax = $item->getTaxAmount() + $item->getDiscountTaxCompensation();
return $item->getRowTotal() + $tax;
}
/**
* Get Base Price Incl Tax
*
* @param AbstractItem $item
* @return float
*/
public function getBasePriceInclTax($item)
{
$qty = $item->getQty() ? $item->getQty() : ($item->getQtyOrdered() ? $item->getQtyOrdered() : 1);
$taxAmount = $item->getBaseTaxAmount() + $item->getBaseDiscountTaxCompensation();
$price = (float)$qty ? ($item->getBaseRowTotal() + $taxAmount) / $qty : 0;
return $this->priceCurrency->round($price);
}
/**
* Get Base Subtotal Incl Tax
*
* @param AbstractItem $item
* @return float
*/
public function getBaseSubtotalInclTax($item)
{
$tax = $item->getBaseTaxAmount() + $item->getBaseDiscountTaxCompensation();
return $item->getBaseRowTotal() + $tax;
}
/**
* Send email id payment was failed
*
* @param \Magento\Quote\Model\Quote $checkout
* @param string $message
* @param string $checkoutType
* @return $this
*/
public function sendPaymentFailedEmail(
\Magento\Quote\Model\Quote $checkout,
string $message,
string $checkoutType = 'onepage'
): Data {
$this->paymentFailures->handle((int)$checkout->getId(), $message, $checkoutType);
return $this;
}
/**
* Get Emails
*
* @param string $configPath
* @param null|string|bool|int|Store $storeId
* @return array|false
*/
protected function _getEmails($configPath, $storeId)
{
$data = $this->scopeConfig->getValue(
$configPath,
ScopeInterface::SCOPE_STORE,
$storeId
);
if (!empty($data)) {
return explode(',', $data);
}
return false;
}
/**
* Check is allowed Guest Checkout. Use config settings and observer
*
* @param \Magento\Quote\Model\Quote $quote
* @param int|Store $store
* @return bool
*/
public function isAllowedGuestCheckout(\Magento\Quote\Model\Quote $quote, $store = null)
{
if ($store === null) {
$store = $quote->getStoreId();
}
$guestCheckout = $this->scopeConfig->isSetFlag(
self::XML_PATH_GUEST_CHECKOUT,
ScopeInterface::SCOPE_STORE,
$store
);
if ($guestCheckout == true) {
$result = new \Magento\Framework\DataObject();
$result->setIsAllowed($guestCheckout);
$this->_eventManager->dispatch(
'checkout_allow_guest',
['quote' => $quote, 'store' => $store, 'result' => $result]
);
$guestCheckout = $result->getIsAllowed();
}
return $guestCheckout;
}
/**
* Check if context is checkout
*
* @return bool
* @codeCoverageIgnore
*/
public function isContextCheckout()
{
return $this->_request->getParam('context') == 'checkout';
}
/**
* Check if user must be logged during checkout process
*
* @return boolean
* @codeCoverageIgnore
*/
public function isCustomerMustBeLogged()
{
return $this->scopeConfig->isSetFlag(
self::XML_PATH_CUSTOMER_MUST_BE_LOGGED,
ScopeInterface::SCOPE_STORE
);
}
/**
* If display billing address on payment method is available, otherwise should be display on payment page
*
* @return bool
*/
public function isDisplayBillingOnPaymentMethodAvailable()
{
return (bool) !$this->scopeConfig->getValue(
'checkout/options/display_billing_address_on',
ScopeInterface::SCOPE_STORE
);
}
}