123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Tax\Pricing;
- use Magento\Framework\Pricing\Adjustment\AdjustmentInterface;
- use Magento\Framework\Pricing\SaleableInterface;
- use Magento\Tax\Helper\Data as TaxHelper;
- /**
- * Tax pricing adjustment model
- */
- class Adjustment implements AdjustmentInterface
- {
- /**
- * Adjustment code tax
- */
- const ADJUSTMENT_CODE = 'tax';
- /**
- * @var TaxHelper
- */
- protected $taxHelper;
- /**
- * \Magento\Catalog\Helper\Data
- *
- * @var CatalogHelper
- */
- protected $catalogHelper;
- /**
- * @var int|null
- */
- protected $sortOrder;
- /**
- * @param TaxHelper $taxHelper
- * @param \Magento\Catalog\Helper\Data $catalogHelper
- * @param int|null $sortOrder
- */
- public function __construct(TaxHelper $taxHelper, \Magento\Catalog\Helper\Data $catalogHelper, $sortOrder = null)
- {
- $this->taxHelper = $taxHelper;
- $this->catalogHelper = $catalogHelper;
- $this->sortOrder = $sortOrder;
- }
- /**
- * Get adjustment code
- *
- * @return string
- */
- public function getAdjustmentCode()
- {
- return self::ADJUSTMENT_CODE;
- }
- /**
- * Define if adjustment is included in base price
- *
- * @return bool
- */
- public function isIncludedInBasePrice()
- {
- return $this->taxHelper->priceIncludesTax();
- }
- /**
- * Define if adjustment is included in display price
- *
- * @return bool
- */
- public function isIncludedInDisplayPrice()
- {
- return $this->taxHelper->displayPriceIncludingTax() || $this->taxHelper->displayBothPrices();
- }
- /**
- * Extract adjustment amount from the given amount value
- *
- * @param float $amount
- * @param SaleableInterface $saleableItem
- * @param null|array $context
- * @return float
- */
- public function extractAdjustment($amount, SaleableInterface $saleableItem, $context = [])
- {
- if ($this->taxHelper->priceIncludesTax()) {
- $adjustedAmount = $this->catalogHelper->getTaxPrice(
- $saleableItem,
- $amount,
- false,
- null,
- null,
- null,
- null,
- null,
- false
- );
- $result = $amount - $adjustedAmount;
- } else {
- $result = 0.;
- }
- return $result;
- }
- /**
- * Apply adjustment amount and return result value
- *
- * @param float $amount
- * @param SaleableInterface $saleableItem
- * @param null|array $context
- * @return float
- */
- public function applyAdjustment($amount, SaleableInterface $saleableItem, $context = [])
- {
- return $this->catalogHelper->getTaxPrice(
- $saleableItem,
- $amount,
- true,
- null,
- null,
- null,
- null,
- null,
- false
- );
- }
- /**
- * Check if adjustment should be excluded from calculations along with the given adjustment
- *
- * @param string $adjustmentCode
- * @return bool
- */
- public function isExcludedWith($adjustmentCode)
- {
- return $this->getAdjustmentCode() === $adjustmentCode;
- }
- /**
- * Return sort order position
- *
- * @return int
- */
- public function getSortOrder()
- {
- return $this->sortOrder;
- }
- }
|