From 5ae9693337e210a754cd5500f9bb22f5cbd73b54 Mon Sep 17 00:00:00 2001 From: Dave Greenberg Date: Mon, 18 Nov 2013 18:28:16 -0800 Subject: [PATCH] CRM-13876 - Fixed membership end date calculation should use start date, not join date. ---------------------------------------- * CRM-13876: http://issues.civicrm.org/jira/browse/CRM-13876 --- CRM/Member/BAO/MembershipType.php | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/CRM/Member/BAO/MembershipType.php b/CRM/Member/BAO/MembershipType.php index dc3b21f16e..e6e25b40ef 100644 --- a/CRM/Member/BAO/MembershipType.php +++ b/CRM/Member/BAO/MembershipType.php @@ -301,13 +301,9 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { $actualStartDate = $startDate; } elseif (CRM_Utils_Array::value('period_type', $membershipTypeDetails) == 'fixed') { - //calculate start date - - // today is always join date, in case of Online join date - // is equal to current system date - $toDay = explode('-', $joinDate); - - // get year from join date + // calculate start date + // if !$startDate then use $joinDate + $toDay = explode('-', (empty($startDate) ? $joinDate : $startDate)); $year = $toDay[0]; $month = $toDay[1]; @@ -340,8 +336,10 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { $actualRolloverDate = $fixedRolloverDate; //make sure membership should not start in future. - if ($joinDate < $actualStartDate) { - $actualStartDate = date('Y-m-d', mktime(0, 0, 0, $startMonth, $startDay, $year - 1)); + if (!empty($startDate)) { + if ($startDate < $actualStartDate) { + $actualStartDate = date('Y-m-d', mktime(0, 0, 0, $startMonth, $startDay, $year - 1)); + } } //get the fixed end date here. -- 2.25.1