![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-tax/Plugin/Checkout/CustomerData/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Tax\Plugin\Checkout\CustomerData; /** * Process quote items price, considering tax configuration. * @SuppressWarnings(PHPMD.CookieAndSessionMisuse) */ class Cart { /** * @var \Magento\Checkout\Model\Session */ protected $checkoutSession; /** * @var \Magento\Checkout\Helper\Data */ protected $checkoutHelper; /** * @var \Magento\Tax\Block\Item\Price\Renderer */ protected $itemPriceRenderer; /** * @var \Magento\Quote\Model\Quote|null */ protected $quote = null; /** * @var array|null */ protected $totals = null; /** * @param \Magento\Checkout\Model\Session $checkoutSession * @param \Magento\Checkout\Helper\Data $checkoutHelper * @param \Magento\Tax\Block\Item\Price\Renderer $itemPriceRenderer */ public function __construct( \Magento\Checkout\Model\Session $checkoutSession, \Magento\Checkout\Helper\Data $checkoutHelper, \Magento\Tax\Block\Item\Price\Renderer $itemPriceRenderer ) { $this->checkoutSession = $checkoutSession; $this->checkoutHelper = $checkoutHelper; $this->itemPriceRenderer = $itemPriceRenderer; } /** * Add tax data to result * * @param \Magento\Checkout\CustomerData\Cart $subject * @param array $result * @return array * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function afterGetSectionData(\Magento\Checkout\CustomerData\Cart $subject, $result) { $result['subtotal_incl_tax'] = $this->checkoutHelper->formatPrice($this->getSubtotalInclTax()); $result['subtotal_excl_tax'] = $this->checkoutHelper->formatPrice($this->getSubtotalExclTax()); $items =$this->getQuote()->getAllVisibleItems(); if (is_array($result['items'])) { foreach ($result['items'] as $key => $itemAsArray) { if ($item = $this->findItemById($itemAsArray['item_id'], $items)) { $this->itemPriceRenderer->setItem($item); $this->itemPriceRenderer->setTemplate('checkout/cart/item/price/sidebar.phtml'); $result['items'][$key]['product_price']=$this->itemPriceRenderer->toHtml(); if ($this->itemPriceRenderer->displayPriceExclTax()) { $result['items'][$key]['product_price_value'] = $item->getCalculationPrice(); } elseif ($this->itemPriceRenderer->displayPriceInclTax()) { $result['items'][$key]['product_price_value'] = $item->getPriceInclTax(); } elseif ($this->itemPriceRenderer->displayBothPrices()) { //unset product price value in case price already has been set as scalar value. unset($result['items'][$key]['product_price_value']); $result['items'][$key]['product_price_value']['incl_tax'] = $item->getPriceInclTax(); $result['items'][$key]['product_price_value']['excl_tax'] = $item->getCalculationPrice(); } } } } return $result; } /** * Get subtotal, including tax * * @return float */ protected function getSubtotalInclTax() { $subtotal = 0; $totals = $this->getTotals(); if (isset($totals['subtotal'])) { $subtotal = $totals['subtotal']->getValueInclTax() ?: $totals['subtotal']->getValue(); } return $subtotal; } /** * Get subtotal, excluding tax * * @return float */ protected function getSubtotalExclTax() { $subtotal = 0; $totals = $this->getTotals(); if (isset($totals['subtotal'])) { $subtotal = $totals['subtotal']->getValueExclTax() ?: $totals['subtotal']->getValue(); } return $subtotal; } /** * Get totals * * @return array */ public function getTotals() { // TODO: TODO: MAGETWO-34824 duplicate \Magento\Checkout\CustomerData\Cart::getSectionData if (empty($this->totals)) { $this->totals = $this->getQuote()->getTotals(); } return $this->totals; } /** * Get active quote * * @return \Magento\Quote\Model\Quote */ protected function getQuote() { if (null === $this->quote) { $this->quote = $this->checkoutSession->getQuote(); } return $this->quote; } /** * Find item by id in items haystack * * @param int $id * @param array $itemsHaystack * @return \Magento\Quote\Model\Quote\Item | bool */ protected function findItemById($id, $itemsHaystack) { if (is_array($itemsHaystack)) { foreach ($itemsHaystack as $item) { /** @var $item \Magento\Quote\Model\Quote\Item */ if ((int)$item->getItemId() == $id) { return $item; } } } return false; } }