Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Member Functions | Protected Attributes
TaxCalculation Class Reference
Inheritance diagram for TaxCalculation:
TaxCalculationInterface

Public Member Functions

 __construct (Calculation $calculation, CalculatorFactory $calculatorFactory, Config $config, TaxDetailsInterfaceFactory $taxDetailsDataObjectFactory, TaxDetailsItemInterfaceFactory $taxDetailsItemDataObjectFactory, StoreManagerInterface $storeManager, TaxClassManagementInterface $taxClassManagement, \Magento\Framework\Api\DataObjectHelper $dataObjectHelper)
 
 getDefaultCalculatedRate ( $productTaxClassID, $customerId=null, $storeId=null)
 
 getCalculatedRate ( $productTaxClassID, $customerId=null, $storeId=null)
 
- Public Member Functions inherited from TaxCalculationInterface
 calculateTax (\Magento\Tax\Api\Data\QuoteDetailsInterface $quoteDetails, $storeId=null, $round=true)
 

Protected Member Functions

 getRate ( $productTaxClassID, $customerId=null, $storeId=null, $isDefault=false)
 
 processItem (QuoteDetailsItemInterface $item, AbstractCalculator $calculator, $round=true)
 
 calculateParent ($children, $quantity)
 
 aggregateItemData ($taxDetailsData, TaxDetailsItemInterface $item)
 
 getTotalQuantity (QuoteDetailsItemInterface $item)
 

Protected Attributes

 $taxDetailsDataObjectFactory
 
 $config
 
 $calculationTool
 
 $discountTaxCompensations
 
 $taxDetailsItemDataObjectFactory
 
 $storeManager
 
 $taxClassManagement
 
 $calculatorFactory
 
 $dataObjectHelper
 

Additional Inherited Members

- Data Fields inherited from TaxCalculationInterface
const CALC_UNIT_BASE = 'UNIT_BASE_CALCULATION'
 
const CALC_ROW_BASE = 'ROW_BASE_CALCULATION'
 
const CALC_TOTAL_BASE = 'TOTAL_BASE_CALCULATION'
 

Detailed Description

@SuppressWarnings(PHPMD.CouplingBetweenObjects)

Definition at line 26 of file TaxCalculation.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( Calculation  $calculation,
CalculatorFactory  $calculatorFactory,
Config  $config,
TaxDetailsInterfaceFactory  $taxDetailsDataObjectFactory,
TaxDetailsItemInterfaceFactory  $taxDetailsItemDataObjectFactory,
StoreManagerInterface  $storeManager,
TaxClassManagementInterface  $taxClassManagement,
\Magento\Framework\Api\DataObjectHelper  $dataObjectHelper 
)
Parameters
Calculation$calculation
CalculatorFactory$calculatorFactory
Config$config
TaxDetailsInterfaceFactory$taxDetailsDataObjectFactory
TaxDetailsItemInterfaceFactory$taxDetailsItemDataObjectFactory
StoreManagerInterface$storeManager
TaxClassManagementInterface$taxClassManagement
\Magento\Framework\Api\DataObjectHelper$dataObjectHelper

Definition at line 111 of file TaxCalculation.php.

120  {
121  $this->calculationTool = $calculation;
122  $this->calculatorFactory = $calculatorFactory;
123  $this->config = $config;
124  $this->taxDetailsDataObjectFactory = $taxDetailsDataObjectFactory;
125  $this->taxDetailsItemDataObjectFactory = $taxDetailsItemDataObjectFactory;
126  $this->storeManager = $storeManager;
127  $this->taxClassManagement = $taxClassManagement;
128  $this->dataObjectHelper = $dataObjectHelper;
129  }

Member Function Documentation

◆ aggregateItemData()

aggregateItemData (   $taxDetailsData,
TaxDetailsItemInterface  $item 
)
protected

Add row total item amount to subtotal

Parameters
array$taxDetailsData
TaxDetailsItemInterface$item
Returns
array

Definition at line 328 of file TaxCalculation.php.

329  {
330  $taxDetailsData[TaxDetails::KEY_SUBTOTAL]
331  = $taxDetailsData[TaxDetails::KEY_SUBTOTAL] + $item->getRowTotal();
332 
333  $taxDetailsData[TaxDetails::KEY_TAX_AMOUNT]
334  = $taxDetailsData[TaxDetails::KEY_TAX_AMOUNT] + $item->getRowTax();
335 
338  + $item->getDiscountTaxCompensationAmount();
339 
340  $itemAppliedTaxes = $item->getAppliedTaxes();
341  if ($itemAppliedTaxes === null) {
342  return $taxDetailsData;
343  }
344  $appliedTaxes = $taxDetailsData[TaxDetails::KEY_APPLIED_TAXES];
345  foreach ($itemAppliedTaxes as $taxId => $itemAppliedTax) {
346  if (!isset($appliedTaxes[$taxId])) {
347  //convert rate data object to array
348  $rates = [];
349  $rateDataObjects = $itemAppliedTax->getRates();
350  foreach ($rateDataObjects as $rateDataObject) {
351  $rates[$rateDataObject->getCode()] = [
352  AppliedTaxRate::KEY_CODE => $rateDataObject->getCode(),
353  AppliedTaxRate::KEY_TITLE => $rateDataObject->getTitle(),
354  AppliedTaxRate::KEY_PERCENT => $rateDataObject->getPercent(),
355  ];
356  }
357  $appliedTaxes[$taxId] = [
358  AppliedTax::KEY_AMOUNT => $itemAppliedTax->getAmount(),
359  AppliedTax::KEY_PERCENT => $itemAppliedTax->getPercent(),
361  AppliedTax::KEY_TAX_RATE_KEY => $itemAppliedTax->getTaxRateKey(),
362  ];
363  } else {
364  $appliedTaxes[$taxId][AppliedTax::KEY_AMOUNT] += $itemAppliedTax->getAmount();
365  }
366  }
367 
368  $taxDetailsData[TaxDetails::KEY_APPLIED_TAXES] = $appliedTaxes;
369  return $taxDetailsData;
370  }
$rates
Definition: tax.phtml:35

◆ calculateParent()

calculateParent (   $children,
  $quantity 
)
protected

Calculate row information for item based on children calculation

Parameters
TaxDetailsItemInterface[]$children
int$quantity
Returns
TaxDetailsItemInterface

Definition at line 294 of file TaxCalculation.php.

295  {
296  $rowTotal = 0.00;
297  $rowTotalInclTax = 0.00;
298  $rowTax = 0.00;
299  $taxableAmount = 0.00;
300 
301  foreach ($children as $child) {
302  $rowTotal += $child->getRowTotal();
303  $rowTotalInclTax += $child->getRowTotalInclTax();
304  $rowTax += $child->getRowTax();
305  $taxableAmount += $child->getTaxableAmount();
306  }
307 
308  $price = $this->calculationTool->round($rowTotal / $quantity);
309  $priceInclTax = $this->calculationTool->round($rowTotalInclTax / $quantity);
310 
311  $taxDetailsItemDataObject = $this->taxDetailsItemDataObjectFactory->create()
312  ->setPrice($price)
313  ->setPriceInclTax($priceInclTax)
314  ->setRowTotal($rowTotal)
315  ->setRowTotalInclTax($rowTotalInclTax)
316  ->setRowTax($rowTax);
317 
318  return $taxDetailsItemDataObject;
319  }
$price
$children
Definition: actions.phtml:11

◆ getCalculatedRate()

getCalculatedRate (   $productTaxClassID,
  $customerId = null,
  $storeId = null 
)

{Get rate request

Parameters
int$productTaxClassID
int$customerId
string$storeId
Returns
float
}

Implements TaxCalculationInterface.

Definition at line 216 of file TaxCalculation.php.

220  {
221  return $this->getRate($productTaxClassID, $customerId, $storeId);
222  }
getRate( $productTaxClassID, $customerId=null, $storeId=null, $isDefault=false)

◆ getDefaultCalculatedRate()

getDefaultCalculatedRate (   $productTaxClassID,
  $customerId = null,
  $storeId = null 
)

{Get default rate request

Parameters
int$productTaxClassID
int$customerId
string$storeId
Returns
float
}

Implements TaxCalculationInterface.

Definition at line 205 of file TaxCalculation.php.

209  {
210  return $this->getRate($productTaxClassID, $customerId, $storeId, true);
211  }
getRate( $productTaxClassID, $customerId=null, $storeId=null, $isDefault=false)

◆ getRate()

getRate (   $productTaxClassID,
  $customerId = null,
  $storeId = null,
  $isDefault = false 
)
protected

Calculate rate based on default parameter

Parameters
int$productTaxClassID
int | null$customerId
string | null$storeId
bool$isDefault
Returns
float

Definition at line 233 of file TaxCalculation.php.

238  {
239  if ($storeId === null) {
240  $storeId = $this->storeManager->getStore()->getStoreId();
241  }
242  if (!$isDefault) {
243  $addressRequestObject = $this->calculationTool->getRateRequest(null, null, null, $storeId, $customerId);
244  } else {
245  $addressRequestObject = $this->calculationTool->getDefaultRateRequest($storeId, $customerId);
246  }
247  $addressRequestObject->setProductClassId($productTaxClassID);
248  return $this->calculationTool->getRate($addressRequestObject);
249  }

◆ getTotalQuantity()

getTotalQuantity ( QuoteDetailsItemInterface  $item)
protected

Calculates the total quantity for this item.

What this really means is that if this is a child item, it return the parent quantity times the child quantity and return that as the child's quantity.

Parameters
QuoteDetailsItemInterface$item
Returns
float

Definition at line 381 of file TaxCalculation.php.

382  {
383  if ($item->getParentCode()) {
384  $parentQuantity = $this->keyedItems[$item->getParentCode()]->getQuantity();
385  return $parentQuantity * $item->getQuantity();
386  }
387  return $item->getQuantity();
388  }

◆ processItem()

processItem ( QuoteDetailsItemInterface  $item,
AbstractCalculator  $calculator,
  $round = true 
)
protected

Calculate item tax with customized rounding level

Parameters
QuoteDetailsItemInterface$item
AbstractCalculator$calculator
bool$round
Returns
TaxDetailsItemInterface

Definition at line 278 of file TaxCalculation.php.

282  {
283  $quantity = $this->getTotalQuantity($item);
284  return $calculator->calculate($item, $quantity, $round);
285  }
getTotalQuantity(QuoteDetailsItemInterface $item)

Field Documentation

◆ $calculationTool

$calculationTool
protected

Definition at line 47 of file TaxCalculation.php.

◆ $calculatorFactory

$calculatorFactory
protected

Definition at line 94 of file TaxCalculation.php.

◆ $config

$config
protected

Definition at line 40 of file TaxCalculation.php.

◆ $dataObjectHelper

$dataObjectHelper
protected

Definition at line 99 of file TaxCalculation.php.

◆ $discountTaxCompensations

$discountTaxCompensations
protected

Definition at line 54 of file TaxCalculation.php.

◆ $storeManager

$storeManager
protected

Definition at line 66 of file TaxCalculation.php.

◆ $taxClassManagement

$taxClassManagement
protected

Definition at line 87 of file TaxCalculation.php.

◆ $taxDetailsDataObjectFactory

$taxDetailsDataObjectFactory
protected

Definition at line 33 of file TaxCalculation.php.

◆ $taxDetailsItemDataObjectFactory

$taxDetailsItemDataObjectFactory
protected

Definition at line 61 of file TaxCalculation.php.


The documentation for this class was generated from the following file: