From: Ruben Rodriguez Date: Mon, 12 Mar 2018 23:47:35 +0000 (-0400) Subject: BIG HACK: Corrected frequency calculation for new members X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=1d17985a86a32929b82eae179786cb7b7ae708d3;p=civicrm-core.git BIG HACK: Corrected frequency calculation for new members --- diff --git a/CRM/Contribute/Form/ContributionBase.php b/CRM/Contribute/Form/ContributionBase.php index f9bd0a3677..cf3df15a85 100644 --- a/CRM/Contribute/Form/ContributionBase.php +++ b/CRM/Contribute/Form/ContributionBase.php @@ -1163,7 +1163,14 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->_params['is_recur'] = $this->_values['is_recur'] = 1; // check if price set is not quick config if (!empty($this->_params['priceSetId']) && !CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_params['priceSetId'], 'is_quick_config')) { - list($this->_params['frequency_interval'], $this->_params['frequency_unit']) = CRM_Price_BAO_PriceSet::getRecurDetails($this->_params['priceSetId']); + + // based on Lisa's commit 520680c63f7b886643e80c2400d9e9b6f1a1fd52 + // Extract the ids for all of the line items that have been chosen. + $priceFieldValueIds = array_keys($this->_lineItem[$this->_params['priceSetId']])[0]; + if (empty($priceFieldValueIds)) + $priceFieldValueIds = array_keys($this->_params['price_126'])[0]; + list($this->_params['frequency_interval'], $this->_params['frequency_unit']) = CRM_Price_BAO_PriceSet::getRecurDetails($this->_params['priceSetId'], $priceFieldValueIds); + //list($this->_params['frequency_interval'], $this->_params['frequency_unit']) = CRM_Price_BAO_PriceSet::getRecurDetails($this->_params['priceSetId']); } else { // FIXME: set interval and unit based on selected membership type diff --git a/CRM/Price/BAO/PriceSet.php b/CRM/Price/BAO/PriceSet.php index c4ce573223..0ae7522956 100644 --- a/CRM/Price/BAO/PriceSet.php +++ b/CRM/Price/BAO/PriceSet.php @@ -1261,13 +1261,14 @@ GROUP BY mt.member_of_contact_id "; * @return array * associate array of frequency interval and unit */ - public static function getRecurDetails($priceSetId) { + public static function getRecurDetails($priceSetId, $priceFieldValueIds) { $query = 'SELECT mt.duration_interval, mt.duration_unit FROM civicrm_price_field_value pfv INNER JOIN civicrm_membership_type mt ON pfv.membership_type_id = mt.id INNER JOIN civicrm_price_field pf ON pfv.price_field_id = pf.id - WHERE pf.price_set_id = %1 LIMIT 1'; + WHERE pf.price_set_id = %1 AND pfv.id = ' + . $priceFieldValueIds . ' LIMIT 1'; $params = [1 => [$priceSetId, 'Integer']]; $dao = CRM_Core_DAO::executeQuery($query, $params);