From: Andrew Hunt Date: Tue, 2 Apr 2013 19:16:47 +0000 (-0400) Subject: check number of terms when updating member payment status X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=9c09f5b790309fa7924aaf3298e214e459f958f1;p=civicrm-core.git check number of terms when updating member payment status --- diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index d6087b9c39..f14ae8ff5e 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -1681,17 +1681,26 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ // else fall back to using current membership type $dao->free(); + // Figure out number of terms + $numterms = 1; + $lineitems = CRM_Price_BAO_LineItem::getLineItems($contributionId, 'contribution'); + foreach ($lineitems as $lineitem) { + if ($membership->membership_type_id == CRM_Utils_Array::value('membership_type_id', $lineitem)) { + $numterms = CRM_Utils_Array::value('membership_num_terms', $lineitem); + + // in case membership_num_terms comes through as null or zero + $numterms = $numterms >= 1 ? $numterms : 1; + break; + } + } + if ($currentMembership) { - CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew($currentMembership, - $changeToday = NULL - ); - $dates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType($membership->id, - $changeToday = NULL - ); + CRM_Member_BAO_Membership::fixMembershipStatusBeforeRenew($currentMembership, NULL); + $dates = CRM_Member_BAO_MembershipType::getRenewalDatesForMembershipType($membership->id, NULL, NULL, $numterms); $dates['join_date'] = CRM_Utils_Date::customFormat($currentMembership['join_date'], $format); } else { - $dates = CRM_Member_BAO_MembershipType::getDatesForMembershipType($membership->membership_type_id); + $dates = CRM_Member_BAO_MembershipType::getDatesForMembershipType($membership->membership_type_id, null, null, null, $numterms); } //get the status for membership. diff --git a/CRM/Price/BAO/LineItem.php b/CRM/Price/BAO/LineItem.php index 89723470f1..2c3de75543 100644 --- a/CRM/Price/BAO/LineItem.php +++ b/CRM/Price/BAO/LineItem.php @@ -112,6 +112,7 @@ class CRM_Price_BAO_LineItem extends CRM_Price_DAO_LineItem { pf.label as field_title, pf.html_type, pfv.membership_type_id, + pfv.membership_num_terms, li.price_field_id, li.participant_count, li.price_field_value_id, @@ -158,6 +159,7 @@ class CRM_Price_BAO_LineItem extends CRM_Price_DAO_LineItem { 'description' => $dao->description, 'entity_id' => $entityId, 'membership_type_id' => $dao->membership_type_id, + 'membership_num_terms' => $dao->membership_num_terms, ); } return $lineItems;