Skip to content

Commit

Permalink
additional fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
monishdeb committed Apr 28, 2017
1 parent 13f4774 commit deaf750
Showing 1 changed file with 22 additions and 17 deletions.
39 changes: 22 additions & 17 deletions CRM/Contribute/BAO/Contribution.php
Original file line number Diff line number Diff line change
Expand Up @@ -3467,6 +3467,7 @@ public static function updateFinancialAccounts(&$params, $context = NULL) {
) {
return;
}
$itemAmount = NULL;
if ($context == 'changedAmount' || $context == 'changeFinancialType') {
$itemAmount = $params['trxnParams']['total_amount'] = $params['trxnParams']['net_amount'] = ($params['total_amount'] - $params['prevContribution']->total_amount);

Expand Down Expand Up @@ -3575,7 +3576,16 @@ public static function updateFinancialAccounts(&$params, $context = NULL) {
$trxn = CRM_Core_BAO_FinancialTrxn::create($params['trxnParams']);
$previousLineItem = CRM_Price_BAO_LineItem::getLineItemsByContributionID($params['prevContribution']->id);
$params['entity_id'] = $trxn->id;
if ($context != 'changePaymentInstrument') {

if ($context == 'changePaymentInstrument') {
// store financial item Proportionaly.
$trxnParams = array(
'total_amount' => $trxn->total_amount,
'contribution_id' => $params['contribution']->id,
);
self::assignProportionalLineItems($trxnParams, $trxn->id, $params['prevContribution']->total_amount);
}
else {
$itemParams['entity_table'] = 'civicrm_line_item';
$trxnIds['id'] = $params['entity_id'];
foreach ($params['line_item'] as $fieldId => $fields) {
Expand All @@ -3600,7 +3610,7 @@ public static function updateFinancialAccounts(&$params, $context = NULL) {
'previous_line_total' => CRM_Utils_Array::value('line_total', CRM_Utils_Array::value($lineItemDetails['id'], $previousLineItem)),
'item_amount' => $itemAmount,
);
$amount = self::calculateFinancialItemAmount($params, $amountParams, $context, $fieldValues);
$amount = self::calculateFinancialItemAmount($params, $amountParams, $context, $lineItemDetails);
$itemParams = array(
'transaction_date' => $receiveDate,
'contact_id' => $params['prevContribution']->contact_id,
Expand All @@ -3625,7 +3635,8 @@ public static function updateFinancialAccounts(&$params, $context = NULL) {
$taxAmount = $previousLineItem[$lineItemDetails['id']]['tax_amount'];
}
elseif ($context == 'changedAmount') {
$taxAmount = $taxAmount - $previousLineItem[$lineItemDetails['id']]['tax_amount'];
// @todo why we are not recording the new tax amount instead of difference between new and old tax amount
//$taxAmount = $taxAmount - $previousLineItem[$lineItemDetails['id']]['tax_amount'];
}

$itemParams['amount'] = self::getMultiplier($params['contribution']->contribution_status_id, $context) * $taxAmount;
Expand All @@ -3647,14 +3658,7 @@ public static function updateFinancialAccounts(&$params, $context = NULL) {
}
}
}
if ($context == 'changePaymentInstrument') {
// store financial item Proportionaly.
$trxnParams = array(
'total_amount' => $trxn->total_amount,
'contribution_id' => $params['contribution']->id,
);
self::assignProportionalLineItems($trxnParams, $trxn->id, $params['prevContribution']->total_amount);
}

CRM_Core_BAO_FinancialTrxn::createDeferredTrxn(CRM_Utils_Array::value('line_item', $params), $params['contribution'], TRUE, $context);
}

Expand Down Expand Up @@ -5298,15 +5302,16 @@ private static function getOriginalContribution($contributionID) {
* @return float
*/
protected static function getFinancialItemAmountFromParams($params, $context, $lineItemDetails, $isARefund) {
if ($context == 'changedAmount' || $context == 'changeFinancialType') {
return $params['total_amount'] - $params['prevContribution']->total_amount;
$taxAmount = CRM_Utils_Array::value('tax_amount', $params, 0.00);
elseif ($context == 'changeFinancialType' || $context == 'changedAmount') {
return ($params['total_amount'] - $params['prevContribution']->total_amount);
}
elseif ($context == 'changedStatus') {
$cancelledTaxAmount = 0;
if ($isARefund) {
$cancelledTaxAmount = CRM_Utils_Array::value('tax_amount', $params, '0.00');
// if it's a status change on refund then return the total amount with tax amount
if (!$isARefund) {
$taxAmount = 0;
}
return self::getMultiplier($params['contribution']->contribution_status_id, $context) * ($params['trxnParams']['total_amount'] + $cancelledTaxAmount);
return self::getMultiplier($params['contribution']->contribution_status_id, $context) * ($params['trxnParams']['total_amount'] + $taxAmount);
}
elseif ($context === NULL) {
// erm, yes because? but, hey, it's tested.
Expand Down

0 comments on commit deaf750

Please sign in to comment.