Skip to content

Commit 62964be

Browse files
committed
MAGETWO-53366: Tax Report does not display any records
- updating array structure to match data interface to fix extension attributes that return the object rather than the array causing loss of data and logic incompatibility in plugin implementaion
1 parent 2eaa8b5 commit 62964be

File tree

4 files changed

+56
-8
lines changed

4 files changed

+56
-8
lines changed

app/code/Magento/Tax/Api/Data/OrderTaxDetailsAppliedTaxInterface.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,19 @@ public function getBaseAmount();
8888
*/
8989
public function setBaseAmount($baseAmount);
9090

91+
/**
92+
*
93+
* @return \Magento\Tax\Api\Data\AppliedTaxRateInterface[]
94+
*/
95+
public function getRates();
96+
97+
/**
98+
*
99+
* @param \Magento\Tax\Api\Data\AppliedTaxRateInterface[] $rates
100+
* @return $this
101+
*/
102+
public function setRates($rates);
103+
91104
/**
92105
* Retrieve existing extension attributes object or create a new one.
93106
*

app/code/Magento/Tax/Model/Plugin/OrderSave.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,26 +63,28 @@ protected function saveOrderTax(\Magento\Sales\Api\Data\OrderInterface $order)
6363
return;
6464
}
6565

66+
/** @var \Magento\Tax\Api\Data\OrderTaxDetailsAppliedTaxInterface[]|null $taxes */
6667
$taxes = $extensionAttribute->getAppliedTaxes();
6768
if ($taxes == null) {
6869
$taxes = [];
6970
}
7071

72+
/** @var \Magento\Tax\Api\Data\OrderTaxDetailsItemInterface[]|null $taxesForItems */
7173
$taxesForItems = $extensionAttribute->getItemAppliedTaxes();
7274
if ($taxesForItems == null) {
7375
$taxesForItems = [];
7476
}
7577

7678
$ratesIdQuoteItemId = [];
7779
foreach ($taxesForItems as $taxesArray) {
78-
foreach ($taxesArray as $rates) {
80+
foreach ($taxesArray->getAppliedTaxes() as $rates) {
7981
if (count($rates['rates']) == 1) {
8082
$ratesIdQuoteItemId[$rates['id']][] = [
81-
'id' => $rates['item_id'],
83+
'id' => $taxesArray['item_id'],
8284
'percent' => $rates['percent'],
8385
'code' => $rates['rates'][0]['code'],
84-
'associated_item_id' => $rates['associated_item_id'],
85-
'item_type' => $rates['item_type'],
86+
'associated_item_id' => $taxesArray['associated_item_id'],
87+
'item_type' => $taxesArray['type'],
8688
'amount' => $rates['amount'],
8789
'base_amount' => $rates['base_amount'],
8890
'real_amount' => $rates['amount'],
@@ -94,11 +96,11 @@ protected function saveOrderTax(\Magento\Sales\Api\Data\OrderInterface $order)
9496
$realAmount = $rates['amount'] * $rate['percent'] / $rates['percent'];
9597
$realBaseAmount = $rates['base_amount'] * $rate['percent'] / $rates['percent'];
9698
$ratesIdQuoteItemId[$rates['id']][] = [
97-
'id' => $rates['item_id'],
99+
'id' => $taxesArray['item_id'],
98100
'percent' => $rate['percent'],
99101
'code' => $rate['code'],
100-
'associated_item_id' => $rates['associated_item_id'],
101-
'item_type' => $rates['item_type'],
102+
'associated_item_id' => $taxesArray['associated_item_id'],
103+
'item_type' => $taxesArray['type'],
102104
'amount' => $rates['amount'],
103105
'base_amount' => $rates['base_amount'],
104106
'real_amount' => $realAmount,

app/code/Magento/Tax/Model/Quote/ToOrderConverter.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,21 @@ public function afterConvert(QuoteAddressToOrder $subject, OrderInterface $order
6363
}
6464

6565
$itemAppliedTaxes = $this->quoteAddress->getItemsAppliedTaxes();
66+
$itemAppliedTaxesModified = [];
6667
if (!empty($itemAppliedTaxes)) {
67-
$extensionAttributes->setItemAppliedTaxes($itemAppliedTaxes);
68+
foreach ($itemAppliedTaxes as $key => $itemAppliedTaxItem) {
69+
if (is_array($itemAppliedTaxItem) && !empty($itemAppliedTaxItem)) {
70+
foreach ($itemAppliedTaxItem as $itemAppliedTax) {
71+
$itemAppliedTaxesModified[$key]['type'] = $itemAppliedTax['item_type'];
72+
$itemAppliedTaxesModified[$key]['item_id'] = $itemAppliedTax['item_id'];
73+
$itemAppliedTaxesModified[$key]['associated_item_id'] = $itemAppliedTax['associated_item_id'];
74+
$itemAppliedTaxesModified[$key]['applied_taxes'][] = $itemAppliedTax;
75+
}
76+
} elseif (!empty($itemAppliedTaxItem)) {
77+
$itemAppliedTaxesModified[$key] = $itemAppliedTaxItem;
78+
}
79+
}
80+
$extensionAttributes->setItemAppliedTaxes($itemAppliedTaxesModified);
6881
}
6982
$order->setExtensionAttributes($extensionAttributes);
7083
return $order;

app/code/Magento/Tax/Model/Sales/Order/Tax.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class Tax extends \Magento\Framework\Model\AbstractExtensibleModel implements
3131
const KEY_PERCENT = 'percent';
3232
const KEY_AMOUNT = 'amount';
3333
const KEY_BASE_AMOUNT = 'base_amount';
34+
const KEY_RATES = 'rates';
3435
/**#@-*/
3536

3637
/**
@@ -136,6 +137,25 @@ public function setBaseAmount($baseAmount)
136137
return $this->setData(self::KEY_BASE_AMOUNT, $baseAmount);
137138
}
138139

140+
/**
141+
*
142+
* @return \Magento\Tax\Api\Data\AppliedTaxRateInterface[]
143+
*/
144+
public function getRates()
145+
{
146+
return $this->getData(self::KEY_RATES);
147+
}
148+
149+
/**
150+
*
151+
* @param \Magento\Tax\Api\Data\AppliedTaxRateInterface[] $rates
152+
* @return $this
153+
*/
154+
public function setRates($rates)
155+
{
156+
return $this->setData(self::KEY_RATES, $rates);
157+
}
158+
139159
/**
140160
* {@inheritdoc}
141161
*

0 commit comments

Comments
 (0)