Skip to content

Commit b5b1625

Browse files
MAGETWO-97423: Price column in sales_order_item table shows the price including tax when Custom Price is applied on admin order
1 parent 7c6d41a commit b5b1625

File tree

3 files changed

+46
-18
lines changed

3 files changed

+46
-18
lines changed

app/code/Magento/Tax/Test/Unit/Model/Sales/Total/Quote/CommonTaxCollectorTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class CommonTaxCollectorTest extends TestCase
8383
/**
8484
* @var TaxHelper
8585
*/
86-
protected $taxHelper;
86+
private $taxHelper;
8787

8888
/**
8989
* {@inheritdoc}
@@ -152,6 +152,8 @@ protected function setUp()
152152
* @param bool $useBaseCurrency
153153
* @param string $shippingTaxClass
154154
* @param bool $shippingPriceInclTax
155+
*
156+
* @return void
155157
* @dataProvider getShippingDataObjectDataProvider
156158
*/
157159
public function testGetShippingDataObject(

dev/tests/integration/testsuite/Magento/Tax/Model/Sales/Total/Quote/SetupUtil.php

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,15 @@
77
namespace Magento\Tax\Model\Sales\Total\Quote;
88

99
use Magento\Framework\App\Config\ScopeConfigInterface;
10+
use Magento\Quote\Model\Quote;
1011
use Magento\Tax\Model\Config;
1112
use Magento\Tax\Model\Calculation;
1213
use Magento\Quote\Model\Quote\Item\Updater;
13-
use \Magento\Catalog\Api\ProductRepositoryInterface;
14+
use Magento\Catalog\Api\ProductRepositoryInterface;
15+
use Magento\Catalog\Api\Data\ProductInterface;
16+
use Magento\Framework\Api\Filter;
17+
use Magento\Framework\Api\Search\FilterGroup;
18+
use Magento\Framework\Api\SearchCriteriaInterface;
1419

1520
/**
1621
* Setup utility for quote
@@ -598,7 +603,7 @@ protected function createCartRule($ruleDataOverride)
598603
*
599604
* @param array $quoteData
600605
* @param \Magento\Customer\Api\Data\CustomerInterface $customer
601-
* @return \Magento\Quote\Model\Quote
606+
* @return Quote
602607
*/
603608
protected function createQuote($quoteData, $customer)
604609
{
@@ -623,8 +628,8 @@ protected function createQuote($quoteData, $customer)
623628
$quoteBillingAddress = $this->objectManager->create(\Magento\Quote\Model\Quote\Address::class);
624629
$quoteBillingAddress->importCustomerAddressData($addressService->getById($billingAddress->getId()));
625630

626-
/** @var \Magento\Quote\Model\Quote $quote */
627-
$quote = $this->objectManager->create(\Magento\Quote\Model\Quote::class);
631+
/** @var Quote $quote */
632+
$quote = $this->objectManager->create(Quote::class);
628633
$quote->setStoreId(1)
629634
->setIsActive(true)
630635
->setIsMultiShipping(false)
@@ -638,7 +643,7 @@ protected function createQuote($quoteData, $customer)
638643
/**
639644
* Add products to quote
640645
*
641-
* @param \Magento\Quote\Model\Quote $quote
646+
* @param Quote $quote
642647
* @param array $itemsData
643648
* @return $this
644649
*/
@@ -661,7 +666,8 @@ protected function addProductToQuote($quote, $itemsData)
661666
* Create a quote based on given data
662667
*
663668
* @param array $quoteData
664-
* @return \Magento\Quote\Model\Quote
669+
*
670+
* @return Quote
665671
*/
666672
public function setupQuote($quoteData)
667673
{
@@ -671,16 +677,7 @@ public function setupQuote($quoteData)
671677

672678
$this->addProductToQuote($quote, $quoteData['items']);
673679
if (isset($quoteData['update_items'])) {
674-
$updater = $this->objectManager->get(Updater::class);
675-
$productRepository = $this->objectManager->get(ProductRepositoryInterface::class);
676-
foreach ($quoteData['update_items'] as $sku => $updateItem) {
677-
$product = $productRepository->get($sku);
678-
$quoteItem = $quote->getItemByProduct($product);
679-
$updater->update(
680-
$quoteItem,
681-
$updateItem
682-
);
683-
}
680+
$this->updateItems($quote, $quoteData['update_items']);
684681
}
685682
//Set shipping amount
686683
if (isset($quoteData['shipping_method'])) {
@@ -698,4 +695,33 @@ public function setupQuote($quoteData)
698695

699696
return $quote;
700697
}
698+
699+
/**
700+
* Update quote items
701+
*
702+
* @param Quote $quote
703+
* @param array $items
704+
*
705+
* @return void
706+
*/
707+
private function updateItems(Quote $quote, array $items): void
708+
{
709+
$updater = $this->objectManager->get(Updater::class);
710+
$productRepository = $this->objectManager->get(ProductRepositoryInterface::class);
711+
$filter = $this->objectManager->create(Filter::class);
712+
$filter->setField('sku')->setValue(array_keys($items));
713+
$filterGroup = $this->objectManager->create(FilterGroup::class);
714+
$filterGroup->setFilters([$filter]);
715+
$searchCriteria = $this->objectManager->create(SearchCriteriaInterface::class);
716+
$searchCriteria->setFilterGroups([$filterGroup]);
717+
$products = $productRepository->getList($searchCriteria)->getItems();
718+
/** @var ProductInterface $product */
719+
foreach ($products as $product) {
720+
$quoteItem = $quote->getItemByProduct($product);
721+
$updater->update(
722+
$quoteItem,
723+
$items[$product->getSku()]
724+
);
725+
}
726+
}
701727
}

dev/tests/integration/testsuite/Magento/Tax/_files/scenarios/including_tax_with_custom_price.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
'config_data' => [
1313
SetupUtil::CONFIG_OVERRIDES => [
1414
Config::CONFIG_XML_PATH_PRICE_INCLUDES_TAX => 1,
15-
Config::CONFIG_XML_PATH_APPLY_ON => 0
15+
Config::CONFIG_XML_PATH_APPLY_ON => 0,
1616
],
1717
SetupUtil::TAX_RATE_OVERRIDES => [
1818
SetupUtil::TAX_RATE_TX => 8.25,

0 commit comments

Comments
 (0)