Есть ли способ получить символ валюты в Apex или Visualforce, зная CurrencyIsoCode?

Мне нужно, чтобы отображалась полная цена продукта (значение и символ) в Visualforce Mail.

3
Rechu 15 Дек 2021 в 13:04

2 ответа

Я не знаю стандартного способа в отделе продаж сделать это. В моем собственном коде я использую эту карту

Map<String, String> currencySymbolsByIsoCode = new Map<String, String>{
        'AUD' => 'A$',
        'AWG' => 'ƒ',
        'BDT' => '৳',
        'CAD' => 'CAD$',
        'CNY' => '¥',
        'CRC' => '₡',
        'DKK' => 'kr',
        'EGP' => '£',
        'EUR' => '€',
        'FKP' => '£',
        'GBP' => '£',
        'GIP' => '£',
        'ILS' => '₪',
        'INR' => '₹',
        'ISK' => 'kr',
        'JPY' => '¥',
        'JPY' => '¥',
        'KHR' => '៛',
        'KRW' => '₩',
        'KZT' => '₸',
        'LBP' => '£',
        'NGN' => '₦',
        'NOK' => 'kr',
        'PHP' => '₱',
        'PYG' => '₲',
        'RUB' => '₽',
        'SDG' => '£',
        'SEK' => 'kr',
        'SHP' => '£',
        'SYP' => '£',
        'TRY' => '₺',
        'USD' => '$',
        '' => '¤' // The currency sign ¤ is a character used to denote an unspecified currency.
};

Чтобы получить символ на основе кода валюты. Я включил только те, у которых есть фактический символ, но вы можете создать более полную карту на основе списка в википедии https://en.wikipedia.org/wiki/Currency_symbol

4
H Alves 15 Дек 2021 в 15:34
Я тоже думал об этом... но это так грязно :(
 – 
Rechu
15 Дек 2021 в 15:45
Истинный. Вероятно, вы могли бы создать для него пользовательский объект, который вы обновляете с помощью какого-либо веб-сервиса, предоставляющего данные, вы, вероятно, можете найти банк или какую-либо компанию с такой услугой. Но это было бы много работы, если бы какая-то страна изобрела новую валюту, и вам действительно пришлось бы использовать ее в своей организации. Я выбрал дешевый и простой вариант и пока не имел жалоб.
 – 
H Alves
15 Дек 2021 в 15:53
1
Что ж, объект пользовательских метаданных мог бы решить эту проблему и был бы доступен практически везде.
 – 
sfdcfox
15 Дек 2021 в 16:47

Попробуй это

    <apex:outputText label="NRR" value="{0,number}">
    {! Opportunity.CurrencyIsoCode} &nbsp;
    <apex:param value="{! Opportunity.NRR__c}" />
    </apex:outputText>

Это дает вам символ валюты, а также значение в правильном формате.

-1
Aditya Sahu 15 Дек 2021 в 13:57
К сожалению, я хочу получить, например, $3.25, но с вашим подходом вместо этого я получил USD 3.25
 – 
Rechu
15 Дек 2021 в 14:16
тогда сделайте это.
 – 
Aditya Sahu
15 Дек 2021 в 14:21
1
Он получает валюту из локали пользователя, но вместо этого я хочу валюту из записи
 – 
Rechu
15 Дек 2021 в 14:23