Skip to content

Commit 4f03bfe

Browse files
MAGETWO-95809: Item row total display incorrect value in API response
- Change response for including tax.
1 parent 2b27bc0 commit 4f03bfe

File tree

4 files changed

+34
-2
lines changed

4 files changed

+34
-2
lines changed

app/code/Magento/Sales/Block/Order/Item/Renderer/DefaultRenderer.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,23 @@ public function getTotalAmount($item)
262262
return $totalAmount;
263263
}
264264

265+
/**
266+
* Return the base total amount minus discount.
267+
*
268+
* @param OrderItem|InvoiceItem|CreditmemoItem $item
269+
* @return mixed
270+
*/
271+
public function getBaseTotalAmount($item)
272+
{
273+
$baseTotalAmount = $item->getBaseRowTotal()
274+
+ $item->getBaseTaxAmount()
275+
+ $item->getBaseDiscountTaxCompensationAmount()
276+
+ $item->getBaseWeeeTaxAppliedAmount()
277+
- $item->getBaseDiscountAmount();
278+
279+
return $baseTotalAmount;
280+
}
281+
265282
/**
266283
* Return HTML for item total after discount
267284
*

app/code/Magento/Sales/Model/Order/Webapi/ChangeOutputArray.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Magento\Sales\Api\Data\OrderItemInterface;
1111
use Magento\Sales\Block\Adminhtml\Items\Column\DefaultColumn;
12+
use Magento\Sales\Block\Order\Item\Renderer\DefaultRenderer;
1213

1314
/**
1415
* Class for changing row total in response.
@@ -20,13 +21,21 @@ class ChangeOutputArray
2021
*/
2122
private $priceRenderer;
2223

24+
/**
25+
* @var DefaultRenderer
26+
*/
27+
private $defaultRenderer;
28+
2329
/**
2430
* @param DefaultColumn $priceRenderer
31+
* @param DefaultRenderer $defaultRenderer
2532
*/
2633
public function __construct(
27-
DefaultColumn $priceRenderer
34+
DefaultColumn $priceRenderer,
35+
DefaultRenderer $defaultRenderer
2836
) {
2937
$this->priceRenderer = $priceRenderer;
38+
$this->defaultRenderer = $defaultRenderer;
3039
}
3140

3241
/**
@@ -42,6 +51,8 @@ public function execute(
4251
): array {
4352
$result[OrderItemInterface::ROW_TOTAL] = $this->priceRenderer->getTotalAmount($dataObject);
4453
$result[OrderItemInterface::BASE_ROW_TOTAL] = $this->priceRenderer->getBaseTotalAmount($dataObject);
54+
$result[OrderItemInterface::ROW_TOTAL_INCL_TAX] = $this->defaultRenderer->getTotalAmount($dataObject);
55+
$result[OrderItemInterface::BASE_ROW_TOTAL_INCL_TAX] = $this->defaultRenderer->getBaseTotalAmount($dataObject);
4556

4657
return $result;
4758
}

dev/tests/api-functional/testsuite/Magento/Sales/Service/V1/OrderItemGetTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,5 +106,7 @@ public function testGetOrderWithDiscount()
106106
$this->assertTrue(is_array($response));
107107
$this->assertEquals(8.00, $response['row_total']);
108108
$this->assertEquals(8.00, $response['base_row_total']);
109+
$this->assertEquals(9.00, $response['row_total_incl_tax']);
110+
$this->assertEquals(9.00, $response['base_row_total_incl_tax']);
109111
}
110112
}

dev/tests/integration/testsuite/Magento/Sales/_files/order_with_discount.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@
4747
->setProductType('simple')
4848
->setDiscountAmount(2)
4949
->setBaseRowTotal($product->getPrice())
50-
->setBaseDiscountAmount(2);
50+
->setBaseDiscountAmount(2)
51+
->setTaxAmount(1)
52+
->setBaseTaxAmount(1);
5153

5254
/** @var Order $order */
5355
$order = $objectManager->create(Order::class);

0 commit comments

Comments
 (0)