123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Weee\Helper;
- use Magento\Sales\Model\Order\Item as OrderItem;
- use Magento\Quote\Model\Quote\Item\AbstractItem as QuoteAbstractItem;
- use Magento\Store\Model\Store;
- use Magento\Store\Model\Website;
- use Magento\Weee\Model\Tax as WeeeDisplayConfig;
- /**
- * WEEE data helper
- *
- * @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @api
- * @since 100.0.2
- */
- class Data extends \Magento\Framework\App\Helper\AbstractHelper
- {
- /**#@+
- * Constants defined for keys of array, makes typos less likely
- */
- const KEY_WEEE_AMOUNT_INVOICED = 'weee_amount_invoiced';
- const KEY_BASE_WEEE_AMOUNT_INVOICED = 'base_weee_amount_invoiced';
- const KEY_WEEE_TAX_AMOUNT_INVOICED = 'weee_tax_amount_invoiced';
- const KEY_BASE_WEEE_TAX_AMOUNT_INVOICED = 'base_weee_tax_amount_invoiced';
- const KEY_WEEE_AMOUNT_REFUNDED = 'weee_amount_refunded';
- const KEY_BASE_WEEE_AMOUNT_REFUNDED = 'base_weee_amount_refunded';
- const KEY_WEEE_TAX_AMOUNT_REFUNDED = 'weee_tax_amount_refunded';
- const KEY_BASE_WEEE_TAX_AMOUNT_REFUNDED = 'base_weee_tax_amount_refunded';
- /**#@-*/
- /**#@-*/
- protected $_storeDisplayConfig = [];
- /**
- * Core registry
- *
- * @var \Magento\Framework\Registry
- */
- protected $_coreRegistry;
- /**
- * Tax data
- *
- * @var \Magento\Tax\Helper\Data
- */
- protected $_taxData;
- /**
- * @var \Magento\Weee\Model\Tax
- */
- protected $_weeeTax;
- /**
- * @var \Magento\Weee\Model\Config
- */
- protected $_weeeConfig;
- /**
- * @var \Magento\Store\Model\StoreManagerInterface
- */
- protected $_storeManager;
- /**
- * @var string
- */
- protected $cacheProductWeeeAmount = '_cache_product_weee_amount';
- /**
- * @var \Magento\Framework\Serialize\Serializer\Json
- */
- private $serializer;
- /**
- * Data constructor.
- *
- * @param \Magento\Framework\App\Helper\Context $context
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- * @param \Magento\Weee\Model\Tax $weeeTax
- * @param \Magento\Weee\Model\Config $weeeConfig
- * @param \Magento\Tax\Helper\Data $taxData
- * @param \Magento\Framework\Registry $coreRegistry
- * @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
- * @throws \RuntimeException
- */
- public function __construct(
- \Magento\Framework\App\Helper\Context $context,
- \Magento\Store\Model\StoreManagerInterface $storeManager,
- \Magento\Weee\Model\Tax $weeeTax,
- \Magento\Weee\Model\Config $weeeConfig,
- \Magento\Tax\Helper\Data $taxData,
- \Magento\Framework\Registry $coreRegistry,
- \Magento\Framework\Serialize\Serializer\Json $serializer = null
- ) {
- $this->_storeManager = $storeManager;
- $this->_weeeTax = $weeeTax;
- $this->_coreRegistry = $coreRegistry;
- $this->_taxData = $taxData;
- $this->_weeeConfig = $weeeConfig;
- $this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()
- ->get(\Magento\Framework\Serialize\Serializer\Json::class);
- parent::__construct($context);
- }
- /**
- * Get weee amount display type on product view page
- *
- * @param null|string|bool|int|Store $store
- * @return int
- */
- public function getPriceDisplayType($store = null)
- {
- return $this->_weeeConfig->getPriceDisplayType($store);
- }
- /**
- * Get weee amount display type on product list page
- *
- * @param null|string|bool|int|Store $store
- * @return int
- */
- public function getListPriceDisplayType($store = null)
- {
- return $this->_weeeConfig->getListPriceDisplayType($store);
- }
- /**
- * Get weee amount display type in sales modules
- *
- * @param null|string|bool|int|Store $store
- * @return int
- */
- public function getSalesPriceDisplayType($store = null)
- {
- return $this->_weeeConfig->getSalesPriceDisplayType($store);
- }
- /**
- * Get weee amount display type in email templates
- *
- * @param null|string|bool|int|Store $store
- * @return int
- */
- public function getEmailPriceDisplayType($store = null)
- {
- return $this->_weeeConfig->getEmailPriceDisplayType($store);
- }
- /**
- * Check if weee tax amount should be taxable
- *
- * @param null|string|bool|int|Store $store
- * @return bool
- */
- public function isTaxable($store = null)
- {
- return $this->_weeeConfig->isTaxable($store);
- }
- /**
- * Check if weee tax amount should be included to subtotal
- *
- * @param null|string|bool|int|Store $store
- * @return bool
- */
- public function includeInSubtotal($store = null)
- {
- return $this->_weeeConfig->includeInSubtotal($store);
- }
- /**
- * Check if fixed taxes are used in system
- *
- * @param null|string|bool|int|Store $store
- * @return bool
- */
- public function isEnabled($store = null)
- {
- return $this->_weeeConfig->isEnabled($store);
- }
- /**
- * Check if the FPT totals line(s) should be displayed with tax included
- *
- * @param null|string|bool|int|Store $store
- * @return bool
- */
- public function displayTotalsInclTax($store = null)
- {
- // If catalog prices include tax, then display FPT totals with tax included
- return $this->_taxData->priceIncludesTax($store);
- }
- /**
- * Get weee tax amount for product based on website
- *
- * @param \Magento\Catalog\Model\Product $product
- * @param mixed $website
- * @return float
- */
- public function getAmountExclTax($product, $website = null)
- {
- if (!$product->hasData($this->cacheProductWeeeAmount)) {
- /** @var \Magento\Store\Model\Store $store */
- if ($website) {
- $store = $this->_storeManager->getWebsite($website)->getDefaultGroup()->getDefaultStore();
- } else {
- $store = $product->getStore();
- }
- $amount = 0;
- if ($this->isEnabled($store)) {
- $amount = $this->_weeeTax->getWeeeAmountExclTax($product, null, null, $website);
- }
- $product->setData($this->cacheProductWeeeAmount, $amount);
- }
- return $product->getData($this->cacheProductWeeeAmount);
- }
- /**
- * Returns display type for price accordingly to current zone
- *
- * @param int|int[]|null $compareTo
- * @param string $zone
- * @param Store|int|string $store
- * @return bool|int
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- */
- public function typeOfDisplay(
- $compareTo = null,
- $zone = \Magento\Framework\Pricing\Render::ZONE_DEFAULT,
- $store = null
- ) {
- if (!$this->isEnabled($store)) {
- return false;
- }
- switch ($zone) {
- case \Magento\Framework\Pricing\Render::ZONE_ITEM_VIEW:
- $type = $this->getPriceDisplayType($store);
- break;
- case \Magento\Framework\Pricing\Render::ZONE_ITEM_LIST:
- $type = $this->getListPriceDisplayType($store);
- break;
- case \Magento\Framework\Pricing\Render::ZONE_SALES:
- case \Magento\Framework\Pricing\Render::ZONE_CART:
- $type = $this->getSalesPriceDisplayType($store);
- break;
- case \Magento\Framework\Pricing\Render::ZONE_EMAIL:
- $type = $this->getEmailPriceDisplayType($store);
- break;
- default:
- if ($this->_coreRegistry->registry('current_product')) {
- $type = $this->getPriceDisplayType($store);
- } else {
- $type = $this->getListPriceDisplayType($store);
- }
- break;
- }
- if ($compareTo === null) {
- return $type;
- } else {
- if (is_array($compareTo)) {
- return in_array($type, $compareTo);
- } else {
- return $type == $compareTo;
- }
- }
- }
- /**
- * Proxy for \Magento\Weee\Model\Tax::getProductWeeeAttributes()
- *
- * @param \Magento\Catalog\Model\Product $product
- * @param null|false|\Magento\Framework\DataObject $shipping
- * @param null|false|\Magento\Framework\DataObject $billing
- * @param Website $website
- * @param bool $calculateTaxes
- * @param bool $round
- * @return \Magento\Framework\DataObject[]
- */
- public function getProductWeeeAttributes(
- $product,
- $shipping = null,
- $billing = null,
- $website = null,
- $calculateTaxes = false,
- $round = true
- ) {
- return $this->_weeeTax->getProductWeeeAttributes(
- $product,
- $shipping,
- $billing,
- $website,
- $calculateTaxes,
- $round
- );
- }
- /**
- * Returns applied weee tax amount
- *
- * @param QuoteAbstractItem $item
- * @return float
- */
- public function getWeeeTaxAppliedAmount($item)
- {
- return $this->getRecursiveNumericAmount($item, 'getWeeeTaxAppliedAmount');
- }
- /**
- * Returns applied weee tax amount for the row
- *
- * @param QuoteAbstractItem $item
- * @return float
- */
- public function getWeeeTaxAppliedRowAmount($item)
- {
- return $this->getRecursiveNumericAmount($item, 'getWeeeTaxAppliedRowAmount');
- }
- /**
- * Returns applied base weee tax amount for the row
- *
- * @param QuoteAbstractItem|OrderItem $item
- * @return float
- * @since 100.2.0
- */
- public function getBaseWeeeTaxAppliedRowAmount($item)
- {
- return $this->getRecursiveNumericAmount($item, 'getBaseWeeeTaxAppliedRowAmnt');
- }
- /**
- * Returns accumulated amounts for the item
- *
- * @param QuoteAbstractItem|OrderItem $item
- * @param string $functionName
- * @return float
- */
- protected function getRecursiveNumericAmount($item, $functionName)
- {
- if ($item instanceof QuoteAbstractItem || $item instanceof OrderItem) {
- if ($item->getHasChildren() && $item->isChildrenCalculated()) {
- $result = 0;
- $children = $item instanceof OrderItem ? $item->getChildrenItems() : $item->getChildren();
- foreach ($children as $child) {
- $childData = $this->getRecursiveNumericAmount($child, $functionName);
- if (!empty($childData)) {
- $result += $childData;
- }
- }
- return $result;
- }
- }
- $data = $item->$functionName();
- if (empty($data)) {
- return 0;
- }
- return $data;
- }
- /**
- * Returns applied weee taxes
- *
- * @param QuoteAbstractItem $item
- * @return array
- */
- public function getApplied($item)
- {
- if ($item instanceof QuoteAbstractItem) {
- if ($item->getHasChildren() && $item->isChildrenCalculated()) {
- $result = [];
- foreach ($item->getChildren() as $child) {
- $childData = $this->getApplied($child);
- if (is_array($childData)) {
- $result = array_merge($result, $childData);
- }
- }
- return $result;
- }
- }
- // if order item data is old enough then weee_tax_applied might not be valid
- $data = $item->getWeeeTaxApplied();
- if (empty($data)) {
- return [];
- }
- return $this->serializer->unserialize($item->getWeeeTaxApplied());
- }
- /**
- * Sets applied weee taxes
- *
- * @param QuoteAbstractItem $item
- * @param array $value
- * @return $this
- */
- public function setApplied($item, $value)
- {
- $item->setWeeeTaxApplied($this->serializer->serialize($value));
- return $this;
- }
- /**
- * Returns array of weee attributes allowed for display
- *
- * @param \Magento\Catalog\Model\Product $product
- * @return \Magento\Framework\DataObject[]
- */
- public function getProductWeeeAttributesForDisplay($product)
- {
- /** @var \Magento\Store\Model\Store $store */
- $store = $product->getStore();
- if ($this->isEnabled($store)) {
- $calculateTax = ($this->typeOfDisplay(1) || $this->typeOfDisplay(2)) ? 1 : 0;
- return $this->getProductWeeeAttributes($product, null, null, null, $calculateTax, false);
- }
- return [];
- }
- /**
- * Get Product Weee attributes for price renderer
- *
- * @param \Magento\Catalog\Model\Product $product
- * @param null|false|\Magento\Framework\DataObject $shipping Shipping Address
- * @param null|false|\Magento\Framework\DataObject $billing Billing Address
- * @param null|Website $website
- * @param bool $calculateTaxes
- * @return \Magento\Framework\DataObject[]
- */
- public function getProductWeeeAttributesForRenderer(
- $product,
- $shipping = null,
- $billing = null,
- $website = null,
- $calculateTaxes = false
- ) {
- /** @var \Magento\Store\Model\Store $store */
- if ($website) {
- $store = $this->_storeManager->getWebsite($website)->getDefaultGroup()->getDefaultStore();
- } else {
- $store = $product->getStore();
- }
- if ($this->isEnabled($store)) {
- return $this->getProductWeeeAttributes(
- $product,
- $shipping,
- $billing,
- $website,
- $calculateTaxes ? $calculateTaxes : $this->typeOfDisplay(1)
- );
- }
- return [];
- }
- /**
- * Get the weee tax including tax
- *
- * @param QuoteAbstractItem $item
- * @return float
- */
- public function getWeeeTaxInclTax($item)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($item);
- $totalWeeeTaxIncTaxApplied = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- $totalWeeeTaxIncTaxApplied += max($weeeTaxAppliedAmount['amount_incl_tax'], 0);
- }
- return $totalWeeeTaxIncTaxApplied;
- }
- /**
- * Get the total base weee tax
- *
- * @param QuoteAbstractItem $item
- * @return float
- */
- public function getBaseWeeeTaxInclTax($item)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($item);
- $totalBaseWeeeTaxIncTaxApplied = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- $totalBaseWeeeTaxIncTaxApplied += max($weeeTaxAppliedAmount['base_amount_incl_tax'], 0);
- }
- return $totalBaseWeeeTaxIncTaxApplied;
- }
- /**
- * Get the total weee including tax by row
- *
- * @param QuoteAbstractItem $item
- * @return float
- */
- public function getRowWeeeTaxInclTax($item)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($item);
- $totalWeeeTaxIncTaxApplied = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- $totalWeeeTaxIncTaxApplied += max($weeeTaxAppliedAmount['row_amount_incl_tax'], 0);
- }
- return $totalWeeeTaxIncTaxApplied;
- }
- /**
- * Get the total base weee including tax by row
- *
- * @param QuoteAbstractItem $item
- * @return float
- */
- public function getBaseRowWeeeTaxInclTax($item)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($item);
- $totalWeeeTaxIncTaxApplied = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- $totalWeeeTaxIncTaxApplied += max($weeeTaxAppliedAmount['base_row_amount_incl_tax'], 0);
- }
- return $totalWeeeTaxIncTaxApplied;
- }
- /**
- * Get the total tax applied on weee by unit
- *
- * @param QuoteAbstractItem $item
- * @return float
- */
- public function getTotalTaxAppliedForWeeeTax($item)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($item);
- $totalTaxForWeeeTax = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- $totalTaxForWeeeTax += max(
- $weeeTaxAppliedAmount['amount_incl_tax']
- - $weeeTaxAppliedAmount['amount'],
- 0
- );
- }
- return $totalTaxForWeeeTax;
- }
- /**
- * Get the total tax applied on weee by unit
- *
- * @param QuoteAbstractItem $item
- * @return float
- */
- public function getBaseTotalTaxAppliedForWeeeTax($item)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($item);
- $totalTaxForWeeeTax = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- $totalTaxForWeeeTax += max(
- $weeeTaxAppliedAmount['base_amount_incl_tax']
- - $weeeTaxAppliedAmount['base_amount'],
- 0
- );
- }
- return $totalTaxForWeeeTax;
- }
- /**
- * @param OrderItem $orderItem
- * @return float
- */
- public function getWeeeAmountInvoiced($orderItem)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($orderItem);
- $totalAmountInvoiced = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- if (isset($weeeTaxAppliedAmount[self::KEY_WEEE_AMOUNT_INVOICED])) {
- $totalAmountInvoiced = $weeeTaxAppliedAmount[self::KEY_WEEE_AMOUNT_INVOICED];
- break;
- }
- }
- return $totalAmountInvoiced;
- }
- /**
- * @param OrderItem $orderItem
- * @return float
- */
- public function getBaseWeeeAmountInvoiced($orderItem)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($orderItem);
- $baseTotalAmountInvoiced = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- if (isset($weeeTaxAppliedAmount[self::KEY_BASE_WEEE_AMOUNT_INVOICED])) {
- $baseTotalAmountInvoiced = $weeeTaxAppliedAmount[self::KEY_BASE_WEEE_AMOUNT_INVOICED];
- break;
- }
- }
- return $baseTotalAmountInvoiced;
- }
- /**
- * @param OrderItem $orderItem
- * @return float
- */
- public function getWeeeTaxAmountInvoiced($orderItem)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($orderItem);
- $totalTaxInvoiced = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- if (isset($weeeTaxAppliedAmount[self::KEY_WEEE_TAX_AMOUNT_INVOICED])) {
- $totalTaxInvoiced = $weeeTaxAppliedAmount[self::KEY_WEEE_TAX_AMOUNT_INVOICED];
- break;
- }
- }
- return $totalTaxInvoiced;
- }
- /**
- * @param OrderItem $orderItem
- * @return float
- */
- public function getBaseWeeeTaxAmountInvoiced($orderItem)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($orderItem);
- $baseTotalTaxInvoiced = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- if (isset($weeeTaxAppliedAmount[self::KEY_BASE_WEEE_TAX_AMOUNT_INVOICED])) {
- $baseTotalTaxInvoiced = $weeeTaxAppliedAmount[self::KEY_BASE_WEEE_TAX_AMOUNT_INVOICED];
- break;
- }
- }
- return $baseTotalTaxInvoiced;
- }
- /**
- * @param OrderItem $orderItem
- * @return float
- */
- public function getWeeeAmountRefunded($orderItem)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($orderItem);
- $totalAmountRefunded = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- if (isset($weeeTaxAppliedAmount[self::KEY_WEEE_AMOUNT_REFUNDED])) {
- $totalAmountRefunded = $weeeTaxAppliedAmount[self::KEY_WEEE_AMOUNT_REFUNDED];
- break;
- }
- }
- return $totalAmountRefunded;
- }
- /**
- * @param OrderItem $orderItem
- * @return float
- */
- public function getBaseWeeeAmountRefunded($orderItem)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($orderItem);
- $baseTotalAmountRefunded = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- if (isset($weeeTaxAppliedAmount[self::KEY_BASE_WEEE_AMOUNT_REFUNDED])) {
- $baseTotalAmountRefunded = $weeeTaxAppliedAmount[self::KEY_BASE_WEEE_AMOUNT_REFUNDED];
- break;
- }
- }
- return $baseTotalAmountRefunded;
- }
- /**
- * @param OrderItem $orderItem
- * @return float
- */
- public function getWeeeTaxAmountRefunded($orderItem)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($orderItem);
- $totalTaxRefunded = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- if (isset($weeeTaxAppliedAmount[self::KEY_WEEE_TAX_AMOUNT_REFUNDED])) {
- $totalTaxRefunded = $weeeTaxAppliedAmount[self::KEY_WEEE_TAX_AMOUNT_REFUNDED];
- break;
- }
- }
- return $totalTaxRefunded;
- }
- /**
- * @param OrderItem $orderItem
- * @return float
- */
- public function getBaseWeeeTaxAmountRefunded($orderItem)
- {
- $weeeTaxAppliedAmounts = $this->getApplied($orderItem);
- $baseTotalTaxRefunded = 0;
- foreach ($weeeTaxAppliedAmounts as $weeeTaxAppliedAmount) {
- if (isset($weeeTaxAppliedAmount[self::KEY_BASE_WEEE_TAX_AMOUNT_REFUNDED])) {
- $baseTotalTaxRefunded = $weeeTaxAppliedAmount[self::KEY_BASE_WEEE_TAX_AMOUNT_REFUNDED];
- break;
- }
- }
- return $baseTotalTaxRefunded;
- }
- /**
- * Returns the total amount of FPT across all items. Used for displaying the FPT totals line item.
- *
- * @param QuoteAbstractItem[] $items
- * @param null|string|bool|int|Store $store
- * @return float
- */
- public function getTotalAmounts($items, $store = null)
- {
- $weeeTotal = 0;
- $displayTotalsInclTax = $this->displayTotalsInclTax($store);
- foreach ($items as $item) {
- if ($displayTotalsInclTax) {
- $weeeTotal += $this->getRowWeeeTaxInclTax($item);
- } else {
- $weeeTotal += $item->getWeeeTaxAppliedRowAmount();
- }
- }
- return $weeeTotal;
- }
- /**
- * Returns the base total amount of FPT across all items. Used for displaying the FPT totals line item.
- *
- * @param QuoteAbstractItem[] $items
- * @param null|string|bool|int|Store $store
- * @return float
- * @since 100.1.0
- */
- public function getBaseTotalAmounts($items, $store = null)
- {
- $baseWeeeTotal = 0;
- $displayTotalsInclTax = $this->displayTotalsInclTax($store);
- foreach ($items as $item) {
- if ($displayTotalsInclTax) {
- $baseWeeeTotal += $this->getBaseRowWeeeTaxInclTax($item);
- } else {
- $baseWeeeTotal += $item->getBaseWeeeTaxAppliedRowAmnt();
- }
- }
- return $baseWeeeTotal;
- }
- /**
- * Get FPT DISPLAY_INCL setting
- *
- * @param int|null $storeId
- * @return bool
- */
- public function isDisplayIncl($storeId = null)
- {
- return $this->typeOfDisplay(
- WeeeDisplayConfig::DISPLAY_INCL,
- \Magento\Framework\Pricing\Render::ZONE_ITEM_VIEW,
- $storeId
- );
- }
- /**
- * Get FPT DISPLAY_INCL_DESCR setting
- *
- * @param int|null $storeId
- * @return bool
- */
- public function isDisplayInclDesc($storeId = null)
- {
- return $this->typeOfDisplay(
- WeeeDisplayConfig::DISPLAY_INCL_DESCR,
- \Magento\Framework\Pricing\Render::ZONE_ITEM_VIEW,
- $storeId
- );
- }
- /**
- * Get FPT DISPLAY_EXCL_DESCR_INCL setting
- *
- * @param int|null $storeId
- * @return bool
- */
- public function isDisplayExclDescIncl($storeId = null)
- {
- return $this->typeOfDisplay(
- WeeeDisplayConfig::DISPLAY_EXCL_DESCR_INCL,
- \Magento\Framework\Pricing\Render::ZONE_ITEM_VIEW,
- $storeId
- );
- }
- /**
- * Get FPT DISPLAY_EXCL setting
- *
- * @param int|null $storeId
- * @return bool
- */
- public function isDisplayExcl($storeId = null)
- {
- return $this->typeOfDisplay(
- WeeeDisplayConfig::DISPLAY_EXCL,
- \Magento\Framework\Pricing\Render::ZONE_ITEM_VIEW,
- $storeId
- );
- }
- /**
- * Get tax price display settings
- *
- * @param null|string|bool|int|Store $store
- * @return int
- */
- public function getTaxDisplayConfig($store = null)
- {
- return $this->_taxData->getPriceDisplayType($store);
- }
- /**
- * Return an array of FPT attributes for a bundle product
- *
- * @param \Magento\Catalog\Model\Product $product
- * @return array
- */
- public function getWeeeAttributesForBundle($product)
- {
- if ($product->getTypeId() == \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
- $typeInstance = $product->getTypeInstance();
- $typeInstance->setStoreFilter($product->getStoreId(), $product);
- $selectionCollection = $typeInstance->getSelectionsCollection(
- $typeInstance->getOptionsIds($product),
- $product
- );
- $insertedWeeeCodesArray = [];
- foreach ($selectionCollection as $selectionItem) {
- $weeeAttributes = $this->getProductWeeeAttributes(
- $selectionItem,
- null,
- null,
- $product->getStore()->getWebsiteId(),
- true,
- false
- );
- $priceTaxDisplay = $this->getTaxDisplayConfig();
- $priceIncludesTax = $this->displayTotalsInclTax();
- foreach ($weeeAttributes as $weeeAttribute) {
- if ($priceTaxDisplay == \Magento\Tax\Model\Config::DISPLAY_TYPE_INCLUDING_TAX ||
- $priceTaxDisplay == \Magento\Tax\Model\Config::DISPLAY_TYPE_BOTH) {
- if ($priceIncludesTax == false) {
- $weeeAttribute['amount'] = $weeeAttribute['amount_excl_tax'] + $weeeAttribute['tax_amount'];
- }
- } elseif ($priceTaxDisplay == \Magento\Tax\Model\Config::DISPLAY_TYPE_EXCLUDING_TAX) {
- if ($priceIncludesTax == true) {
- $weeeAttribute['amount'] = $weeeAttribute['amount_excl_tax'];
- }
- }
- $insertedWeeeCodesArray[$selectionItem->getId()][$weeeAttribute->getCode()] = $weeeAttribute;
- }
- }
- return $insertedWeeeCodesArray;
- }
- return [];
- }
- }
|