Skip to content

Commit

Permalink
Merge pull request #19086 from agileware/CIVICRM-1617
Browse files Browse the repository at this point in the history
CIVICRM-1617: Only make line_item array if it doesn't exist already.
  • Loading branch information
eileenmcnaughton authored Dec 6, 2020
2 parents 7c9da56 + 036136e commit fb86dcb
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions CRM/Contribute/BAO/Contribution.php
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,16 @@ public static function add(&$params) {
unset($params['revenue_recognition_date']);
}

// Get Line Items if we don't have them already.
if (empty($params['line_item'])) {
if (isset($params['id'])) {
CRM_Price_BAO_LineItem::getLineItemArray($params, [$params['id']]);
}
else {
CRM_Price_BAO_LineItem::getLineItemArray($params);
}
}

if (!isset($params['tax_amount']) && $setPrevContribution && (isset($params['total_amount']) ||
isset($params['financial_type_id']))) {
$params = CRM_Contribute_BAO_Contribution::checkTaxAmount($params);
Expand Down Expand Up @@ -4072,7 +4082,6 @@ protected static function checkTaxAmount($params) {
// Assign tax Amount on update of contribution
if (!empty($params['prevContribution']->tax_amount)) {
$params['tax_amount'] = 'null';
CRM_Price_BAO_LineItem::getLineItemArray($params, [$params['id']]);
foreach ($params['line_item'] as $setID => $priceField) {
foreach ($priceField as $priceFieldID => $priceFieldValue) {
$params['line_item'][$setID][$priceFieldID]['tax_amount'] = $params['tax_amount'];
Expand All @@ -4089,13 +4098,6 @@ protected static function checkTaxAmount($params) {
$taxAmount = CRM_Contribute_BAO_Contribution_Utils::calculateTaxAmount(CRM_Utils_Array::value('total_amount', $params), $taxRateParams);
$params['tax_amount'] = round($taxAmount['tax_amount'], 2);

// Get Line Item on update of contribution
if (isset($params['id'])) {
CRM_Price_BAO_LineItem::getLineItemArray($params, [$params['id']]);
}
else {
CRM_Price_BAO_LineItem::getLineItemArray($params);
}
foreach ($params['line_item'] as $setID => $priceField) {
foreach ($priceField as $priceFieldID => $priceFieldValue) {
$params['line_item'][$setID][$priceFieldID]['tax_amount'] = $params['tax_amount'];
Expand Down

0 comments on commit fb86dcb

Please sign in to comment.