From bd3f952f9dea80725e5047057047b9242306413d Mon Sep 17 00:00:00 2001 From: eileen Date: Mon, 14 Dec 2020 14:28:25 +1300 Subject: [PATCH] Fix creating of activity for repeat transactions to respect those form the template contribution, if on behalf --- CRM/Contribute/BAO/Contribution.php | 14 +------------- CRM/Contribute/BAO/ContributionPage.php | 2 +- CRM/Contribute/BAO/ContributionRecur.php | 7 +++++++ 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 37ee9d2391..f535d6487d 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -2442,7 +2442,7 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ else { $contributionParams['financial_type_id'] = $templateContribution['financial_type_id']; } - foreach (['contact_id', 'currency', 'source', 'amount_level', 'address_id'] as $fieldName) { + foreach (['contact_id', 'currency', 'source', 'amount_level', 'address_id', 'on_behalf', 'source_contact_id'] as $fieldName) { if (isset($templateContribution[$fieldName])) { $contributionParams[$fieldName] = $templateContribution[$fieldName]; } @@ -4267,18 +4267,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac CRM_Contribute_BAO_ContributionRecur::updateRecurLinkedPledge($contributionID, $recurringContributionID, $contributionParams['contribution_status_id'], $input['amount']); - // create an activity record - // @todo - check if Contribution::create does this, test, remove. - if ($input['component'] == 'contribute') { - //CRM-4027 - $targetContactID = NULL; - if ($contributionContactID) { - $targetContactID = $contribution->contact_id; - $contribution->contact_id = $contributionContactID; - } - CRM_Activity_BAO_Activity::addActivity($contribution, 'Contribution', $targetContactID); - } - if (self::isEmailReceipt($input, $contribution->contribution_page_id, $recurringContributionID)) { civicrm_api3('Contribution', 'sendconfirmation', [ 'id' => $contributionID, diff --git a/CRM/Contribute/BAO/ContributionPage.php b/CRM/Contribute/BAO/ContributionPage.php index f06671dea7..6b1854f0f3 100644 --- a/CRM/Contribute/BAO/ContributionPage.php +++ b/CRM/Contribute/BAO/ContributionPage.php @@ -45,7 +45,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio CRM_Price_BAO_PriceFieldValue::updateFinancialType($params['id'], 'civicrm_contribution_page', $params['financial_type_id']); } CRM_Utils_Hook::post($hook, 'ContributionPage', $dao->id, $dao); - unset(\Civi::$statics['CRM_Core_PseudoConstant']); + CRM_Core_PseudoConstant::flush(); return $dao; } diff --git a/CRM/Contribute/BAO/ContributionRecur.php b/CRM/Contribute/BAO/ContributionRecur.php index aac66075a6..82e8c767e6 100644 --- a/CRM/Contribute/BAO/ContributionRecur.php +++ b/CRM/Contribute/BAO/ContributionRecur.php @@ -450,6 +450,13 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) } $result = array_merge($templateContribution, $overrides); $result['line_item'] = self::reformatLineItemsForRepeatContribution($result['total_amount'], $result['financial_type_id'], $lineItems, (array) $templateContribution); + // If the template contribution was made on-behalf then add the + // relevant values to ensure the activity reflects that. + $relatedContact = CRM_Contribute_BAO_Contribution::getOnbehalfIds($result['id']); + if (!empty($relatedContact['individual_id'])) { + $result['on_behalf'] = TRUE; + $result['source_contact_id'] = $relatedContact['individual_id']; + } return $result; } return []; -- 2.25.1