From 8454b618516e940272f8cd30529f3742038f16ed Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Fri, 9 Jan 2015 00:49:36 +1300 Subject: [PATCH] CRM-15798 still refactoring variable names & adding comments --- CRM/Member/BAO/MembershipType.php | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/CRM/Member/BAO/MembershipType.php b/CRM/Member/BAO/MembershipType.php index 1bdb21458c..06b2ff425e 100644 --- a/CRM/Member/BAO/MembershipType.php +++ b/CRM/Member/BAO/MembershipType.php @@ -443,44 +443,42 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { * @param int $numRenewTerms * @param array $membershipTypeDetails * @param int $year - * @param $fixedStartDate + * @param $actualStartDate * @return bool is this in the window where the membership gets an extra part-period added */ - protected static function isDuringFixedAnnualRolloverPeriod($startDate, $numRenewTerms, $membershipTypeDetails, $year, $fixedStartDate) { + protected static function isDuringFixedAnnualRolloverPeriod($startDate, $numRenewTerms, $membershipTypeDetails, $year, $actualStartDate) { $rolloverMonth = substr($membershipTypeDetails['fixed_period_rollover_day'], 0, strlen($membershipTypeDetails['fixed_period_rollover_day']) - 2 ); $rolloverDay = substr($membershipTypeDetails['fixed_period_rollover_day'], -2); - $actualRolloverDate = date('Y-m-d', mktime(0, 0, 0, $rolloverMonth, $rolloverDay, $year)); + $calculatedRolloverDate = date('Y-m-d', mktime(0, 0, 0, $rolloverMonth, $rolloverDay, $year)); //CRM-7825 -membership date rules are : //1. Membership should not be start in future. //2. rollover window should be subset of membership window. - //store original fixed start date as per current year. - $actualStartDate = $fixedStartDate; - //get the fixed end date here. $dateParts = explode('-', $actualStartDate); - $fixedEndDate = date('Y-m-d', mktime(0, 0, 0, + $endDateOfFirstYearMembershipPeriod = date('Y-m-d', mktime(0, 0, 0, $dateParts[1], $dateParts[2] - 1, $dateParts[0] + ($numRenewTerms * $membershipTypeDetails['duration_interval']) )); - //make sure rollover window should be - //subset of membership period window. - if ($fixedEndDate < $actualRolloverDate) { - $actualRolloverDate = date('Y-m-d', mktime(0, 0, 0, $rolloverMonth, $rolloverDay, $year - 1)); + //we know the month and day of the rollover date but not the year (we're just + //using the start date year at the moment. So if it's after the end + // of the first year of membership then it's the next period & we'll adjust back a year. If it's + // before the start_date then it's too early & we'll adjust forward. + if ($endDateOfFirstYearMembershipPeriod < $calculatedRolloverDate) { + $calculatedRolloverDate = date('Y-m-d', mktime(0, 0, 0, $rolloverMonth, $rolloverDay, $year - 1)); } - if ($actualRolloverDate < $actualStartDate) { - $actualRolloverDate = date('Y-m-d', mktime(0, 0, 0, $rolloverMonth, $rolloverDay, $year + 1)); + if ($calculatedRolloverDate < $actualStartDate) { + $calculatedRolloverDate = date('Y-m-d', mktime(0, 0, 0, $rolloverMonth, $rolloverDay, $year + 1)); } - //do check signup is in rollover window. - if ($actualRolloverDate <= $startDate) { + if ($calculatedRolloverDate <= $startDate) { return TRUE; } return FALSE; -- 2.25.1