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

Public Member Functions

 __construct (\Magento\Sales\Model\OrderFactory $orderFactory, \Magento\Sales\Model\ResourceModel\Order\Tax\ItemFactory $orderItemTaxFactory, \Magento\Tax\Api\Data\OrderTaxDetailsInterfaceFactory $orderTaxDetailsDataObjectFactory, \Magento\Tax\Api\Data\OrderTaxDetailsItemInterfaceFactory $itemDataObjectFactory, TaxDetailsDataObjectFactory $appliedTaxDataObjectFactory)
 
 getOrderTaxDetails ($orderId)
 

Protected Member Functions

 convertToAppliedTaxDataObject (TaxDetailsDataObjectFactory $appliedTaxDataObjectFactory, $itemAppliedTax, AppliedTax $existingAppliedTax=null)
 
 aggregateAppliedTaxes (TaxDetailsDataObjectFactory $appliedTaxDataObjectFactory, $items)
 

Protected Attributes

 $orderItemTaxFactory
 
 $orderFactory
 
 $orderTaxDetailsDataObjectFactory
 
 $itemDataObjectFactory
 
 $appliedTaxDataObjectFactory
 

Detailed Description

Definition at line 15 of file TaxManagement.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Sales\Model\OrderFactory  $orderFactory,
\Magento\Sales\Model\ResourceModel\Order\Tax\ItemFactory  $orderItemTaxFactory,
\Magento\Tax\Api\Data\OrderTaxDetailsInterfaceFactory  $orderTaxDetailsDataObjectFactory,
\Magento\Tax\Api\Data\OrderTaxDetailsItemInterfaceFactory  $itemDataObjectFactory,
TaxDetailsDataObjectFactory  $appliedTaxDataObjectFactory 
)
Parameters
\Magento\Sales\Model\OrderFactory$orderFactory
\Magento\Sales\Model\ResourceModel\Order\Tax\ItemFactory$orderItemTaxFactory
\Magento\Tax\Api\Data\OrderTaxDetailsInterfaceFactory$orderTaxDetailsDataObjectFactory
\Magento\Tax\Api\Data\OrderTaxDetailsItemInterfaceFactory$itemDataObjectFactory
TaxDetailsDataObjectFactory$appliedTaxDataObjectFactory

Definition at line 49 of file TaxManagement.php.

55  {
56  $this->orderFactory = $orderFactory;
57  $this->orderItemTaxFactory = $orderItemTaxFactory;
58  $this->orderTaxDetailsDataObjectFactory = $orderTaxDetailsDataObjectFactory;
59  $this->itemDataObjectFactory = $itemDataObjectFactory;
60  $this->appliedTaxDataObjectFactory = $appliedTaxDataObjectFactory;
61  }

Member Function Documentation

◆ aggregateAppliedTaxes()

aggregateAppliedTaxes ( TaxDetailsDataObjectFactory  $appliedTaxDataObjectFactory,
  $items 
)
protected

Aggregate item applied taxes to get order applied taxes

Parameters
TaxDetailsDataObjectFactory$appliedTaxDataObjectFactory

Definition at line 98 of file TaxManagement.php.

99  {
100  $orderAppliedTaxes = [];
101  $orderAppliedTaxesData = [];
102  foreach ($items as $item) {
103  $itemAppliedTaxes = $item->getAppliedTaxes();
104  foreach ($itemAppliedTaxes as $itemAppliedTax) {
105  $code = $itemAppliedTax->getCode();
106  if (!isset($orderAppliedTaxesData[$code])) {
107  $orderAppliedTaxesData[$code] = [
108  Tax::KEY_CODE => $code,
109  Tax::KEY_TITLE => $itemAppliedTax->getTitle(),
110  Tax::KEY_PERCENT => $itemAppliedTax->getPercent(),
111  Tax::KEY_AMOUNT => $itemAppliedTax->getAmount(),
112  Tax::KEY_BASE_AMOUNT => $itemAppliedTax->getBaseAmount(),
113  ];
114  } else {
115  $orderAppliedTaxesData[$code][Tax::KEY_AMOUNT] += $itemAppliedTax->getAmount();
116  $orderAppliedTaxesData[$code][Tax::KEY_BASE_AMOUNT] += $itemAppliedTax->getBaseAmount();
117  }
118  }
119  }
120  foreach ($orderAppliedTaxesData as $orderAppliedTaxData) {
121  $orderAppliedTaxes[] = $appliedTaxDataObjectFactory->create()
122  ->setCode($orderAppliedTaxData[Tax::KEY_CODE])
123  ->setTitle($orderAppliedTaxData[Tax::KEY_TITLE])
124  ->setPercent($orderAppliedTaxData[Tax::KEY_PERCENT])
125  ->setAmount($orderAppliedTaxData[Tax::KEY_AMOUNT])
126  ->setBaseAmount($orderAppliedTaxData[Tax::KEY_BASE_AMOUNT]);
127  }
128  return $orderAppliedTaxes;
129  }
$code
Definition: info.phtml:12
$items

◆ convertToAppliedTaxDataObject()

convertToAppliedTaxDataObject ( TaxDetailsDataObjectFactory  $appliedTaxDataObjectFactory,
  $itemAppliedTax,
AppliedTax  $existingAppliedTax = null 
)
protected

Convert applied tax from array to data object

Parameters
TaxDetailsDataObjectFactory$appliedTaxDataObjectFactory
array$itemAppliedTax
AppliedTax$existingAppliedTax
Returns
AppliedTax

Definition at line 71 of file TaxManagement.php.

75  {
76  // if there is an existingAppliedTax, include its amount and baseAmount
77  $amount = $baseAmount = 0;
78  if ($existingAppliedTax !== null) {
79  $amount = $existingAppliedTax->getAmount();
80  $baseAmount = $existingAppliedTax->getBaseAmount();
81  }
82 
83  return $appliedTaxDataObjectFactory->create()
84  ->setCode($itemAppliedTax['code'])
85  ->setTitle($itemAppliedTax['title'])
86  ->setPercent($itemAppliedTax['tax_percent'])
87  ->setAmount($itemAppliedTax['real_amount'] + $amount)
88  ->setBaseAmount($itemAppliedTax['real_base_amount'] + $baseAmount);
89  }
$baseAmount
Definition: tax.phtml:46
$amount
Definition: order.php:14

◆ getOrderTaxDetails()

getOrderTaxDetails (   $orderId)

{Get taxes applied to an order

Parameters
int$orderId
Returns
\Magento\Tax\Api\Data\OrderTaxDetailsInterface
Exceptions
}

Implements OrderTaxManagementInterface.

Definition at line 134 of file TaxManagement.php.

135  {
136  $order = $this->orderFactory->create()->load($orderId);
137  if (!$order) {
138  throw new NoSuchEntityException(
139  __(
140  'No such entity with %fieldName = %fieldValue',
141  ['fieldName' => 'orderId', 'fieldValue' => $orderId]
142  )
143  );
144  }
145 
146  $orderItemAppliedTaxes = $this->orderItemTaxFactory->create()->getTaxItemsByOrderId($orderId);
147  $itemsData = [];
148  foreach ($orderItemAppliedTaxes as $itemAppliedTax) {
149  $key = $itemId = $associatedItemId = null;
150 
151  //group applied taxes by item
152  if (isset($itemAppliedTax['item_id'])) {
153  //The taxable is a product
154  //Note: the associatedItemId is null
155  $itemId = $itemAppliedTax['item_id'];
156  $key = $itemId;
157  } elseif (isset($itemAppliedTax['associated_item_id'])) {
158  //The taxable is associated with a product, e.g., weee, gift wrapping, etc.
159  //Note: the itemId is null
160  $associatedItemId = $itemAppliedTax['associated_item_id'];
161  $key = $itemAppliedTax['taxable_item_type'] . $associatedItemId;
162  } else {
163  //The taxable is not associated with a product, e.g., shipping
164  //Use item type as key. Both the itemId and associatedItemId are null
165  $key = $itemAppliedTax['taxable_item_type'];
166  }
167 
168  // create the itemsData entry
169  if (!isset($itemsData[$key])) {
170  $itemsData[$key] = [
171  Item::KEY_TYPE => $itemAppliedTax['taxable_item_type'],
172  Item::KEY_ITEM_ID => $itemId, // might be null
173  Item::KEY_ASSOCIATED_ITEM_ID => $associatedItemId, // might be null
174  ];
175  }
176  $current = null;
177  if (isset($itemsData[$key][Item::KEY_APPLIED_TAXES][$itemAppliedTax['code']])) {
178  $current = $itemsData[$key][Item::KEY_APPLIED_TAXES][$itemAppliedTax['code']];
179  }
180  $itemsData[$key][Item::KEY_APPLIED_TAXES][$itemAppliedTax['code']] =
181  $this->convertToAppliedTaxDataObject($this->appliedTaxDataObjectFactory, $itemAppliedTax, $current);
182  }
183 
184  $items = [];
185  foreach ($itemsData as $itemData) {
186  $items[] = $this->itemDataObjectFactory->create()
187  ->setType($itemData[Item::KEY_TYPE])
188  ->setItemId($itemData[Item::KEY_ITEM_ID])
189  ->setAssociatedItemId($itemData[Item::KEY_ASSOCIATED_ITEM_ID])
190  ->setAppliedTaxes($itemData[Item::KEY_APPLIED_TAXES]);
191  }
192  $orderAppliedTaxesDOs = $this->aggregateAppliedTaxes($this->appliedTaxDataObjectFactory, $items);
193  return $this->orderTaxDetailsDataObjectFactory->create()
194  ->setItems($items)
195  ->setAppliedTaxes($orderAppliedTaxesDOs);
196  }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
convertToAppliedTaxDataObject(TaxDetailsDataObjectFactory $appliedTaxDataObjectFactory, $itemAppliedTax, AppliedTax $existingAppliedTax=null)
$order
Definition: order.php:55
__()
Definition: __.php:13
aggregateAppliedTaxes(TaxDetailsDataObjectFactory $appliedTaxDataObjectFactory, $items)
$items

Field Documentation

◆ $appliedTaxDataObjectFactory

$appliedTaxDataObjectFactory
protected

Definition at line 40 of file TaxManagement.php.

◆ $itemDataObjectFactory

$itemDataObjectFactory
protected

Definition at line 35 of file TaxManagement.php.

◆ $orderFactory

$orderFactory
protected

Definition at line 25 of file TaxManagement.php.

◆ $orderItemTaxFactory

$orderItemTaxFactory
protected

Definition at line 20 of file TaxManagement.php.

◆ $orderTaxDetailsDataObjectFactory

$orderTaxDetailsDataObjectFactory
protected

Definition at line 30 of file TaxManagement.php.


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