From 8da4799e81329c6eab458975d6da9e0a7f18933a Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Tue, 24 Aug 2021 08:57:08 +1200 Subject: [PATCH] Move the tested but crazy tax calc to the contribution api --- CRM/Contribute/BAO/Contribution.php | 1 - api/v3/Contribution.php | 12 ++++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index f4f5f4fbea..f14b272850 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -192,7 +192,6 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution { if (!isset($params['tax_amount']) && $setPrevContribution && (isset($params['total_amount']) || isset($params['financial_type_id']))) { $params['tax_amount'] = $taxAmount; - $params['total_amount'] = $taxAmount + $lineTotal; } if (isset($params['tax_amount']) && empty($params['skipLineItem']) && !CRM_Utils_Money::equals($params['tax_amount'], $taxAmount, ($params['currency'] ?? Civi::settings()->get('defaultCurrency'))) diff --git a/api/v3/Contribution.php b/api/v3/Contribution.php index 3a72fd9f65..e3d49c086c 100644 --- a/api/v3/Contribution.php +++ b/api/v3/Contribution.php @@ -70,6 +70,18 @@ function civicrm_api3_contribution_create($params) { throw new API_Exception($error['financial_type_id']); } } + if (!isset($params['tax_amount']) && empty($params['line_item']) + && empty($params['skipLineItem']) + && empty($params['id']) + ) { + $taxRates = CRM_Core_PseudoConstant::getTaxRates(); + $taxRate = $taxRates[$params['financial_type_id']] ?? 0; + if ($taxRate) { + // Be afraid - historically if a contribution was tax then the passed in amount is EXCLUSIVE + $params['tax_amount'] = $params['total_amount'] * ($taxRate / 100); + $params['total_amount'] += $params['tax_amount']; + } + } _civicrm_api3_contribution_create_legacy_support_45($params); return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'Contribution'); -- 2.25.1