Skip to content

Commit

Permalink
[REF] Consolidate code in processMembership
Browse files Browse the repository at this point in the history
Now we have test cover from #17605 and other
recents we can consolidate this code & be comfortable the test cover will pick up issues.
  • Loading branch information
eileenmcnaughton committed Jun 15, 2020
1 parent 3045e66 commit 97f49c9
Showing 1 changed file with 19 additions and 54 deletions.
73 changes: 19 additions & 54 deletions CRM/Member/Form/MembershipRenewal.php
Original file line number Diff line number Diff line change
Expand Up @@ -740,7 +740,6 @@ protected function sendReceipt($membership) {
* @param int $membershipID
* @param $pending
* @param int $contributionRecurID
* @param $membershipSource
* @param $isPayLater
*
* @return CRM_Member_BAO_Membership
Expand All @@ -749,7 +748,6 @@ protected function sendReceipt($membership) {
*/
public function processMembership($contactID, $membershipTypeID, $is_test, $changeToday, $customFieldsFormatted, $numRenewTerms, $membershipID, $pending, $contributionRecurID, $isPayLater) {
$allStatus = CRM_Member_PseudoConstant::membershipStatus();
$format = '%Y%m%d';
$membershipTypeDetails = CRM_Member_BAO_MembershipType::getMembershipTypeDetails($membershipTypeID);
$ids = [];

Expand Down Expand Up @@ -787,54 +785,27 @@ public function processMembership($contactID, $membershipTypeID, $is_test, $chan
// Check and fix the membership if it is STALE
CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew($currentMembership, $changeToday);

// Now Renew the membership
if (!$currentMembership['is_current_member']) {
// membership is not CURRENT

// CRM-7297 Membership Upsell - calculate dates based on new membership type
$dates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType($currentMembership['id'],
$changeToday,
$membershipTypeID,
$numRenewTerms
);

foreach (['start_date', 'end_date'] as $dateType) {
$currentMembership[$dateType] = $dates[$dateType] ?? NULL;
}
$currentMembership['is_test'] = $is_test;
$memParams = $currentMembership;
$memParams['membership_type_id'] = $membershipTypeID;
}
else {
// CRM-7297 Membership Upsell - calculate dates based on new membership type
$dates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType($currentMembership['id'],
$changeToday,
$membershipTypeID,
$numRenewTerms
);
$memParams = [
'membership_type_id' => $membershipTypeID,
'end_date' => $dates['end_date'] ?? NULL,
'join_date' => $currentMembership['join_date'],
'start_date' => $currentMembership['is_current_member'] ? $currentMembership['start_date'] : ($dates['start_date'] ?? NULL),
'id' => $currentMembership['id'],
'is_test' => $is_test,
// Since we are renewing, make status override false.
'is_override' => FALSE,
'modified_id' => $contactID,
];

// Now Renew the membership
if ($currentMembership['is_current_member']) {
// CURRENT Membership
$membership = new CRM_Member_DAO_Membership();
$membership->id = $currentMembership['id'];
$membership->find(TRUE);
// CRM-7297 Membership Upsell - calculate dates based on new membership type
$dates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType($membership->id,
$changeToday,
$membershipTypeID,
$numRenewTerms
);

// Insert renewed dates for CURRENT membership
$memParams = [];
$memParams['join_date'] = $membership->join_date;
$memParams['start_date'] = $membership->start_date;
$memParams['end_date'] = $dates['end_date'] ?? NULL;
$memParams['membership_type_id'] = $membershipTypeID;

//set the log start date.
$memParams['log_start_date'] = CRM_Utils_Date::customFormat($dates['log_start_date'], $format);

if (empty($membership->source)) {
$memParams['source'] = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership',
$currentMembership['id'],
'source'
);
}

if (!empty($currentMembership['id'])) {
$ids['membership'] = $currentMembership['id'];
}
Expand All @@ -847,12 +818,6 @@ public function processMembership($contactID, $membershipTypeID, $is_test, $chan
$memParams['contribution_recur_id'] = $contributionRecurID;
}

//since we are renewing,
//make status override false.
$memParams['is_override'] = FALSE;

$params['modified_id'] = $contactID;

$memParams['custom'] = $customFieldsFormatted;
// @todo stop passing $ids (membership and userId may be set by this point)
$membership = CRM_Member_BAO_Membership::create($memParams, $ids);
Expand Down

0 comments on commit 97f49c9

Please sign in to comment.