Skip to content

Commit cb1ab70

Browse files
committed
Merge remote-tracking branch 'origin/MC-37689' into 2.4-develop-pr119
2 parents ccf56ab + 5e8ca63 commit cb1ab70

File tree

5 files changed

+91
-5
lines changed

5 files changed

+91
-5
lines changed

app/code/Magento/Sales/Block/Adminhtml/Order/Create/Sidebar/Cart.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,10 @@ public function getItemCollection()
7171
public function getItemPrice(Product $product)
7272
{
7373
$customPrice = $this->getCartItemCustomPrice($product);
74-
$price = $customPrice ?? $product->getPriceInfo()->getPrice(FinalPrice::PRICE_CODE)->getValue();
7574

76-
return $this->convertPrice($price);
75+
return $customPrice !== null
76+
? $this->convertPrice($customPrice)
77+
: $this->priceCurrency->format($product->getPriceInfo()->getPrice(FinalPrice::PRICE_CODE)->getValue());
7778
}
7879

7980
/**

dev/tests/integration/testsuite/Magento/Sales/Block/Adminhtml/Order/Create/Sidebar/CartTest.php

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
namespace Magento\Sales\Block\Adminhtml\Order\Create\Sidebar;
99

1010
use Magento\Backend\Model\Session\Quote;
11-
use Magento\Framework\ObjectManagerInterface;
11+
use Magento\Catalog\Model\ProductRepository;
1212
use Magento\Framework\View\LayoutInterface;
13+
use Magento\Quote\Model\QuoteRepository;
1314
use Magento\TestFramework\Helper\Bootstrap;
15+
use Magento\TestFramework\ObjectManager;
1416
use PHPUnit\Framework\TestCase;
1517

1618
/**
@@ -23,7 +25,7 @@
2325
*/
2426
class CartTest extends TestCase
2527
{
26-
/** @var ObjectManagerInterface */
28+
/** @var ObjectManager */
2729
private $objectManager;
2830

2931
/** @var Cart */
@@ -32,6 +34,9 @@ class CartTest extends TestCase
3234
/** @var Quote */
3335
private $session;
3436

37+
/** @var ProductRepository */
38+
private $productRepository;
39+
3540
/**
3641
* @inheritdoc
3742
*/
@@ -42,6 +47,7 @@ protected function setUp(): void
4247
$this->objectManager = Bootstrap::getObjectManager();
4348
$this->block = $this->objectManager->get(LayoutInterface::class)->createBlock(Cart::class);
4449
$this->session = $this->objectManager->get(Quote::class);
50+
$this->productRepository = $this->objectManager->get(ProductRepository::class);
4551
}
4652

4753
/**
@@ -50,7 +56,8 @@ protected function setUp(): void
5056
protected function tearDown(): void
5157
{
5258
$this->session->clearStorage();
53-
59+
$this->objectManager->removeSharedInstance(\Magento\Sales\Model\AdminOrder\Create::class, true);
60+
$this->objectManager->removeSharedInstance(QuoteRepository::class);
5461
parent::tearDown();
5562
}
5663

@@ -77,4 +84,21 @@ public function testClearShoppingCartButton(): void
7784
$this->assertEquals(sprintf("order.clearShoppingCart('%s')", $confirmation), $button->getOnclick());
7885
$this->assertEquals(__('Clear Shopping Cart'), $button->getLabel());
7986
}
87+
88+
/**
89+
* @magentoDataFixture Magento/Directory/_files/usd_cny_rate.php
90+
* @magentoDataFixture Magento/Sales/_files/quote_with_two_products_and_customer_and_custom_price.php
91+
*
92+
* @magentoConfigFixture default/currency/options/base USD
93+
* @magentoConfigFixture current_store currency/options/default CNY
94+
* @magentoConfigFixture current_store currency/options/allow CNY,USD
95+
*/
96+
public function testGetItemPriceConvert()
97+
{
98+
$this->session->setCustomerId(1);
99+
$customPrice = $this->block->getItemPrice($this->productRepository->get('simple'));
100+
$this->assertStringContainsString('84.00', $customPrice);
101+
$price = $this->block->getItemPrice($this->productRepository->get('custom-design-simple-product'));
102+
$this->assertStringContainsString('70.00', $price);
103+
}
80104
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Catalog\Model\ProductRepository;
9+
use Magento\Quote\Model\Quote\Item\Updater;
10+
use Magento\Quote\Model\QuoteFactory;
11+
use Magento\Quote\Model\ResourceModel\Quote;
12+
use Magento\TestFramework\Helper\Bootstrap;
13+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
14+
15+
Resolver::getInstance()->requireDataFixture('Magento/Sales/_files/quote_with_two_products_and_customer.php');
16+
17+
$objectManager = Bootstrap::getObjectManager();
18+
/** @var QuoteFactory $quoteFactory */
19+
$quoteFactory = $objectManager->get(QuoteFactory::class);
20+
/** @var Quote $quoteResource */
21+
$quoteResource = $objectManager->get(Quote::class);
22+
$quote = $quoteFactory->create();
23+
$quoteResource->load($quote, 'test01', 'reserved_order_id');
24+
$productRepository = $objectManager->get(ProductRepository::class);
25+
$quoteItem = $quote->getItemByProduct($productRepository->get('simple'));
26+
/** @var Updater $updater */
27+
$updater = $objectManager->get(Updater::class);
28+
$updater->update(
29+
$quoteItem,
30+
[
31+
'qty' => 1,
32+
'custom_price' => 12,
33+
]
34+
);
35+
$quote->collectTotals();
36+
$quoteResource->save($quote);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
9+
10+
Resolver::getInstance()->requireDataFixture(
11+
'Magento/Sales/_files/quote_with_two_products_and_customer_rollback.php'
12+
);
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Catalog\Api\ProductRepositoryInterface;
9+
use Magento\Quote\Model\Quote;
10+
use Magento\TestFramework\Helper\Bootstrap;
11+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
12+
13+
Resolver::getInstance()->requireDataFixture('Magento/Checkout/_files/quote_with_address_rollback.php');

0 commit comments

Comments
 (0)