[REF] Consolidate code in processMembership
authoreileen <emcnaughton@wikimedia.org>
Tue, 2 Jun 2020 08:53:40 +0000 (20:53 +1200)
committereileen <emcnaughton@wikimedia.org>
Mon, 15 Jun 2020 21:52:47 +0000 (09:52 +1200)
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

index 1fc01661f0d63de84553d8b8ca2d6fb5723b35a6..17b3dfc6f66a6867fd13ceefa536fb2e67fa8a2c 100644 (file)
@@ -740,7 +740,6 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
    * @param int $membershipID
    * @param $pending
    * @param int $contributionRecurID
-   * @param $membershipSource
    * @param $isPayLater
    *
    * @return CRM_Member_BAO_Membership
@@ -749,7 +748,6 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
    */
   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 = [];
 
@@ -787,54 +785,30 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
     // 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
-      );
+    $isMembershipCurrent = $currentMembership['is_current_member'];
 
-      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' => $isMembershipCurrent ? $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,
+      'log_start_date' => $dates['log_start_date'],
+    ];
 
+    // Now Renew the membership
+    if ($isMembershipCurrent) {
       // 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'];
       }
@@ -847,12 +821,6 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
       $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);