From 15724d0a9c1781f4570f19a831c129468b15e148 Mon Sep 17 00:00:00 2001 From: Dave Jenkins Date: Tue, 15 Dec 2015 14:27:48 +0000 Subject: [PATCH] CRM-17702 - Fix validation for multiple membership types when using price sets on back-end membership creation: (1) get the check for multiple membership types working - it got broken between 4.6.10 & 4.7; (2) fix bug where value of quantity field is treated as price_field_value.id . --- CRM/Member/Form/Membership.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/CRM/Member/Form/Membership.php b/CRM/Member/Form/Membership.php index dc43808739..25e097f88f 100644 --- a/CRM/Member/Form/Membership.php +++ b/CRM/Member/Form/Membership.php @@ -144,10 +144,9 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * @return array */ public static function getPriceFieldIDs($params, $priceSet) { - $priceFieldIDS = $fieldIds = array(); + $priceFieldIDS = array(); if (isset($priceSet['fields']) && is_array($priceSet['fields'])) { - $fieldIds = array_keys($priceSet['fields']); - foreach ($fieldIds as $fieldId) { + foreach ($priceSet['fields'] as $fieldId => $field) { if (!empty($params['price_' . $fieldId])) { if (is_array($params['price_' . $fieldId])) { foreach ($params['price_' . $fieldId] as $priceFldVal => $isSet) { @@ -156,7 +155,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { } } } - else { + elseif (!$field['is_enter_qty']) { $priceFieldIDS[] = $params['price_' . $fieldId]; } } @@ -748,7 +747,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { if (!empty($params['price_set_id'])) { CRM_Price_BAO_PriceField::priceSetValidation($priceSetId, $params, $errors); - $priceFieldIDS = self::getPriceFieldIDs($params, $priceSetDetails); + $priceFieldIDS = self::getPriceFieldIDs($params, $priceSetDetails[$priceSetId]); if (!empty($priceFieldIDS)) { $ids = implode(',', $priceFieldIDS); -- 2.25.1