Skip to content

Commit ee9e183

Browse files
committed
MAGETWO-53366: Tax Report does not display any records
- adding code improvements checking
1 parent 46d43ed commit ee9e183

File tree

1 file changed

+85
-81
lines changed

1 file changed

+85
-81
lines changed

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

Lines changed: 85 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -78,38 +78,40 @@ protected function saveOrderTax(\Magento\Sales\Api\Data\OrderInterface $order)
7878
$ratesIdQuoteItemId = [];
7979
foreach ($taxesForItems as $taxesArray) {
8080
foreach ($taxesArray['applied_taxes'] as $rates) {
81-
if ($rates['extension_attributes']) {
82-
$taxRates = $rates['extension_attributes']->getRates();
81+
if (isset($rates['extension_attributes'])) {
8382
/** @var \Magento\Tax\Api\Data\AppliedTaxRateInterface[] $taxRates */
84-
if (count($taxRates) == 1) {
85-
$ratesIdQuoteItemId[$rates['id']][] = [
86-
'id' => $taxesArray['item_id'],
87-
'percent' => $rates['percent'],
88-
'code' => $taxRates[0]['code'],
89-
'associated_item_id' => $taxesArray['associated_item_id'],
90-
'item_type' => $taxesArray['type'],
91-
'amount' => $rates['amount'],
92-
'base_amount' => $rates['base_amount'],
93-
'real_amount' => $rates['amount'],
94-
'real_base_amount' => $rates['base_amount'],
95-
];
96-
} else {
97-
$percentSum = 0;
98-
foreach ($taxRates as $rate) {
99-
$realAmount = $rates['amount'] * $rate['percent'] / $rates['percent'];
100-
$realBaseAmount = $rates['base_amount'] * $rate['percent'] / $rates['percent'];
83+
$taxRates = $rates['extension_attributes']->getRates();
84+
if (is_array($taxRates)) {
85+
if (count($taxRates) == 1) {
10186
$ratesIdQuoteItemId[$rates['id']][] = [
10287
'id' => $taxesArray['item_id'],
103-
'percent' => $rate['percent'],
104-
'code' => $rate['code'],
88+
'percent' => $rates['percent'],
89+
'code' => $taxRates[0]['code'],
10590
'associated_item_id' => $taxesArray['associated_item_id'],
10691
'item_type' => $taxesArray['type'],
10792
'amount' => $rates['amount'],
10893
'base_amount' => $rates['base_amount'],
109-
'real_amount' => $realAmount,
110-
'real_base_amount' => $realBaseAmount,
94+
'real_amount' => $rates['amount'],
95+
'real_base_amount' => $rates['base_amount'],
11196
];
112-
$percentSum += $rate['percent'];
97+
} else {
98+
$percentSum = 0;
99+
foreach ($taxRates as $rate) {
100+
$realAmount = $rates['amount'] * $rate['percent'] / $rates['percent'];
101+
$realBaseAmount = $rates['base_amount'] * $rate['percent'] / $rates['percent'];
102+
$ratesIdQuoteItemId[$rates['id']][] = [
103+
'id' => $taxesArray['item_id'],
104+
'percent' => $rate['percent'],
105+
'code' => $rate['code'],
106+
'associated_item_id' => $taxesArray['associated_item_id'],
107+
'item_type' => $taxesArray['type'],
108+
'amount' => $rates['amount'],
109+
'base_amount' => $rates['base_amount'],
110+
'real_amount' => $realAmount,
111+
'real_base_amount' => $realBaseAmount,
112+
];
113+
$percentSum += $rate['percent'];
114+
}
113115
}
114116
}
115117
}
@@ -118,69 +120,71 @@ protected function saveOrderTax(\Magento\Sales\Api\Data\OrderInterface $order)
118120

119121
foreach ($taxes as $row) {
120122
$id = $row['id'];
121-
if ($row['extension_attributes']) {
123+
if (isset($row['extension_attributes'])) {
122124
/** @var \Magento\Tax\Api\Data\AppliedTaxRateInterface[] $taxRates */
123125
$taxRates = $row['extension_attributes']->getRates();
124-
foreach ($taxRates as $tax) {
125-
if ($row['percent'] == null) {
126-
$baseRealAmount = $row['base_amount'];
127-
} else {
128-
if ($row['percent'] == 0 || $tax['percent'] == 0) {
129-
continue;
126+
if (is_array($taxRates)) {
127+
foreach ($taxRates as $tax) {
128+
if ($row['percent'] == null) {
129+
$baseRealAmount = $row['base_amount'];
130+
} else {
131+
if ($row['percent'] == 0 || $tax['percent'] == 0) {
132+
continue;
133+
}
134+
$baseRealAmount = $row['base_amount'] / $row['percent'] * $tax['percent'];
130135
}
131-
$baseRealAmount = $row['base_amount'] / $row['percent'] * $tax['percent'];
132-
}
133-
$hidden = isset($row['hidden']) ? $row['hidden'] : 0;
134-
$priority = isset($tax['priority']) ? $tax['priority'] : 0;
135-
$position = isset($tax['position']) ? $tax['position'] : 0;
136-
$process = isset($row['process']) ? $row['process'] : 0;
137-
$data = [
138-
'order_id' => $order->getEntityId(),
139-
'code' => $tax['code'],
140-
'title' => $tax['title'],
141-
'hidden' => $hidden,
142-
'percent' => $tax['percent'],
143-
'priority' => $priority,
144-
'position' => $position,
145-
'amount' => $row['amount'],
146-
'base_amount' => $row['base_amount'],
147-
'process' => $process,
148-
'base_real_amount' => $baseRealAmount,
149-
];
136+
$hidden = isset($row['hidden']) ? $row['hidden'] : 0;
137+
$priority = isset($tax['priority']) ? $tax['priority'] : 0;
138+
$position = isset($tax['position']) ? $tax['position'] : 0;
139+
$process = isset($row['process']) ? $row['process'] : 0;
140+
$data = [
141+
'order_id' => $order->getEntityId(),
142+
'code' => $tax['code'],
143+
'title' => $tax['title'],
144+
'hidden' => $hidden,
145+
'percent' => $tax['percent'],
146+
'priority' => $priority,
147+
'position' => $position,
148+
'amount' => $row['amount'],
149+
'base_amount' => $row['base_amount'],
150+
'process' => $process,
151+
'base_real_amount' => $baseRealAmount,
152+
];
150153

151-
/** @var $orderTax \Magento\Tax\Model\Sales\Order\Tax */
152-
$orderTax = $this->orderTaxFactory->create();
153-
$result = $orderTax->setData($data)->save();
154+
/** @var $orderTax \Magento\Tax\Model\Sales\Order\Tax */
155+
$orderTax = $this->orderTaxFactory->create();
156+
$result = $orderTax->setData($data)->save();
154157

155-
if (isset($ratesIdQuoteItemId[$id])) {
156-
foreach ($ratesIdQuoteItemId[$id] as $quoteItemId) {
157-
if ($quoteItemId['code'] == $tax['code']) {
158-
$itemId = null;
159-
$associatedItemId = null;
160-
if (isset($quoteItemId['id'])) {
161-
//This is a product item
162-
$item = $order->getItemByQuoteItemId($quoteItemId['id']);
163-
$itemId = $item->getId();
164-
} elseif (isset($quoteItemId['associated_item_id'])) {
165-
//This item is associated with a product item
166-
$item = $order->getItemByQuoteItemId($quoteItemId['associated_item_id']);
167-
$associatedItemId = $item->getId();
168-
}
158+
if (isset($ratesIdQuoteItemId[$id])) {
159+
foreach ($ratesIdQuoteItemId[$id] as $quoteItemId) {
160+
if ($quoteItemId['code'] == $tax['code']) {
161+
$itemId = null;
162+
$associatedItemId = null;
163+
if (isset($quoteItemId['id'])) {
164+
//This is a product item
165+
$item = $order->getItemByQuoteItemId($quoteItemId['id']);
166+
$itemId = $item->getId();
167+
} elseif (isset($quoteItemId['associated_item_id'])) {
168+
//This item is associated with a product item
169+
$item = $order->getItemByQuoteItemId($quoteItemId['associated_item_id']);
170+
$associatedItemId = $item->getId();
171+
}
169172

170-
$data = [
171-
'item_id' => $itemId,
172-
'tax_id' => $result->getTaxId(),
173-
'tax_percent' => $quoteItemId['percent'],
174-
'associated_item_id' => $associatedItemId,
175-
'amount' => $quoteItemId['amount'],
176-
'base_amount' => $quoteItemId['base_amount'],
177-
'real_amount' => $quoteItemId['real_amount'],
178-
'real_base_amount' => $quoteItemId['real_base_amount'],
179-
'taxable_item_type' => $quoteItemId['item_type'],
180-
];
181-
/** @var $taxItem \Magento\Sales\Model\Order\Tax\Item */
182-
$taxItem = $this->taxItemFactory->create();
183-
$taxItem->setData($data)->save();
173+
$data = [
174+
'item_id' => $itemId,
175+
'tax_id' => $result->getTaxId(),
176+
'tax_percent' => $quoteItemId['percent'],
177+
'associated_item_id' => $associatedItemId,
178+
'amount' => $quoteItemId['amount'],
179+
'base_amount' => $quoteItemId['base_amount'],
180+
'real_amount' => $quoteItemId['real_amount'],
181+
'real_base_amount' => $quoteItemId['real_base_amount'],
182+
'taxable_item_type' => $quoteItemId['item_type'],
183+
];
184+
/** @var $taxItem \Magento\Sales\Model\Order\Tax\Item */
185+
$taxItem = $this->taxItemFactory->create();
186+
$taxItem->setData($data)->save();
187+
}
184188
}
185189
}
186190
}

0 commit comments

Comments
 (0)