diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 0ef2ddde7606..3fa900639c25 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -2636,7 +2636,7 @@ protected static function repeatTransaction(&$contribution, &$input, $contributi $createContribution = civicrm_api3('Contribution', 'create', $contributionParams); $contribution->id = $createContribution['id']; - CRM_Contribute_BAO_ContributionRecur::copyCustomValues($contributionParams['contribution_recur_id'], $contribution->id); + $contribution->copyCustomFields($templateContribution['id'], $contribution->id); self::handleMembershipIDOverride($contribution->id, $input); return TRUE; } diff --git a/CRM/Contribute/BAO/ContributionRecur.php b/CRM/Contribute/BAO/ContributionRecur.php index c1985a3f1b92..72d5d4eaf943 100644 --- a/CRM/Contribute/BAO/ContributionRecur.php +++ b/CRM/Contribute/BAO/ContributionRecur.php @@ -545,6 +545,8 @@ public static function sendRecurringStartOrEndNotification($ids, $recur, $isFirs /** * Copy custom data of the initial contribution into its recurring contributions. * + * @deprecated + * * @param int $recurId * @param int $targetContributionId */ diff --git a/tests/phpunit/api/v3/ContributionTest.php b/tests/phpunit/api/v3/ContributionTest.php index b57794463378..fdf703afc31d 100644 --- a/tests/phpunit/api/v3/ContributionTest.php +++ b/tests/phpunit/api/v3/ContributionTest.php @@ -9,6 +9,8 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\Contribution; + /** * Test APIv3 civicrm_contribute_* functions * @@ -107,7 +109,7 @@ public function setUp() { */ public function tearDown() { $this->quickCleanUpFinancialEntities(); - $this->quickCleanup(['civicrm_uf_match']); + $this->quickCleanup(['civicrm_uf_match'], TRUE); $financialAccounts = $this->callAPISuccess('FinancialAccount', 'get', []); foreach ($financialAccounts['values'] as $financialAccount) { if ($financialAccount['name'] === 'Test Tax financial account ' || $financialAccount['name'] === 'Test taxable financial Type') { @@ -2326,6 +2328,43 @@ public function testRepeatTransaction() { ], 'online'); } + /** + * Test custom data is copied over. + * + * @throws \API_Exception + * @throws \CRM_Core_Exception + */ + public function testRepeatTransactionWithCustomData() { + $this->createCustomGroupWithFieldOfType(['extends' => 'Contribution', 'name' => 'Repeat'], 'text'); + $originalContribution = $this->setUpRepeatTransaction([], 'single', [$this->getCustomFieldName('text') => 'first']); + $this->callAPISuccess('contribution', 'repeattransaction', [ + 'original_contribution_id' => $originalContribution['id'], + 'contribution_status_id' => 'Completed', + 'trxn_id' => 'my_trxn', + ]); + + $contribution = Contribution::get() + ->addWhere('trxn_id', '=', 'my_trxn') + ->addSelect('Custom_Group.Enter_text_here') + ->addSelect('id') + ->execute()->first(); + $this->assertEquals('first', $contribution['Custom_Group.Enter_text_here']); + + Contribution::update()->setValues(['Custom_Group.Enter_text_here' => 'second'])->addWhere('id', '=', $contribution['id'])->execute(); + + $this->callAPISuccess('contribution', 'repeattransaction', [ + 'original_contribution_id' => $originalContribution['id'], + 'contribution_status_id' => 'Completed', + 'trxn_id' => 'number_3', + ]); + + $contribution = Contribution::get() + ->addWhere('trxn_id', '=', 'number_3') + ->setSelect(['id', 'Custom_Group.Enter_text_here']) + ->execute()->first(); + $this->assertEquals('second', $contribution['Custom_Group.Enter_text_here']); + } + /** * Test repeat contribution successfully creates line items (plural). *