From 33dd32c832c916903f40ca696a821e00d115cf91 Mon Sep 17 00:00:00 2001 From: Edsel Date: Fri, 29 Jul 2016 21:32:59 +0530 Subject: [PATCH] CRM-19153 Fixed future payment dates for future start pledge dates ---------------------------------------- * 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 | 7 ++++++- CRM/Contribute/Form/Contribution/Confirm.php | 7 +++---- CRM/Pledge/BAO/Pledge.php | 5 ++++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution/Utils.php b/CRM/Contribute/BAO/Contribution/Utils.php index ab6453648d..de4c2e4105 100644 --- a/CRM/Contribute/BAO/Contribution/Utils.php +++ b/CRM/Contribute/BAO/Contribution/Utils.php @@ -85,7 +85,12 @@ class CRM_Contribute_BAO_Contribution_Utils { $paymentParams['contactID'] = $form->_params['contactID'] = $contactID; //fix for CRM-16317 - $form->_params['receive_date'] = date('YmdHis'); + if (empty($form->_params['receive_date'])) { + $form->_params['receive_date'] = date('YmdHis'); + } + if (!empty($form->_params['start_date'])) { + $form->_params['start_date'] = date('YmdHis'); + } $form->assign('receive_date', CRM_Utils_Date::mysqlToIso($form->_params['receive_date']) ); diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 9a43e70912..3b7a63dd9f 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -949,10 +949,9 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr $pledgeParams['frequency_day'] = 1; } $pledgeParams['create_date'] = $pledgeParams['start_date'] = $pledgeParams['scheduled_date'] = date("Ymd"); - $pledgeBlock = CRM_Pledge_BAO_PledgeBlock::getPledgeBlock($contribution->contribution_page_id); - if (CRM_Utils_Array::value('start_date', $params) || !CRM_Utils_Array::value('is_pledge_start_date_visible', $pledgeBlock)) { - $pledgeStartDate = CRM_Utils_Array::value('start_date', $params, NULL); - $pledgeParams['start_date'] = $pledgeParams['scheduled_date'] = CRM_Pledge_BAO_Pledge::getPledgeStartDate($pledgeStartDate, $pledgeBlock); + 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['status_id'] = $contribution->contribution_status_id; $pledgeParams['max_reminders'] = $form->_values['max_reminders']; diff --git a/CRM/Pledge/BAO/Pledge.php b/CRM/Pledge/BAO/Pledge.php index 6eb92d2142..24ea4a8a52 100644 --- a/CRM/Pledge/BAO/Pledge.php +++ b/CRM/Pledge/BAO/Pledge.php @@ -1205,9 +1205,12 @@ SELECT pledge.contact_id as contact_id, $startDate = (array) json_decode($pledgeBlock['pledge_start_date']); list($field, $value) = each($startDate); if (!CRM_Utils_Array::value('is_pledge_start_date_visible', $pledgeBlock)) { + if ($field == 'calendar_month') { + $value = self::getPaymentDate($value); + } return date('Ymd', strtotime($value)); } - if (!CRM_Utils_Array::value('is_pledge_start_date_editable', $pledgeBlock)) { + if (!empty($date) && !CRM_Utils_Array::value('is_pledge_start_date_editable', $pledgeBlock)) { return $date; } switch ($field) { -- 2.25.1