From 146da527e23d6e3e6a2f226feae3140b00aff80b Mon Sep 17 00:00:00 2001 From: jitendrapurohit Date: Thu, 1 Dec 2016 13:04:12 +0530 Subject: [PATCH] CRM-19701: Amount not formatted with currency without symbols --- CRM/Utils/Money.php | 6 ++- tests/phpunit/CRM/Utils/MoneyTest.php | 60 +++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 tests/phpunit/CRM/Utils/MoneyTest.php diff --git a/CRM/Utils/Money.php b/CRM/Utils/Money.php index a1a638b9e432..ea1d996eb793 100644 --- a/CRM/Utils/Money.php +++ b/CRM/Utils/Money.php @@ -86,10 +86,12 @@ public static function format($amount, $currency = NULL, $format = NULL, $onlyNu } if (!self::$_currencySymbols) { - self::$_currencySymbols = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'currency', array( + //CRM-19701: Filter out currencies which do not have symbol. + self::$_currencySymbols = array_filter(CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'currency', array( 'keyColumn' => 'name', 'labelColumn' => 'symbol', - )); + )) + ); } if (!$currency) { diff --git a/tests/phpunit/CRM/Utils/MoneyTest.php b/tests/phpunit/CRM/Utils/MoneyTest.php new file mode 100644 index 000000000000..e91d060e62e7 --- /dev/null +++ b/tests/phpunit/CRM/Utils/MoneyTest.php @@ -0,0 +1,60 @@ +assertEquals('$ 1,000.00', $formattedAmount); + + $formattedAmount = CRM_Utils_Money::format(1000, 'USD', '%a'); + $this->assertEquals('1,000.00', $formattedAmount); + + $formattedAmount = CRM_Utils_Money::format(1000, 'USD', '%C %a'); + $this->assertEquals('USD 1,000.00', $formattedAmount); + + $formattedAmount = CRM_Utils_Money::format(1000, 'USD', '%C %a', TRUE); + $this->assertEquals('1000.00', $formattedAmount); + + $formattedAmount = CRM_Utils_Money::format(1000, 'CHE'); + $this->assertEquals('CHE 1,000.00', $formattedAmount); + + $formattedAmount = CRM_Utils_Money::format(1000, 'CHE', '%c %a'); + $this->assertEquals('CHE 1,000.00', $formattedAmount); + + $formattedAmount = CRM_Utils_Money::format(1000, 'CHE', '%c %a', TRUE); + $this->assertEquals('1000.00', $formattedAmount); + } + +}