From f0785434145d3d32a64105f09cfb51366a44f4d9 Mon Sep 17 00:00:00 2001 From: eileen Date: Sun, 14 Jun 2020 17:54:24 +1200 Subject: [PATCH] [REF] Consolidate code in processMembership Now we have test cover from https://github.com/civicrm/civicrm-core/pull/17605 and other recents we can consolidate this code & be comfortable the test cover will pick up issues. --- CRM/Member/Form/MembershipRenewal.php | 68 +++++++-------------------- 1 file changed, 18 insertions(+), 50 deletions(-) diff --git a/CRM/Member/Form/MembershipRenewal.php b/CRM/Member/Form/MembershipRenewal.php index d03ee962ea20..8a007433ece4 100644 --- a/CRM/Member/Form/MembershipRenewal.php +++ b/CRM/Member/Form/MembershipRenewal.php @@ -748,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 = []; @@ -786,54 +785,29 @@ public function processMembership($contactID, $membershipTypeID, $is_test, $chan // Check and fix the membership if it is STALE CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew($currentMembership, $changeToday); + // 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, + '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']) { - // 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; + // New start date. + $currentMembership['start_date'] = $dates['start_date'] ?? NULL; } else { - // 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']; } @@ -846,12 +820,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);