Skip to content

Commit

Permalink
CRM-19585, fixed code for sales tax for change in FT
Browse files Browse the repository at this point in the history
----------------------------------------
* CRM-19585: Sales tax issue
  https://issues.civicrm.org/jira/browse/CRM-19585
  • Loading branch information
pradpnayak committed Nov 2, 2016
1 parent 857fd8a commit 7796f46
Showing 1 changed file with 32 additions and 9 deletions.
41 changes: 32 additions & 9 deletions CRM/Contribute/BAO/Contribution.php
Original file line number Diff line number Diff line change
Expand Up @@ -3222,7 +3222,7 @@ public static function recordFinancialAccounts(&$params, $financialTrxnValues =
$params['trxnParams'] = $trxnParams;

if (!empty($params['prevContribution'])) {
$updated = FALSE;
$updated = $ignoreChangeAmount = FALSE;
$params['trxnParams']['total_amount'] = $trxnParams['total_amount'] = $params['total_amount'] = $params['prevContribution']->total_amount;
$params['trxnParams']['fee_amount'] = $params['prevContribution']->fee_amount;
$params['trxnParams']['net_amount'] = $params['prevContribution']->net_amount;
Expand Down Expand Up @@ -3269,7 +3269,15 @@ public static function recordFinancialAccounts(&$params, $financialTrxnValues =
self::updateFinancialAccounts($params, 'changeFinancialType');
/* $params['trxnParams']['to_financial_account_id'] = $trxnParams['to_financial_account_id']; */
$params['financial_account_id'] = $newFinancialAccount;
$params['total_amount'] = $params['trxnParams']['total_amount'] = $params['trxnParams']['net_amount'] = $trxnParams['total_amount'];
$changeFTAmount = $trxnParams['total_amount'];
if (isset($params['prevContribution']->total_amount) || isset($params['tax_amount'])) {
$changesinTaxAmount = $totalAmount - $params['prevContribution']->total_amount + $params['prevContribution']->tax_amount - CRM_Utils_Array::value('tax_amount', $params, 0);
if ($changesinTaxAmount == 0) {
$ignoreChangeAmount = TRUE;
$changeFTAmount = $totalAmount;
}
}
$params['total_amount'] = $params['trxnParams']['total_amount'] = $params['trxnParams']['net_amount'] = $changeFTAmount;
self::updateFinancialAccounts($params);
$params['trxnParams']['to_financial_account_id'] = $trxnParams['to_financial_account_id'];
$updated = TRUE;
Expand Down Expand Up @@ -3345,7 +3353,7 @@ public static function recordFinancialAccounts(&$params, $financialTrxnValues =
$params['trxnParams']['net_amount'] = CRM_Utils_Array::value('net_amount', $params);
$params['trxnParams']['total_amount'] = $trxnParams['total_amount'] = $params['total_amount'] = $totalAmount;
$params['trxnParams']['trxn_id'] = $params['contribution']->trxn_id;
if (isset($totalAmount) &&
if (!$ignoreChangeAmount && isset($totalAmount) &&
$totalAmount != $params['prevContribution']->total_amount
) {
//Update Financial Records
Expand Down Expand Up @@ -3447,8 +3455,13 @@ public static function updateFinancialAccounts(&$params, $context = NULL, $skipT
return;
}
if ($context == 'changedAmount' || $context == 'changeFinancialType') {
$params['trxnParams']['total_amount'] = $params['trxnParams']['net_amount'] = $params['total_amount'] - $params['prevContribution']->total_amount;
$itemAmount = $params['total_amount'] - $params['prevContribution']->total_amount - CRM_Utils_Array::value('tax_amount', $params, 0) + $params['prevContribution']->tax_amount;
$itemAmount = $params['trxnParams']['total_amount'] = $params['trxnParams']['net_amount'] = $params['total_amount'] - $params['prevContribution']->total_amount;
if (isset($params['prevContribution']->tax_amount)) {
$itemAmount -= CRM_Utils_Array::value('tax_amount', $params, 0);
}
if (isset($params['tax_amount'])) {
$itemAmount += $params['prevContribution']->tax_amount;
}
}
if ($context == 'changedStatus') {
//get all the statuses
Expand Down Expand Up @@ -3578,6 +3591,9 @@ public static function updateFinancialAccounts(&$params, $context = NULL, $skipT
$amount = $itemAmount;
if (!$amount) {
$amount = $params['total_amount'];
if ($context === NULL) {
$amount -= CRM_Utils_Array::value('tax_amount', $params, 0);
}
}
}
else {
Expand All @@ -3604,18 +3620,25 @@ public static function updateFinancialAccounts(&$params, $context = NULL, $skipT
$params['line_item'][$fieldId][$fieldValueId]['deferred_line_total'] = $amount;
$params['line_item'][$fieldId][$fieldValueId]['financial_item_id'] = $financialItem->id;

if ($fieldValues['tax_amount']) {
$taxAmount = $fieldValues['tax_amount'];
$taxFinancialType = $fieldValues['financial_type_id'];
if ($context == 'changeFinancialType') {
$taxAmount = $previousLineItem[$fieldValues['id']]['tax_amount'];
$taxFinancialType = $previousLineItem[$fieldValues['id']]['financial_type_id'];
}

if ($taxAmount) {
$invoiceSettings = Civi::settings()->get('contribution_invoice_settings');
$taxTerm = CRM_Utils_Array::value('tax_term', $invoiceSettings);
if ($context == 'changedAmount') {
$itemParams['amount'] = $diff * ($fieldValues['tax_amount'] - $previousLineItem[$fieldValues['id']]['tax_amount']);
}
else {
$itemParams['amount'] = $diff * $fieldValues['tax_amount'];
$itemParams['amount'] = $diff * $taxAmount;
}
$itemParams['description'] = $taxTerm;
if ($fieldValues['financial_type_id']) {
$itemParams['financial_account_id'] = self::getFinancialAccountId($fieldValues['financial_type_id']);
if ($taxFinancialType) {
$itemParams['financial_account_id'] = self::getFinancialAccountId($taxFinancialType);
}
CRM_Financial_BAO_FinancialItem::create($itemParams, NULL, $trxnIds);
}
Expand Down

0 comments on commit 7796f46

Please sign in to comment.