From ef88f444255f18b8ec63b987b7ba201ddc484775 Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Tue, 30 Sep 2014 10:13:25 +0100 Subject: [PATCH] CRM-14868 allow currency signs in other_amount ---------------------------------------- * CRM-14868: '$' in amount_other causes error https://issues.civicrm.org/jira/browse/CRM-14868 --- CRM/Contribute/Form/Contribution/Main.php | 21 ++++++++++++--------- CRM/Utils/Rule.php | 9 +++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/CRM/Contribute/Form/Contribution/Main.php b/CRM/Contribute/Form/Contribution/Main.php index 75c1c1b1d4..be442cadb2 100644 --- a/CRM/Contribute/Form/Contribution/Main.php +++ b/CRM/Contribute/Form/Contribution/Main.php @@ -773,7 +773,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $otherAmount = $priceField->id; } elseif (!empty($fields["price_{$priceField->id}"])) { - $otherAmountVal = $fields["price_{$priceField->id}"]; + $otherAmountVal = CRM_Utils_Rule::cleanMoney($fields["price_{$priceField->id}"]); $min = CRM_Utils_Array::value('min_amount', $self->_values); $max = CRM_Utils_Array::value('max_amount', $self->_values); if ($min && $otherAmountVal < $min) { @@ -1222,7 +1222,6 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $params['amount'] = $memFee ? $memFee : 0; } } - //If the membership & contribution is used in contribution page & not separate payment $fieldId = $memPresent = $membershipLabel = $fieldOption = $is_quick_config = NULL; $proceFieldAmount = 0; @@ -1252,7 +1251,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } } } - + if (!isset($params['amount_other'])) { $this->set('amount_level', CRM_Utils_Array::value('amount_level', $params)); } @@ -1261,22 +1260,25 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $lineItem = array(); $is_quick_config = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config' ); if ( $is_quick_config ) { - foreach ( $this->_values['fee'] as $key => & $val ) { - if ( $val['name'] == 'other_amount' && $val['html_type'] == 'Text' && array_key_exists( 'price_'.$key, $params ) && $params['price_'.$key] != 0 ) { - foreach ( $val['options'] as $optionKey => & $options ) { - $options['amount'] = CRM_Utils_Array::value( 'price_'.$key, $params ); - break; + foreach ( $this->_values['fee'] as $key => & $val ) { + if ( $val['name'] == 'other_amount' && $val['html_type'] == 'Text' && array_key_exists( 'price_'.$key, $params ) ) { + $params['price_'.$key] = CRM_Utils_Rule::cleanMoney($params['price_'.$key]); //Clean out any currency symbols + if($params['price_'.$key] != 0){ + foreach ( $val['options'] as $optionKey => & $options ) { + $options['amount'] = CRM_Utils_Array::value( 'price_'.$key, $params ); + break; + } } $params['price_'.$key] = 1; break; } } } - $component = ''; if ($this->_membershipBlock) { $component = 'membership'; } + CRM_Price_BAO_PriceSet::processAmount($this->_values['fee'], $params, $lineItem[$priceSetId], $component); if ($proceFieldAmount) { @@ -1368,6 +1370,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu // redirect to thank you page CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/contribute/transact', "_qf_ThankYou_display=1&qfKey=$qfKey", TRUE, NULL, FALSE)); } + } /** diff --git a/CRM/Utils/Rule.php b/CRM/Utils/Rule.php index 4c27b896e9..4730d930a9 100644 --- a/CRM/Utils/Rule.php +++ b/CRM/Utils/Rule.php @@ -420,6 +420,15 @@ class CRM_Utils_Rule { $config = CRM_Core_Config::singleton(); + //CRM-14868 + $currencySymbols = CRM_Core_PseudoConstant::get( + 'CRM_Contribute_DAO_Contribution', + 'currency', array( + 'keyColumn' => 'name', + 'labelColumn' => 'symbol' + )); + $value = str_replace($currencySymbols,'',$value); + if ($config->monetaryThousandSeparator) { $mon_thousands_sep = $config->monetaryThousandSeparator; } -- 2.25.1