Skip to content

Commit 8c6dd03

Browse files
committed
MC-40702: Order currency is used instead of bas currency in the shipping label for form
1 parent 5e57ddd commit 8c6dd03

File tree

4 files changed

+120
-30
lines changed

4 files changed

+120
-30
lines changed

app/code/Magento/Shipping/Block/Adminhtml/Order/Packaging.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ public function getContentTypes()
380380
public function getCustomValueCurrencyCode()
381381
{
382382
$orderInfo = $this->getShipment()->getOrder();
383-
return $orderInfo->getBaseCurrency()->getCurrencyCode();
383+
return $orderInfo->getOrderCurrency()->getCurrencyCode();
384384
}
385385

386386
/**

dev/tests/integration/testsuite/Magento/Shipping/Block/Adminhtml/Order/AddToPackageTest.php

Lines changed: 60 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\Shipping\Block\Adminhtml\Order;
79

810
use Magento\Backend\Block\Template;
@@ -28,12 +30,19 @@ class AddToPackageTest extends TestCase
2830
*/
2931
private $orderRepository;
3032

31-
/** @var ObjectManagerInterface */
33+
/**
34+
* @var ObjectManagerInterface
35+
*/
3236
private $objectManager;
3337

34-
/** @var Registry */
38+
/**
39+
* @var Registry
40+
*/
3541
private $registry;
3642

43+
/**
44+
* @inheritDoc
45+
*/
3746
protected function setUp(): void
3847
{
3948
$this->objectManager = Bootstrap::getObjectManager();
@@ -42,30 +51,43 @@ protected function setUp(): void
4251
}
4352

4453
/**
45-
* Loads order entity by provided order increment ID.
54+
* Test that Packaging popup renders
4655
*
47-
* @param string $incrementId
48-
* @return OrderInterface
56+
* @magentoDataFixture Magento/Shipping/_files/shipping_with_carrier_data.php
4957
*/
50-
private function getOrderByIncrementId(string $incrementId) : OrderInterface
58+
public function testGetCommentsHtml(): void
5159
{
52-
/** @var SearchCriteria $searchCriteria */
53-
$searchCriteria = $this->objectManager->get(SearchCriteriaBuilder::class)
54-
->addFilter('increment_id', $incrementId)
55-
->create();
56-
57-
$items = $this->orderRepository->getList($searchCriteria)
58-
->getItems();
60+
$expectedNeedle = "packaging.setItemQtyCallback(function(itemId){
61+
var item = $$('[name=\"shipment[items]['+itemId+']\"]')[0],
62+
itemTitle = $('order_item_' + itemId + '_title');
63+
if (!itemTitle && !item) {
64+
return 0;
65+
}
66+
if (item && !isNaN(item.value)) {
67+
return item.value;
68+
}
69+
});";
70+
$this->assertStringContainsString($expectedNeedle, $this->getHtml());
71+
}
5972

60-
return array_pop($items);
73+
/**
74+
* Verify currency code on custom value field
75+
*
76+
* @magentoDataFixture Magento/Shipping/_files/shipping_with_carrier_data_different_currency_code.php
77+
*/
78+
public function testGetCurrencyCodeCustomValue ()
79+
{
80+
$expectedCurrencyCode = '<span class="customs-value-currency">
81+
FR </span>';
82+
$this->assertStringContainsString($expectedCurrencyCode, $this->getHtml());
6183
}
6284

6385
/**
64-
* Test that Packaging popup renders
86+
* Get html for packaging popup
6587
*
66-
* @magentoDataFixture Magento/Shipping/_files/shipping_with_carrier_data.php
88+
* @return string
6789
*/
68-
public function testGetCommentsHtml()
90+
private function getHtml()
6991
{
7092
/** @var Template $block */
7193
$block = $this->objectManager->get(Packaging::class);
@@ -78,17 +100,26 @@ public function testGetCommentsHtml()
78100
$this->registry->register('current_shipment', $shipment);
79101

80102
$block->setTemplate('Magento_Shipping::order/packaging/popup.phtml');
81-
$html = $block->toHtml();
82-
$expectedNeedle = "packaging.setItemQtyCallback(function(itemId){
83-
var item = $$('[name=\"shipment[items]['+itemId+']\"]')[0],
84-
itemTitle = $('order_item_' + itemId + '_title');
85-
if (!itemTitle && !item) {
86-
return 0;
87-
}
88-
if (item && !isNaN(item.value)) {
89-
return item.value;
90-
}
91-
});";
92-
$this->assertStringContainsString($expectedNeedle, $html);
103+
104+
return $block->toHtml();
105+
}
106+
107+
/**
108+
* Loads order entity by provided order increment ID.
109+
*
110+
* @param string $incrementId
111+
* @return OrderInterface
112+
*/
113+
private function getOrderByIncrementId(string $incrementId) : OrderInterface
114+
{
115+
/** @var SearchCriteria $searchCriteria */
116+
$searchCriteria = $this->objectManager->get(SearchCriteriaBuilder::class)
117+
->addFilter('increment_id', $incrementId)
118+
->create();
119+
120+
$items = $this->orderRepository->getList($searchCriteria)
121+
->getItems();
122+
123+
return array_pop($items);
93124
}
94125
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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\Sales\Api\Data\OrderInterfaceFactory;
10+
use Magento\Sales\Api\OrderRepositoryInterface;
11+
use Magento\Sales\Model\Order;
12+
use Magento\Sales\Model\Order\ShipmentFactory;
13+
use Magento\TestFramework\Helper\Bootstrap;
14+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
15+
use Magento\Framework\DB\Transaction;
16+
17+
Resolver::getInstance()->requireDataFixture('Magento/Sales/_files/order_with_customer.php');
18+
19+
$objectManager = Bootstrap::getObjectManager();
20+
/** @var Transaction $transaction */
21+
$transaction = $objectManager->get(Transaction::class);
22+
/** @var ProductRepositoryInterface $productRepository */
23+
$productRepository = $objectManager->create(ProductRepositoryInterface::class);
24+
$product = $productRepository->get('simple');
25+
/** @var Order $order */
26+
$order = $objectManager->get(OrderInterfaceFactory::class)->create()->loadByIncrementId('100000001');
27+
$order->setShippingDescription('UPS Next Day Air')
28+
->setShippingMethod('ups_11')
29+
->setOrderCurrencyCode('FR')
30+
->setShippingAmount(0)
31+
->setCouponCode('1234567890')
32+
->setDiscountDescription('1234567890');
33+
34+
/** @var OrderRepositoryInterface $orderRepository */
35+
$orderRepository = $objectManager->create(OrderRepositoryInterface::class);
36+
$orderRepository->save($order);
37+
38+
$shipmentItems = [];
39+
foreach ($order->getItems() as $orderItem) {
40+
$shipmentItems[$orderItem->getId()] = $orderItem->getQtyOrdered();
41+
}
42+
$tracking = [
43+
'carrier_code' => 'ups',
44+
'title' => 'United Parcel Service',
45+
'number' => '987654321'
46+
];
47+
48+
$shipment = $objectManager->get(ShipmentFactory::class)->create($order, $shipmentItems, [$tracking]);
49+
$shipment->register();
50+
$transaction->addObject($shipment)->addObject($order)->save();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
8+
9+
Resolver::getInstance()->requireDataFixture('Magento/Sales/_files/order_with_customer_rollback.php');

0 commit comments

Comments
 (0)