CRM-19153 Bug fixes for start date display & star date calculations
authorEdsel <edsel.lopez@jmaconsulting.biz>
Mon, 15 Aug 2016 07:42:02 +0000 (13:12 +0530)
committerEdsel <edsel.lopez@jmaconsulting.biz>
Tue, 25 Oct 2016 10:35:05 +0000 (16:05 +0530)
----------------------------------------
* CRM-19153: Future pledge start date causes improper future pledge payment dates
  https://issues.civicrm.org/jira/browse/CRM-19153

CRM/Contribute/BAO/Contribution/Utils.php
CRM/Contribute/Form/Contribution/Confirm.php
CRM/Pledge/BAO/Pledge.php
CRM/Pledge/BAO/PledgeBlock.php

index de4c2e410556a56be0b2837ffd281ef00d8c5909..d29ef9f9a2e2c1262d42dbe9213805cef1267263 100644 (file)
@@ -139,7 +139,7 @@ class CRM_Contribute_BAO_Contribution_Utils {
         $paymentParams['source'] = $paymentParams['contribution_source'];
       }
 
-      if ($form->_values['is_recur'] && $contribution->contribution_recur_id) {
+      if ($form->_params['is_recur'] && $contribution->contribution_recur_id) {
         $paymentParams['contributionRecurID'] = $contribution->contribution_recur_id;
       }
       if (isset($paymentParams['contribution_source'])) {
index 3b7a63dd9ff3a5ad91de979ebf6d0f29066febd1..05311f75e17aa1ef47bb21b7934e0fb092de0edc 100644 (file)
@@ -951,7 +951,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
         $pledgeParams['create_date'] = $pledgeParams['start_date'] = $pledgeParams['scheduled_date'] = date("Ymd");
         if (CRM_Utils_Array::value('start_date', $params)) {
           $pledgeParams['frequency_day'] = intval(date("d", strtotime(CRM_Utils_Array::value('start_date', $params))));
-          $pledgeParams['start_date'] = $pledgeParams['scheduled_date'] = CRM_Utils_Array::value('start_date', $params);
+          $pledgeParams['start_date'] = $pledgeParams['scheduled_date'] = date('Ymd', strtotime(CRM_Utils_Array::value('start_date', $params)));
         }
         $pledgeParams['status_id'] = $contribution->contribution_status_id;
         $pledgeParams['max_reminders'] = $form->_values['max_reminders'];
@@ -1093,7 +1093,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
     $recurParams['start_date'] = $recurParams['create_date'] = $recurParams['modified_date'] = date('YmdHis');
     if (!empty($params['receive_date'])) {
-      $recurParams['start_date'] = $params['receive_date'];
+      $recurParams['start_date'] = date('YmdHis', strtotime($params['receive_date']));
     }
     $recurParams['invoice_id'] = CRM_Utils_Array::value('invoiceID', $params);
     $recurParams['contribution_status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Pending');
@@ -1110,7 +1110,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
 
     $campaignId = CRM_Utils_Array::value('campaign_id', $params, CRM_Utils_Array::value('campaign_id', $form->_values));
     $recurParams['campaign_id'] = $campaignId;
-
     $recurring = CRM_Contribute_BAO_ContributionRecur::add($recurParams);
     if (is_a($recurring, 'CRM_Core_Error')) {
       CRM_Core_Error::displaySessionError($recurring);
index 24ea4a8a528ae32402a1969de7368080be711460..e4b989a18cc1725942280b7245790f41c790bdcc 100644 (file)
@@ -1215,7 +1215,9 @@ SELECT  pledge.contact_id              as contact_id,
     }
     switch ($field) {
       case 'contribution_date':
-        $date = date('Ymd');
+        if (empty($date)) {
+          $date = date('Ymd');
+        }
         break;
 
       case 'calendar_date':
index 357686bf42831f074c1620617dd81b260a2edf30..1419c4734173d4f263a9424900c4478811a2b12a 100644 (file)
@@ -311,7 +311,7 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock {
             case 'contribution_date':
               $form->addDate('start_date', ts('First installment payment'));
               $paymentDate = $value = date('d/m/Y');
-              list($defaults['start_date'], $defaults['start_date_time']) = CRM_Utils_Date::setDateDefaults($value);
+              list($defaults['start_date'], $defaults['start_date_time']) = CRM_Utils_Date::setDateDefaults(NULL);
               $form->assign('is_date', TRUE);
               break;