Merge pull request #8062 from jitendrapurohit/CRM-18312
authorMonish Deb <monish.deb@webaccessglobal.com>
Fri, 1 Apr 2016 12:41:17 +0000 (18:11 +0530)
committerMonish Deb <monish.deb@webaccessglobal.com>
Fri, 1 Apr 2016 12:41:17 +0000 (18:11 +0530)
CRM-18312: Contribution Details Report Soft Credits, Soft Credit for …

CRM/Contribute/Form/Contribution/Confirm.php
CRM/Contribute/Form/Contribution/Main.php
CRM/Contribute/Form/ContributionBase.php

index 7024d9645cd1c3208e54dacca77431f290bc7c35..6450cf416ec6a0a93f33df5a4d863243927b9790 100644 (file)
@@ -1404,7 +1404,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $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'];
@@ -1515,10 +1515,8 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       }
       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') : '-';
           }
@@ -1539,23 +1537,17 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
     // 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)) {
index 80543409ccf1be3bc3591cbb2e093d2b85cd6351..abd7bce7ad37aafb15f00aa34bb01a9d7a5e4a0f 100644 (file)
@@ -600,6 +600,11 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu
   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'
index 0419da7da3cd5dfcd134a00665d9d1f9142a234c..4bd055855908d8d794d4ded5009c2aa57ceb9bb2 100644 (file)
@@ -1108,7 +1108,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
             $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;
                 }
@@ -1199,7 +1199,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form {
           $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.'));
         }