From 8de1ade925df6f3f676e98624fcb13058659cff2 Mon Sep 17 00:00:00 2001 From: Pradeep Nayak Date: Tue, 25 Oct 2016 19:37:03 +0530 Subject: [PATCH] CRM-16189, code cleanup ---------------------------------------- * CRM-16189: Improve support for Accrual Method bookkeeping https://issues.civicrm.org/jira/browse/CRM-16189 --- CRM/Contribute/BAO/Contribution.php | 14 +++++++------- api/v3/Payment.php | 6 +++++- .../CRM/Contribute/BAO/ContributionTest.php | 3 +-- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index fc845d90ad..3078e552f8 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -4960,13 +4960,13 @@ LIMIT 1;"; * in entity financial trxn table * * @param array $params - * array of contribution params. - * @param object $trxn - * CRM_Financial_DAO_FinancialTrxn object - * @param array $contribution + * + * @param Integer $trxnId + * + * @param float $contributionTotalAmount * */ - public static function assignProportionalLineItems($params, $trxn, $contribution) { + public static function assignProportionalLineItems($params, $trxnId, $contributionTotalAmount) { $lineItems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($params['contribution_id']); if (!empty($lineItems)) { // get financial item @@ -4980,10 +4980,10 @@ LIMIT 1;"; } $eftParams = array( 'entity_table' => 'civicrm_financial_item', - 'financial_trxn_id' => $trxn->id, + 'financial_trxn_id' => $trxnId, ); foreach ($lineItems as $key => $value) { - $paid = $value['line_total'] * ($params['total_amount'] / $contribution['total_amount']); + $paid = $value['line_total'] * ($params['total_amount'] / $contributionTotalAmount); // Record Entity Financial Trxn $eftParams['amount'] = round($paid, 2); $eftParams['entity_id'] = $ftIds[$value['price_field_value_id']]; diff --git a/api/v3/Payment.php b/api/v3/Payment.php index 4c63037a9d..0757d8ebb9 100644 --- a/api/v3/Payment.php +++ b/api/v3/Payment.php @@ -196,7 +196,11 @@ function civicrm_api3_payment_create(&$params) { } elseif (!empty($trxn)) { // Assign the lineitems proportionally - CRM_Contribute_BAO_Contribution::assignProportionalLineItems($params, $trxn, $contribution); + $itemParams = array( + 'contribution_id' => $params['contribution_id'], + 'total_amount' => $params['total_amount'], + ); + CRM_Contribute_BAO_Contribution::assignProportionalLineItems($itemParams, $trxn->id, $contribution['total_amount']); } } } diff --git a/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php b/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php index 66269545e5..b37326175c 100644 --- a/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php +++ b/tests/phpunit/CRM/Contribute/BAO/ContributionTest.php @@ -617,7 +617,6 @@ WHERE eft.entity_id = %1 AND ft.to_financial_account_id <> %2"; */ public function testAssignProportionalLineItems() { list($lineItems, $contribution) = $this->addParticipantWithContribution(); - $contributions['total_amount'] = $contribution->total_amount; $params = array( 'contribution_id' => $contribution->id, 'total_amount' => 150.00, @@ -625,7 +624,7 @@ WHERE eft.entity_id = %1 AND ft.to_financial_account_id <> %2"; $trxn = new CRM_Financial_DAO_FinancialTrxn(); $trxn->orderBy('id DESC'); $trxn->find(TRUE); - CRM_Contribute_BAO_Contribution::assignProportionalLineItems($params, $trxn, $contributions); + CRM_Contribute_BAO_Contribution::assignProportionalLineItems($params, $trxn->id, $contribution->total_amount); $this->checkItemValues($contribution); } -- 2.25.1