From c40e1ff47618d417a20b27a2b0fa21562acf0306 Mon Sep 17 00:00:00 2001 From: dpradeep Date: Wed, 6 Aug 2014 20:17:50 +0530 Subject: [PATCH] VAT-434 Accounting export / accounting entries corrected. --- CRM/Contribute/BAO/Contribution.php | 39 +++++++++++------------ CRM/Contribute/Form/Contribution/Main.php | 2 +- CRM/Financial/BAO/ExportFormat/CSV.php | 2 ++ CRM/Financial/BAO/FinancialItem.php | 9 ++---- CRM/Price/BAO/LineItem.php | 2 +- CRM/Price/BAO/PriceSet.php | 12 ++++--- 6 files changed, 31 insertions(+), 35 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index ea59e9dd70..528e15ecaf 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -2776,27 +2776,6 @@ WHERE contribution_id = %1 "; // also make it available as return value $return = $financialTxn = CRM_Core_BAO_FinancialTrxn::create($trxnParams); $params['entity_id'] = $financialTxn->id; - - // when a tax is charged - if (!empty($params['tax_amount'])) { - $salesTaxTypeId = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Sales Tax Account is' ")); - $amount = $params['tax_amount']; - if (!$amount) { - return FALSE; - } - - $taxTrxnParams = $trxnParams; - - //build financial transaction params for tax - $financialAccount = CRM_Contribute_PseudoConstant::financialAccountType($params['financial_type_id'], $salesTaxTypeId); - $taxTrxnParams['from_financial_account_id'] = $params['to_financial_account_id']; - $taxTrxnParams['to_financial_account_id'] = $financialAccount; - $taxTrxnParams['total_amount'] = $amount; - $taxTrxnParams['fee_amount'] = - $taxTrxnParams['net_amount'] = 0; - $trxn = CRM_Core_BAO_FinancialTrxn::create($taxTrxnParams); - $params['contribution']->tax_trxn_id = $trxn->id; - } } } // record line items and finacial items @@ -2974,6 +2953,24 @@ WHERE contribution_id = %1 "; 'entity_id' => $fieldValues['id'] ); CRM_Financial_BAO_FinancialItem::create($itemParams, NULL, $trxnIds); + + if ($fieldValues['tax_amount']) { + $itemParams['amount'] = $diff * $fieldValues['tax_amount']; + $itemParams['description'] = ts('VAT'); + $accountRel = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Sales Tax Account is' ")); + if ($fieldValues['financial_type_id']) { + $searchParams = array( + 'entity_table' => 'civicrm_financial_type', + 'entity_id' => $fieldValues['financial_type_id'], + 'account_relationship' => $accountRel, + ); + + $result = array(); + CRM_Financial_BAO_FinancialTypeAccount::retrieve( $searchParams, $result ); + $itemParams['financial_account_id'] = CRM_Utils_Array::value( 'financial_account_id', $result ); + } + CRM_Financial_BAO_FinancialItem::create($itemParams, NULL, $trxnIds); + } } } } diff --git a/CRM/Contribute/Form/Contribution/Main.php b/CRM/Contribute/Form/Contribution/Main.php index f220a0007a..b2bf095d5d 100644 --- a/CRM/Contribute/Form/Contribution/Main.php +++ b/CRM/Contribute/Form/Contribution/Main.php @@ -1236,10 +1236,10 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu if ($proceFieldAmount) { $lineItem[$params['priceSetId']][$fieldOption]['unit_price'] = $proceFieldAmount; + $lineItem[$params['priceSetId']][$fieldOption]['line_total'] = $proceFieldAmount; if (isset($lineItem[$params['priceSetId']][$fieldOption]['tax_amount'])) { $proceFieldAmount += $lineItem[$params['priceSetId']][$fieldOption]['tax_amount']; } - $lineItem[$params['priceSetId']][$fieldOption]['line_total'] = $proceFieldAmount; if (!$this->_membershipBlock['is_separate_payment']) { $params['amount'] = $proceFieldAmount; //require when separate membership not used } diff --git a/CRM/Financial/BAO/ExportFormat/CSV.php b/CRM/Financial/BAO/ExportFormat/CSV.php index 1efefc3456..3575f9741c 100644 --- a/CRM/Financial/BAO/ExportFormat/CSV.php +++ b/CRM/Financial/BAO/ExportFormat/CSV.php @@ -177,12 +177,14 @@ class CRM_Financial_BAO_ExportFormat_CSV extends CRM_Financial_BAO_ExportFormat } $financialItems[] = array( + 'Internal ID' => $dao->financial_trxn_id, 'Transaction Date' => $dao->trxn_date, 'Debit Account' => $dao->to_account_code, 'Debit Account Name' => $dao->to_account_name, 'Debit Account Type' => $dao->to_account_type_code, 'Debit Account Amount (Unsplit)' => $dao->debit_total_amount, 'Transaction ID (Unsplit)' => $dao->trxn_id, + 'Debit amount (Split)' => $dao->amount, 'Payment Instrument' => $dao->payment_instrument, 'Check Number' => $dao->check_number, 'Source' => $dao->source, diff --git a/CRM/Financial/BAO/FinancialItem.php b/CRM/Financial/BAO/FinancialItem.php index b4374f9ddd..00b41f97d8 100644 --- a/CRM/Financial/BAO/FinancialItem.php +++ b/CRM/Financial/BAO/FinancialItem.php @@ -122,14 +122,9 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem { CRM_Financial_BAO_FinancialTypeAccount::retrieve( $searchParams, $result ); $params['financial_account_id'] = CRM_Utils_Array::value( 'financial_account_id', $result ); } + $trxn = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution->id, 'ASC', TRUE); + $trxnId['id'] = $trxn['financialTrxnId']; - if ($taxTrxnID) { - $trxnId['id'] = $contribution->tax_trxn_id; - } - else { - $trxn = CRM_Core_BAO_FinancialTrxn::getFinancialTrxnId($contribution->id, 'ASC', TRUE); - $trxnId['id'] = $trxn['financialTrxnId']; - } return self::create($params, NULL, $trxnId); } diff --git a/CRM/Price/BAO/LineItem.php b/CRM/Price/BAO/LineItem.php index 572b2804cf..ab13e1560d 100644 --- a/CRM/Price/BAO/LineItem.php +++ b/CRM/Price/BAO/LineItem.php @@ -327,7 +327,7 @@ AND li.entity_id = {$entityId} $lineItems = CRM_Price_BAO_LineItem::create($line); if (!$update && $contributionDetails) { CRM_Financial_BAO_FinancialItem::add($lineItems, $contributionDetails); - if (isset($contributionDetails->tax_trxn_id) && !empty($contributionDetails->tax_trxn_id) && isset($line['tax_amount'])) { + if (isset($line['tax_amount'])) { CRM_Financial_BAO_FinancialItem::add($lineItems, $contributionDetails, TRUE); } } diff --git a/CRM/Price/BAO/PriceSet.php b/CRM/Price/BAO/PriceSet.php index b1addc7f3a..ce8fda3d15 100644 --- a/CRM/Price/BAO/PriceSet.php +++ b/CRM/Price/BAO/PriceSet.php @@ -685,7 +685,7 @@ WHERE id = %1"; $totalTax += $field['options'][key($field['options'])]['tax_amount'] * $lineItem[key($field['options'])]['qty']; } } - $totalPrice += $lineItem[key($field['options'])]['line_total']; + $totalPrice += $lineItem[key($field['options'])]['line_total'] + CRM_Utils_Array::value('tax_amount', $lineItem[key($field['options'])]); break; case 'Radio': @@ -710,8 +710,11 @@ WHERE id = %1"; if (CRM_Utils_Array::value('tax_rate', $field['options'][$optionValueId])) { $lineItem = self::setLineItem($field, $lineItem, $optionValueId); $totalTax += $field['options'][$optionValueId]['tax_amount']; + if (CRM_Utils_Array::value('field_title', $lineItem[$optionValueId]) == 'Membership Amount') { + $lineItem[$optionValueId]['line_total'] = $lineItem[$optionValueId]['unit_price'] = CRM_Utils_Rule::cleanMoney($lineItem[$optionValueId]['line_total'] - $lineItem[$optionValueId]['tax_amount']); + } } - $totalPrice += $lineItem[$optionValueId]['line_total']; + $totalPrice += $lineItem[$optionValueId]['line_total'] + CRM_Utils_Array::value('tax_amount', $lineItem[$optionValueId]); if ( $component && // auto_renew exists and is empty in some workflows, which php treat as a 0 @@ -740,7 +743,7 @@ WHERE id = %1"; $lineItem = self::setLineItem($field, $lineItem, $optionValueId); $totalTax += $field['options'][$optionValueId]['tax_amount']; } - $totalPrice += $lineItem[$optionValueId]['line_total']; + $totalPrice += $lineItem[$optionValueId]['line_total'] + CRM_Utils_Array::value('tax_amount', $lineItem[$optionValueId]); if ( $component && isset($lineItem[$optionValueId]['auto_renew']) && @@ -773,7 +776,7 @@ WHERE id = %1"; $lineItem = self::setLineItem($field, $lineItem, $optionId); $totalTax += $field['options'][$optionId]['tax_amount']; } - $totalPrice += $lineItem[$optionId]['line_total']; + $totalPrice += $lineItem[$optionId]['line_total'] + CRM_Utils_Array::value('tax_amount', $lineItem[$optionId]); if ( $component && isset($lineItem[$optionId]['auto_renew']) && @@ -1298,7 +1301,6 @@ WHERE ps.id = %1 $taxAmount = $field['options'][$optionValueId]['tax_amount']; } $taxRate = $field['options'][$optionValueId]['tax_rate']; - $lineItem[$optionValueId]['line_total'] = $lineItem[$optionValueId]['line_total'] + $taxAmount; $lineItem[$optionValueId]['tax_amount'] = $taxAmount; $lineItem[$optionValueId]['tax_rate'] = $taxRate; -- 2.25.1