From 8a0c74aeeb7ca606716b4a732d1b4f1141e1a320 Mon Sep 17 00:00:00 2001 From: jitendrapurohit Date: Thu, 17 Nov 2016 14:54:40 +0530 Subject: [PATCH 1/2] CRM-19660: Financial Transaction stores wrong transaction date if the contribution is cancelled --- CRM/Contribute/BAO/Contribution.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 1ace2da120cd..6c05e09c71bc 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -3194,7 +3194,7 @@ public static function recordFinancialAccounts(&$params, $financialTrxnValues = 'payment_instrument_id' => CRM_Utils_Array::value('payment_instrument_id', $params, $params['contribution']->payment_instrument_id), 'check_number' => CRM_Utils_Array::value('check_number', $params), ); - if ($contributionStatus == 'Refunded' || $contributionStatus == 'Chargeback') { + if ($contributionStatus == 'Refunded' || $contributionStatus == 'Chargeback' || $contributionStatus == 'Cancelled') { $trxnParams['trxn_date'] = !empty($params['contribution']->cancel_date) ? $params['contribution']->cancel_date : date('YmdHis'); if (isset($params['refund_trxn_id'])) { // CRM-17751 allow a separate trxn_id for the refund to be passed in via api & form. From 0a8160e8e75b77c7c52940e4dfd163c374911d51 Mon Sep 17 00:00:00 2001 From: jitendrapurohit Date: Tue, 22 Nov 2016 17:28:55 +0530 Subject: [PATCH 2/2] add unit test --- tests/phpunit/api/v3/ContributionTest.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/api/v3/ContributionTest.php b/tests/phpunit/api/v3/ContributionTest.php index 692748e41730..36c2b287d63c 100644 --- a/tests/phpunit/api/v3/ContributionTest.php +++ b/tests/phpunit/api/v3/ContributionTest.php @@ -1362,10 +1362,15 @@ public function testCreateUpdateContributionCancelPending() { $newParams = array_merge($contribParams, array( 'id' => $contribution['id'], 'contribution_status_id' => 3, + 'cancel_date' => '2012-02-02 09:00', ) ); + //Check if trxn_date is same as cancel_date. + $checkTrxnDate = array( + 'trxn_date' => '2012-02-02 09:00:00', + ); $contribution = $this->callAPISuccess('contribution', 'create', $newParams); - $this->_checkFinancialTrxn($contribution, 'cancelPending'); + $this->_checkFinancialTrxn($contribution, 'cancelPending', NULL, $checkTrxnDate); $this->_checkFinancialItem($contribution['id'], 'cancelPending'); }