From d8a20b17719386f1570349aa5eea4b0ad850445b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Frank=20J=2E=20G=C3=B3mez?= Date: Mon, 28 Apr 2014 10:37:10 -0700 Subject: [PATCH] CRM-14354 - Addressed the second manifestation of the bug (when "separate membership payment" is not checked). ---------------------------------------- * CRM-14354: Additional gift breaks ARB (auto-renewing) memberships https://issues.civicrm.org/jira/browse/CRM-14354 --- CRM/Contribute/BAO/Contribution/Utils.php | 16 ++++++++++------ CRM/Contribute/Form/Contribution/Confirm.php | 9 +++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution/Utils.php b/CRM/Contribute/BAO/Contribution/Utils.php index f0d861b1c0..94f44b1729 100644 --- a/CRM/Contribute/BAO/Contribution/Utils.php +++ b/CRM/Contribute/BAO/Contribution/Utils.php @@ -215,10 +215,12 @@ class CRM_Contribute_BAO_Contribution_Utils { // (i.e., the amount NOT associated with the membership). Temporarily // cache the is_recur values so we can process the additional gift as a // one-off payment. - $cachedFormValue = CRM_Utils_Array::value('is_recur', $form->_values); - unset($form->_values['is_recur']); - $cachedParamValue = CRM_Utils_Array::value('is_recur', $paymentParams); - unset($paymentParams['is_recur']); + if ($form->_membershipBlock['is_separate_payment']) { + $cachedFormValue = CRM_Utils_Array::value('is_recur', $form->_values); + unset($form->_values['is_recur']); + $cachedParamValue = CRM_Utils_Array::value('is_recur', $paymentParams); + unset($paymentParams['is_recur']); + } $contribution = CRM_Contribute_Form_Contribution_Confirm::processContribution( $form, @@ -230,8 +232,10 @@ class CRM_Contribute_BAO_Contribution_Utils { ); // restore cached values (part of fix for CRM-14354) - $form->_values['is_recur'] = $cachedFormValue; - $paymentParams['is_recur'] = $cachedParamValue; + if ($form->_membershipBlock['is_separate_payment']) { + $form->_values['is_recur'] = $cachedFormValue; + $paymentParams['is_recur'] = $cachedParamValue; + } $paymentParams['contributionID'] = $contribution->id; $paymentParams['contributionTypeID'] = $contribution->financial_type_id; diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 2e1ab3a622..d3ad8718ca 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -1468,6 +1468,15 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $recurParams['installments'] = CRM_Utils_Array::value('installments', $params); $recurParams['financial_type_id'] = CRM_Utils_Array::value('financial_type_id', $params); + // CRM-14354: For an auto-renewing membership with an additional contribution, + // if separate payments is not enabled, make sure only the membership fee recurs + if ($form->_membershipBlock['is_separate_payment'] === '0' + && isset($params['selectMembership']) + && $form->_values['is_allow_other_amount'] == '1' + ) { + $recurParams['amount'] = $form->_membershipTypeValues[$params['selectMembership']]['minimum_fee']; + } + $recurParams['is_test'] = 0; if (($form->_action & CRM_Core_Action::PREVIEW) || (isset($form->_mode) && ($form->_mode == 'test')) -- 2.25.1