Skip to content

Commit 067ed33

Browse files
committed
Merge remote-tracking branch 'origin/MC-34734' into 2.4-develop-pr29
2 parents b25c808 + 8510ea7 commit 067ed33

File tree

2 files changed

+44
-19
lines changed

2 files changed

+44
-19
lines changed

app/code/Magento/Quote/Model/Quote/Address.php

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,13 @@ public function collectShippingRates()
10191019
*/
10201020
public function requestShippingRates(AbstractItem $item = null)
10211021
{
1022+
$storeId = $this->getQuote()->getStoreId() ?: $this->storeManager->getStore()->getId();
1023+
$taxInclude = $this->_scopeConfig->getValue(
1024+
'tax/calculation/price_includes_tax',
1025+
ScopeInterface::SCOPE_STORE,
1026+
$storeId
1027+
);
1028+
10221029
/** @var $request RateRequest */
10231030
$request = $this->_rateRequestFactory->create();
10241031
$request->setAllItems($item ? [$item] : $this->getAllItems());
@@ -1028,31 +1035,30 @@ public function requestShippingRates(AbstractItem $item = null)
10281035
$request->setDestStreet($this->getStreetFull());
10291036
$request->setDestCity($this->getCity());
10301037
$request->setDestPostcode($this->getPostcode());
1031-
$request->setPackageValue($item ? $item->getBaseRowTotal() : $this->getBaseSubtotal());
1038+
$baseSubtotal = $taxInclude ? $this->getBaseSubtotalTotalInclTax() : $this->getBaseSubtotal();
1039+
$request->setPackageValue($item ? $item->getBaseRowTotal() : $baseSubtotal);
1040+
$baseSubtotalWithDiscount = $baseSubtotal + $this->getBaseDiscountAmount();
10321041
$packageWithDiscount = $item ? $item->getBaseRowTotal() -
1033-
$item->getBaseDiscountAmount() : $this->getBaseSubtotalWithDiscount();
1042+
$item->getBaseDiscountAmount() : $baseSubtotalWithDiscount;
10341043
$request->setPackageValueWithDiscount($packageWithDiscount);
10351044
$request->setPackageWeight($item ? $item->getRowWeight() : $this->getWeight());
10361045
$request->setPackageQty($item ? $item->getQty() : $this->getItemQty());
10371046

10381047
/**
10391048
* Need for shipping methods that use insurance based on price of physical products
10401049
*/
1041-
$packagePhysicalValue = $item ? $item->getBaseRowTotal() : $this->getBaseSubtotal() -
1042-
$this->getBaseVirtualAmount();
1050+
$packagePhysicalValue = $item ? $item->getBaseRowTotal() : $baseSubtotal - $this->getBaseVirtualAmount();
10431051
$request->setPackagePhysicalValue($packagePhysicalValue);
10441052

10451053
$request->setFreeMethodWeight($item ? 0 : $this->getFreeMethodWeight());
10461054

10471055
/**
10481056
* Store and website identifiers specified from StoreManager
10491057
*/
1058+
$request->setStoreId($storeId);
10501059
if ($this->getQuote()->getStoreId()) {
1051-
$storeId = $this->getQuote()->getStoreId();
1052-
$request->setStoreId($storeId);
10531060
$request->setWebsiteId($this->storeManager->getStore($storeId)->getWebsiteId());
10541061
} else {
1055-
$request->setStoreId($this->storeManager->getStore()->getId());
10561062
$request->setWebsiteId($this->storeManager->getWebsite()->getId());
10571063
}
10581064
$request->setFreeShipping($this->getFreeShipping());

app/code/Magento/Quote/Test/Unit/Model/Quote/AddressTest.php

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -352,10 +352,40 @@ public function testRequestShippingRates()
352352

353353
$currentCurrencyCode = 'UAH';
354354

355+
$this->quote->expects($this->any())
356+
->method('getStoreId')
357+
->willReturn($storeId);
358+
359+
$this->storeManager->expects($this->at(0))
360+
->method('getStore')
361+
->with($storeId)
362+
->willReturn($this->store);
363+
$this->store->expects($this->any())
364+
->method('getWebsiteId')
365+
->willReturn($webSiteId);
366+
367+
$this->scopeConfig->expects($this->exactly(1))
368+
->method('getValue')
369+
->with(
370+
'tax/calculation/price_includes_tax',
371+
ScopeInterface::SCOPE_STORE,
372+
$storeId
373+
)
374+
->willReturn(1);
375+
355376
/** @var RateRequest */
356377
$request = $this->getMockBuilder(RateRequest::class)
357378
->disableOriginalConstructor()
358-
->setMethods(['setStoreId', 'setWebsiteId', 'setBaseCurrency', 'setPackageCurrency'])
379+
->setMethods(
380+
[
381+
'setStoreId',
382+
'setWebsiteId',
383+
'setBaseCurrency',
384+
'setPackageCurrency',
385+
'getBaseSubtotalTotalInclTax',
386+
'getBaseSubtotal'
387+
]
388+
)
359389
->getMock();
360390

361391
/** @var Collection */
@@ -434,13 +464,6 @@ public function testRequestShippingRates()
434464
$this->storeManager->method('getStore')
435465
->willReturn($this->store);
436466

437-
$this->storeManager->expects($this->once())
438-
->method('getWebsite')
439-
->willReturn($this->website);
440-
441-
$this->store->method('getId')
442-
->willReturn($storeId);
443-
444467
$this->store->method('getBaseCurrency')
445468
->willReturn($baseCurrency);
446469

@@ -452,10 +475,6 @@ public function testRequestShippingRates()
452475
->method('getCurrentCurrencyCode')
453476
->willReturn($currentCurrencyCode);
454477

455-
$this->website->expects($this->once())
456-
->method('getId')
457-
->willReturn($webSiteId);
458-
459478
$this->addressRateFactory->expects($this->once())
460479
->method('create')
461480
->willReturn($rate);

0 commit comments

Comments
 (0)