From 0a201857e0f5df363e344109caea33a1f581a358 Mon Sep 17 00:00:00 2001 From: eileen Date: Mon, 27 May 2019 10:03:06 +1200 Subject: [PATCH] Fix bug where contribution status is mishandled if label is changed --- CRM/Contribute/BAO/Contribution.php | 3 +-- tests/phpunit/api/v3/PaymentTest.php | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 99c901e30d..31564a2a2f 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -1198,7 +1198,6 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { return [FALSE, $isARefund]; } } - // @todo - figure out when, if ever this is reached. return [TRUE, $isARefund]; } @@ -3757,7 +3756,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $trxnID = NULL; $inputParams = $params; $isARefund = FALSE; - $currentContributionStatus = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $params['contribution']->contribution_status_id); + $currentContributionStatus = CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $params['contribution']->contribution_status_id); $previousContributionStatus = CRM_Contribute_PseudoConstant::contributionStatus($params['prevContribution']->contribution_status_id, 'name'); if (($previousContributionStatus == 'Pending' diff --git a/tests/phpunit/api/v3/PaymentTest.php b/tests/phpunit/api/v3/PaymentTest.php index 932a9a8ad5..106a4b2984 100644 --- a/tests/phpunit/api/v3/PaymentTest.php +++ b/tests/phpunit/api/v3/PaymentTest.php @@ -679,6 +679,8 @@ class api_v3_PaymentTest extends CiviUnitTestCase { 'contribution_id' => $contribution['id'], 'total_amount' => 40, ); + // Rename the 'completed' status label first to check that we are not using the labels! + $this->callAPISuccess('OptionValue', 'get', ['name' => 'Completed', 'option_group_id' => 'contribution_status', 'api.OptionValue.create' => ['label' => 'Unicorn']]); $payment = $this->callAPISuccess('Payment', 'create', $params); $expectedResult = array( $payment['id'] => array( @@ -706,11 +708,13 @@ class api_v3_PaymentTest extends CiviUnitTestCase { $this->assertEquals($eft['values'][$eft['id']]['amount'], 40); // Check contribution for completed status $contribution = $this->callAPISuccess('contribution', 'get', array('id' => $contribution['id'])); - $this->assertEquals($contribution['values'][$contribution['id']]['contribution_status'], 'Completed'); + $this->assertEquals($contribution['values'][$contribution['id']]['contribution_status'], 'Unicorn'); $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 100.00); $this->callAPISuccess('Contribution', 'Delete', array( 'id' => $contribution['id'], )); + $this->callAPISuccess('OptionValue', 'get', ['name' => 'Completed', 'option_group_id' => 'contribution_status', 'api.OptionValue.create' => ['label' => 'Completed']]); + } /** -- 2.25.1