From a7f2802fb1fbc12303ba2c02986c87e263704622 Mon Sep 17 00:00:00 2001 From: Pradeep Nayak Date: Thu, 12 Nov 2015 10:32:07 +0530 Subject: [PATCH] --CRM-17418, fixed amount during cancelling completed contribution when tax is enabled --- CRM/Contribute/BAO/Contribution.php | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 8f8d3c7d73..d369b66d8d 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -3015,12 +3015,13 @@ WHERE contribution_id = %1 "; if ($context == 'changedStatus') { //get all the statuses $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - + $cancelledTaxAmount = 0; if ($params['prevContribution']->contribution_status_id == array_search('Completed', $contributionStatus) && ($params['contribution']->contribution_status_id == array_search('Refunded', $contributionStatus) || $params['contribution']->contribution_status_id == array_search('Cancelled', $contributionStatus)) ) { $params['trxnParams']['total_amount'] = -$params['total_amount']; + $cancelledTaxAmount = CRM_Utils_Array::value('tax_amount', $params, '0.00'); if (empty($params['contribution']->creditnote_id) || $params['contribution']->creditnote_id == "null") { $creditNoteId = self::createCreditNoteId(); CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Contribution', $params['contribution']->id, 'creditnote_id', $creditNoteId); @@ -3045,7 +3046,7 @@ WHERE contribution_id = %1 "; $params['trxnParams']['from_financial_account_id'] = $arAccountId; } } - $itemAmount = $params['trxnParams']['total_amount']; + $itemAmount = $params['trxnParams']['total_amount'] + $cancelledTaxAmount; } elseif ($context == 'changePaymentInstrument') { if ($params['trxnParams']['total_amount'] < 0) { @@ -3126,6 +3127,11 @@ WHERE contribution_id = %1 "; $currency = $params['contribution']->currency; } $diff = 1; + if ($context == 'changeFinancialType' || $params['contribution']->contribution_status_id == array_search('Cancelled', $contributionStatus) + || $params['contribution']->contribution_status_id == array_search('Refunded', $contributionStatus) + ) { + $diff = -1; + } if (!empty($params['is_quick_config'])) { $amount = $itemAmount; if (!$amount) { @@ -3133,11 +3139,6 @@ WHERE contribution_id = %1 "; } } else { - if ($context == 'changeFinancialType' || $params['contribution']->contribution_status_id == array_search('Cancelled', $contributionStatus) - || $params['contribution']->contribution_status_id == array_search('Refunded', $contributionStatus) - ) { - $diff = -1; - } $amount = $diff * $fieldValues['line_total']; } -- 2.25.1