From bbbe407b3909245d39b9e4eda725b88440f11ad4 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Sat, 28 Aug 2021 19:33:58 +1200 Subject: [PATCH] [REF] Remove duplicate IF Earlier in the function there was already a RETURN if so this IF is always true --- CRM/Contribute/BAO/Contribution.php | 274 ++++++++++++++-------------- 1 file changed, 136 insertions(+), 138 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index f07c72d3da..1b38d1c6b9 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -2139,169 +2139,167 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ 'status_id' ); } - if ($contributionStatus === 'Completed') { - // only pending contribution related object processed. - if (!in_array($previousStatus, ['Pending', 'Partially paid'])) { - // this is case when we already processed contribution object. - return; - } + // only pending contribution related object processed. + if (!in_array($previousStatus, ['Pending', 'Partially paid'])) { + // this is case when we already processed contribution object. + return; + } - if (is_array($memberships)) { - foreach ($memberships as $membership) { - if ($membership) { - $format = '%Y%m%d'; + if (is_array($memberships)) { + foreach ($memberships as $membership) { + if ($membership) { + $format = '%Y%m%d'; - //CRM-4523 - $currentMembership = CRM_Member_BAO_Membership::getContactMembership($membership->contact_id, - $membership->membership_type_id, - $membership->is_test, $membership->id - ); - - // CRM-8141 update the membership type with the value recorded in log when membership created/renewed - // this picks up membership type changes during renewals - $sql = " - SELECT membership_type_id - FROM civicrm_membership_log - WHERE membership_id=$membership->id - ORDER BY id DESC - LIMIT 1;"; - $dao = CRM_Core_DAO::executeQuery($sql); - if ($dao->fetch()) { - if (!empty($dao->membership_type_id)) { - $membership->membership_type_id = $dao->membership_type_id; - $membership->save(); - } - } - // else fall back to using current membership type - // Figure out number of terms - $numterms = 1; - $lineitems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($contributionId); - foreach ($lineitems as $lineitem) { - if ($membership->membership_type_id == ($lineitem['membership_type_id'] ?? NULL)) { - $numterms = $lineitem['membership_num_terms'] ?? NULL; - - // in case membership_num_terms comes through as null or zero - $numterms = $numterms >= 1 ? $numterms : 1; - break; - } - } + //CRM-4523 + $currentMembership = CRM_Member_BAO_Membership::getContactMembership($membership->contact_id, + $membership->membership_type_id, + $membership->is_test, $membership->id + ); - // CRM-15735-to update the membership status as per the contribution receive date - $joinDate = NULL; - $oldStatus = $membership->status_id; - if (!empty($params['receive_date'])) { - $joinDate = $params['receive_date']; - $status = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($membership->start_date, - $membership->end_date, - $membership->join_date, - $params['receive_date'], - FALSE, - $membership->membership_type_id, - (array) $membership - ); - $membership->status_id = CRM_Utils_Array::value('id', $status, $membership->status_id); + // CRM-8141 update the membership type with the value recorded in log when membership created/renewed + // this picks up membership type changes during renewals + $sql = " + SELECT membership_type_id + FROM civicrm_membership_log + WHERE membership_id=$membership->id + ORDER BY id DESC + LIMIT 1;"; + $dao = CRM_Core_DAO::executeQuery($sql); + if ($dao->fetch()) { + if (!empty($dao->membership_type_id)) { + $membership->membership_type_id = $dao->membership_type_id; $membership->save(); } - - if ($currentMembership) { - 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, $joinDate, NULL, NULL, $numterms); + } + // else fall back to using current membership type + // Figure out number of terms + $numterms = 1; + $lineitems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($contributionId); + foreach ($lineitems as $lineitem) { + if ($membership->membership_type_id == ($lineitem['membership_type_id'] ?? NULL)) { + $numterms = $lineitem['membership_num_terms'] ?? NULL; + + // in case membership_num_terms comes through as null or zero + $numterms = $numterms >= 1 ? $numterms : 1; + break; } + } - //get the status for membership. - $calcStatus = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dates['start_date'], - $dates['end_date'], - $dates['join_date'], - 'now', - TRUE, + // CRM-15735-to update the membership status as per the contribution receive date + $joinDate = NULL; + $oldStatus = $membership->status_id; + if (!empty($params['receive_date'])) { + $joinDate = $params['receive_date']; + $status = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($membership->start_date, + $membership->end_date, + $membership->join_date, + $params['receive_date'], + FALSE, $membership->membership_type_id, (array) $membership ); + $membership->status_id = CRM_Utils_Array::value('id', $status, $membership->status_id); + $membership->save(); + } + + if ($currentMembership) { + 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, $joinDate, NULL, NULL, $numterms); + } - $formattedParams = [ - 'status_id' => CRM_Utils_Array::value('id', $calcStatus, - array_search('Current', $membershipStatuses) - ), - 'join_date' => CRM_Utils_Date::customFormat($dates['join_date'], $format), - 'start_date' => CRM_Utils_Date::customFormat($dates['start_date'], $format), - 'end_date' => CRM_Utils_Date::customFormat($dates['end_date'], $format), - ]; + //get the status for membership. + $calcStatus = CRM_Member_BAO_MembershipStatus::getMembershipStatusByDate($dates['start_date'], + $dates['end_date'], + $dates['join_date'], + 'now', + TRUE, + $membership->membership_type_id, + (array) $membership + ); - CRM_Utils_Hook::pre('edit', 'Membership', $membership->id, $formattedParams); + $formattedParams = [ + 'status_id' => CRM_Utils_Array::value('id', $calcStatus, + array_search('Current', $membershipStatuses) + ), + 'join_date' => CRM_Utils_Date::customFormat($dates['join_date'], $format), + 'start_date' => CRM_Utils_Date::customFormat($dates['start_date'], $format), + 'end_date' => CRM_Utils_Date::customFormat($dates['end_date'], $format), + ]; - $membership->copyValues($formattedParams); - $membership->save(); + CRM_Utils_Hook::pre('edit', 'Membership', $membership->id, $formattedParams); - //updating the membership log - $membershipLog = $formattedParams; - $logStartDate = CRM_Utils_Date::customFormat($dates['log_start_date'] ?? NULL, $format); - $logStartDate = ($logStartDate) ? CRM_Utils_Date::isoToMysql($logStartDate) : $formattedParams['start_date']; - - $membershipLog['start_date'] = $logStartDate; - $membershipLog['membership_id'] = $membership->id; - $membershipLog['modified_id'] = $membership->contact_id; - $membershipLog['modified_date'] = date('Ymd'); - $membershipLog['membership_type_id'] = $membership->membership_type_id; - - CRM_Member_BAO_MembershipLog::add($membershipLog); - - //update related Memberships. - CRM_Member_BAO_Membership::updateRelatedMemberships($membership->id, $formattedParams); - - foreach (['Membership Signup', 'Membership Renewal'] as $activityType) { - $scheduledActivityID = CRM_Utils_Array::value('id', - civicrm_api3('Activity', 'Get', - [ - 'source_record_id' => $membership->id, - 'activity_type_id' => $activityType, - 'status_id' => 'Scheduled', - 'options' => [ - 'limit' => 1, - 'sort' => 'id DESC', - ], - ] - ) - ); - // 1. Update Schedule Membership Signup/Renewal activity to completed on successful payment of pending membership - // 2. OR Create renewal activity scheduled if its membership renewal will be paid later - if ($scheduledActivityID) { - CRM_Activity_BAO_Activity::addActivity($membership, $activityType, $membership->contact_id, ['id' => $scheduledActivityID]); - break; - } - } + $membership->copyValues($formattedParams); + $membership->save(); + + //updating the membership log + $membershipLog = $formattedParams; + $logStartDate = CRM_Utils_Date::customFormat($dates['log_start_date'] ?? NULL, $format); + $logStartDate = ($logStartDate) ? CRM_Utils_Date::isoToMysql($logStartDate) : $formattedParams['start_date']; + + $membershipLog['start_date'] = $logStartDate; + $membershipLog['membership_id'] = $membership->id; + $membershipLog['modified_id'] = $membership->contact_id; + $membershipLog['modified_date'] = date('Ymd'); + $membershipLog['membership_type_id'] = $membership->membership_type_id; + + CRM_Member_BAO_MembershipLog::add($membershipLog); + + //update related Memberships. + CRM_Member_BAO_Membership::updateRelatedMemberships($membership->id, $formattedParams); - // track membership status change if any - if (!empty($oldStatus) && $membership->status_id != $oldStatus) { - $allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'get'); - CRM_Activity_BAO_Activity::addActivity($membership, - 'Change Membership Status', - NULL, + foreach (['Membership Signup', 'Membership Renewal'] as $activityType) { + $scheduledActivityID = CRM_Utils_Array::value('id', + civicrm_api3('Activity', 'Get', [ - 'subject' => "Status changed from {$allStatus[$oldStatus]} to {$allStatus[$membership->status_id]}", - 'source_contact_id' => $membershipLog['modified_id'], - 'priority_id' => 'Normal', + 'source_record_id' => $membership->id, + 'activity_type_id' => $activityType, + 'status_id' => 'Scheduled', + 'options' => [ + 'limit' => 1, + 'sort' => 'id DESC', + ], ] - ); + ) + ); + // 1. Update Schedule Membership Signup/Renewal activity to completed on successful payment of pending membership + // 2. OR Create renewal activity scheduled if its membership renewal will be paid later + if ($scheduledActivityID) { + CRM_Activity_BAO_Activity::addActivity($membership, $activityType, $membership->contact_id, ['id' => $scheduledActivityID]); + break; } + } - CRM_Utils_Hook::post('edit', 'Membership', $membership->id, $membership); + // track membership status change if any + if (!empty($oldStatus) && $membership->status_id != $oldStatus) { + $allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'get'); + CRM_Activity_BAO_Activity::addActivity($membership, + 'Change Membership Status', + NULL, + [ + 'subject' => "Status changed from {$allStatus[$oldStatus]} to {$allStatus[$membership->status_id]}", + 'source_contact_id' => $membershipLog['modified_id'], + 'priority_id' => 'Normal', + ] + ); } + + CRM_Utils_Hook::post('edit', 'Membership', $membership->id, $membership); } } + } - if ($participant) { - $updatedStatusId = array_search('Registered', $participantStatuses); - CRM_Event_BAO_Participant::updateParticipantStatus($participant->id, $oldStatus, $updatedStatusId, TRUE); - } + if ($participant) { + $updatedStatusId = array_search('Registered', $participantStatuses); + CRM_Event_BAO_Participant::updateParticipantStatus($participant->id, $oldStatus, $updatedStatusId, TRUE); + } - if ($pledgePayment) { - CRM_Pledge_BAO_PledgePayment::updatePledgePaymentStatus($pledgeID, $pledgePaymentIDs, $contributionStatusId); - } + if ($pledgePayment) { + CRM_Pledge_BAO_PledgePayment::updatePledgePaymentStatus($pledgeID, $pledgePaymentIDs, $contributionStatusId); } } -- 2.25.1