Skip to content

Commit 632267c

Browse files
authored
Merge pull request #6019 from magento-mpi/MC-36547
[mpi] MC-36547: Unexpected behavior of "FedEx" shipping method in the case of multiple currencies
2 parents 334ce01 + f1d4254 commit 632267c

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

app/code/Magento/Fedex/Model/Carrier.php

+25-18
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,29 @@ class Carrier extends AbstractCarrierOnline implements \Magento\Shipping\Model\C
161161
*/
162162
private $_rawTrackingRequest;
163163

164+
/**
165+
* ISO 4217 to Fedex currency codes matching
166+
*
167+
* @var string[]
168+
*/
169+
private $codes = [
170+
'DOP' => 'RDD',
171+
'XCD' => 'ECD',
172+
'ARS' => 'ARN',
173+
'SGD' => 'SID',
174+
'KRW' => 'WON',
175+
'JMD' => 'JAD',
176+
'CHF' => 'SFR',
177+
'JPY' => 'JYE',
178+
'KWD' => 'KUD',
179+
'GBP' => 'UKL',
180+
'AED' => 'DHS',
181+
'MXN' => 'NMP',
182+
'UYU' => 'UYP',
183+
'CLP' => 'CHP',
184+
'TWD' => 'NTD',
185+
];
186+
164187
/**
165188
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
166189
* @param \Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory
@@ -678,6 +701,7 @@ protected function _getRateAmountOriginBased($rate)
678701
*/
679702
private function getBaseCurrencyRate(string $currencyCode): float
680703
{
704+
$currencyCode = array_search($currencyCode, $this->codes) ?: $currencyCode;
681705
if (!isset($this->baseCurrencyRate[$currencyCode])) {
682706
$baseCurrencyCode = $this->_request->getBaseCurrency()->getCode();
683707
$rate = $this->_currencyFactory->create()
@@ -1033,26 +1057,9 @@ public function getCode($type, $code = '')
10331057
*/
10341058
public function getCurrencyCode()
10351059
{
1036-
$codes = [
1037-
'DOP' => 'RDD',
1038-
'XCD' => 'ECD',
1039-
'ARS' => 'ARN',
1040-
'SGD' => 'SID',
1041-
'KRW' => 'WON',
1042-
'JMD' => 'JAD',
1043-
'CHF' => 'SFR',
1044-
'JPY' => 'JYE',
1045-
'KWD' => 'KUD',
1046-
'GBP' => 'UKL',
1047-
'AED' => 'DHS',
1048-
'MXN' => 'NMP',
1049-
'UYU' => 'UYP',
1050-
'CLP' => 'CHP',
1051-
'TWD' => 'NTD',
1052-
];
10531060
$currencyCode = $this->_storeManager->getStore()->getBaseCurrencyCode();
10541061

1055-
return $codes[$currencyCode] ?? $currencyCode;
1062+
return $this->codes[$currencyCode] ?? $currencyCode;
10561063
}
10571064

10581065
/**

app/code/Magento/Fedex/Test/Unit/Model/CarrierTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ public function collectRatesDataProvider()
358358
[12.12, 'USD', 'USD', 'RATED_LIST_SHIPMENT', 12.12, 0],
359359
[38.9, 'USD', 'USD', 'PAYOR_LIST_SHIPMENT', 38.9],
360360
[38.9, 'USD', 'USD', 'PAYOR_LIST_SHIPMENT', 38.9, 0],
361+
[10.0, 'SID', 'USD', 'PAYOR_LIST_SHIPMENT', 10.0, 0],
361362
];
362363
}
363364

0 commit comments

Comments
 (0)