From a97d770edfc4489e3cba33dd9ce6f0487bd01be2 Mon Sep 17 00:00:00 2001 From: jitendrapurohit Date: Tue, 20 Oct 2015 18:46:07 +0530 Subject: [PATCH] CRM-11084 -- Custom Membership Field not populating in membership form --- CRM/Contribute/Form/Contribution/Main.php | 41 ++++++++++++----------- js/AlternateContactSelector.js | 8 ++++- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/CRM/Contribute/Form/Contribution/Main.php b/CRM/Contribute/Form/Contribution/Main.php index 5c01b79459..edaa62f79f 100644 --- a/CRM/Contribute/Form/Contribution/Main.php +++ b/CRM/Contribute/Form/Contribution/Main.php @@ -128,25 +128,6 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->_defaults = array_merge($this->_defaults, $billingDefaults); } - //set custom field defaults set by admin if value is not set - if (!empty($this->_fields)) { - //load default campaign from page. - if (array_key_exists('contribution_campaign_id', $this->_fields)) { - $this->_defaults['contribution_campaign_id'] = CRM_Utils_Array::value('campaign_id', $this->_values); - } - - //set custom field defaults - foreach ($this->_fields as $name => $field) { - if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($name)) { - if (!isset($this->_defaults[$name])) { - CRM_Core_BAO_CustomField::setProfileDefaults($customFieldID, $name, $this->_defaults, - NULL, CRM_Profile_Form::MODE_REGISTER - ); - } - } - } - } - /* * hack to simplify credit card entry for testing * @@ -223,6 +204,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $this->_defaults["billing_state_province_id-{$this->_bltID}"] = $config->defaultContactStateProvince; } + $entityId = NULL; if ($this->_priceSetId) { if (($this->_useForMember && !empty($this->_currentMemberships)) || $this->_defaultMemTypeId) { $selectedCurrentMemTypes = array(); @@ -256,12 +238,33 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } } } + $memtypeID = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceFieldValue', $this->_defaults[$priceFieldName] , 'membership_type_id'); + $entityId = CRM_Utils_Array::value('id', CRM_Member_BAO_Membership::getContactMembership($contactID, $memtypeID, NULL)); } else { CRM_Price_BAO_PriceSet::setDefaultPriceSet($this, $this->_defaults); } } + //set custom field defaults set by admin if value is not set + if (!empty($this->_fields)) { + //load default campaign from page. + if (array_key_exists('contribution_campaign_id', $this->_fields)) { + $this->_defaults['contribution_campaign_id'] = CRM_Utils_Array::value('campaign_id', $this->_values); + } + + //set custom field defaults + foreach ($this->_fields as $name => $field) { + if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($name)) { + if (!isset($this->_defaults[$name])) { + CRM_Core_BAO_CustomField::setProfileDefaults($customFieldID, $name, $this->_defaults, + $entityId, CRM_Profile_Form::MODE_REGISTER + ); + } + } + } + } + if (!empty($this->_paymentProcessors)) { foreach ($this->_paymentProcessors as $pid => $value) { if (!empty($value['is_default'])) { diff --git a/js/AlternateContactSelector.js b/js/AlternateContactSelector.js index 31fc0f8421..6098b24291 100644 --- a/js/AlternateContactSelector.js +++ b/js/AlternateContactSelector.js @@ -8,7 +8,13 @@ CRM.$(function($) { .done(function (result) { $.each(result.values, function (id, value) { $.each(value, function (fieldname, fieldvalue) { - $('#' + fieldname).val(fieldvalue); + $('#' + fieldname).val(fieldvalue).change(); + $("[name=" + fieldname + "]").val([fieldvalue]); + if ($.isArray(fieldvalue)) { + $.each(fieldvalue, function (index, val) { + $("#" + fieldname + "_" + val).prop('checked', true); + }); + } }); }); } -- 2.25.1