From 57e6913a270acd5e39b13278841e63394bfd1f96 Mon Sep 17 00:00:00 2001 From: Stan Dragnev Date: Tue, 21 Mar 2017 14:29:34 -0400 Subject: [PATCH] CRM-20311 - Membership cancelation via contribution doesn't create membership status change activity Proposed fix adds the activity bit of code to the deprecated function in CRM_Contribute_BAO_Contribution. Long term fix will probably depend on what happens with this function in the future. --- CRM/Contribute/BAO/Contribution.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index cda0ca55b0..ef9d2f761d 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -1722,8 +1722,24 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ if (is_array($memberships)) { foreach ($memberships as $membership) { if ($membership) { - $membership->status_id = array_search('Cancelled', $membershipStatuses); + $newStatus = array_search('Cancelled', $membershipStatuses); + + // Create activity + $allStatus = CRM_Member_BAO_Membership::buildOptions('status_id', 'get'); + $activityParam = array( + 'subject' => "Status changed from {$allStatus[$membership->status_id]} to {$allStatus[$newStatus]}", + 'source_contact_id' => CRM_Core_Session::singleton()->get('userID'), + 'target_contact_id' => $membership->contact_id, + 'source_record_id' => $membership->id, + 'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Change Membership Status'), + 'status_id' => 2, + 'priority_id' => 2, + 'activity_date_time' => date('Y-m-d H:i:s'), + ); + + $membership->status_id = $newStatus; $membership->save(); + civicrm_api3('activity', 'create', $activityParam); $updateResult['updatedComponents']['CiviMember'] = $membership->status_id; if ($processContributionObject) { -- 2.25.1