CRM-18299: Auto-Renew chkbox does not display if Pay Later is selected in configuration
authoryashodha <yashodha.chaku@webaccessglobal.com>
Fri, 1 Apr 2016 08:34:38 +0000 (14:04 +0530)
committeryashodha <yashodha.chaku@webaccessglobal.com>
Fri, 1 Apr 2016 08:34:38 +0000 (14:04 +0530)
----------------------------------------
* CRM-18299: Auto-Renew chkbox does not display if Pay Later is selected in configuration
  https://issues.civicrm.org/jira/browse/CRM-18299

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

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.'));
         }