$isProcessSeparateMembershipTransaction, $financialTypeID, $membershipLineItems, $isPayLater, $isPending) {
$membershipContribution = NULL;
$isTest = CRM_Utils_Array::value('is_test', $membershipParams, FALSE);
- $errors = $createdMemberships = $paymentResults = array();
+ $errors = $paymentResults = array();
$form->_values['isMembership'] = TRUE;
$isRecurForFirstTransaction = CRM_Utils_Array::value('is_recur', $form->_values, CRM_Utils_Array::value('is_recur', $membershipParams));
$totalAmount = $membershipParams['amount'];
}
if ($form->_priceSetId && !empty($form->_useForMember) && !empty($form->_lineItem)) {
foreach ($form->_lineItem[$form->_priceSetId] as & $priceFieldOp) {
- if (!empty($priceFieldOp['membership_type_id']) &&
- isset($createdMemberships[$priceFieldOp['membership_type_id']])
- ) {
- $membershipOb = $createdMemberships[$priceFieldOp['membership_type_id']];
+ if (!empty($priceFieldOp['membership_type_id']) && $membership->membership_type_id == $priceFieldOp['membership_type_id']) {
+ $membershipOb = $membership;
$priceFieldOp['start_date'] = $membershipOb->start_date ? CRM_Utils_Date::customFormat($membershipOb->start_date, '%B %E%f, %Y') : '-';
$priceFieldOp['end_date'] = $membershipOb->end_date ? CRM_Utils_Date::customFormat($membershipOb->end_date, '%B %E%f, %Y') : '-';
}
// CRM-7851 - Moved after processing Payment Errors
//@todo - the reasoning for this being here seems a little outdated
- foreach ($createdMemberships as $createdMembership) {
- CRM_Core_BAO_CustomValueTable::postProcess(
- $form->_params,
- 'civicrm_membership',
- $createdMembership->id,
- 'Membership'
- );
- $form->_params['createdMembershipIDs'][] = $createdMembership->id;
- }
- if (count($createdMemberships) == 1) {
+ CRM_Core_BAO_CustomValueTable::postProcess($form->_params, 'civicrm_membership', $membership->id, 'Membership');
+ $form->_params['createdMembershipIDs'][] = $membership->id;
+
+ if ($membership) {
//presumably this is only relevant for exactly 1 membership
- $form->_params['membershipID'] = $createdMembership->id;
+ $form->_params['membershipID'] = $membership->id;
}
//CRM-15232: Check if membership is created and on the basis of it use
//membership receipt template to send payment receipt
- if (count($createdMemberships)) {
+ if ($membership) {
$form->_values['isMembership'] = TRUE;
}
if (isset($membershipContributionID)) {
public static function formRule($fields, $files, $self) {
$errors = array();
$amount = self::computeAmount($fields, $self->_values);
+ if (CRM_Utils_Array::value('auto_renew', $fields) &&
+ CRM_Utils_Array::value('payment_processor_id', $fields) == 0
+ ) {
+ $errors['auto_renew'] = ts('You cannot have auto-renewal on if you are paying later.');
+ }
if ((!empty($fields['selectMembership']) &&
$fields['selectMembership'] != 'no_thanks'
$allowAutoRenewOpt = (int) $memType['auto_renew'];
if (is_array($this->_paymentProcessors)) {
foreach ($this->_paymentProcessors as $id => $val) {
- if (!$val['is_recur']) {
+ if ($id && !$val['is_recur']) {
$allowAutoRenewOpt = 0;
continue;
}
$this->assign('autoRenewOption', $autoRenewOption);
}
- if (!$this->_values['is_pay_later'] && is_array($this->_paymentProcessors) && ($allowAutoRenewMembership || $autoRenewOption)) {
+ if ((!$this->_values['is_pay_later'] || is_array($this->_paymentProcessors)) && ($allowAutoRenewMembership || $autoRenewOption)) {
$this->addElement('checkbox', 'auto_renew', ts('Please renew my membership automatically.'));
}