From 8e10ee7c67c47200585db23ce012a6feae22f389 Mon Sep 17 00:00:00 2001 From: Pradeep Nayak Date: Fri, 30 Dec 2016 18:57:24 +0530 Subject: [PATCH] CRM-19585, Generalized code, added fix to add entries in civicrm_entity_financial_trxn table for tax ---------------------------------------- * CRM-19585: Sales tax issue https://issues.civicrm.org/jira/browse/CRM-19585 --- CRM/Contribute/BAO/Contribution.php | 47 ++++++++--------------------- 1 file changed, 12 insertions(+), 35 deletions(-) diff --git a/CRM/Contribute/BAO/Contribution.php b/CRM/Contribute/BAO/Contribution.php index 8c37a16643..66b1529e95 100644 --- a/CRM/Contribute/BAO/Contribution.php +++ b/CRM/Contribute/BAO/Contribution.php @@ -3615,19 +3615,12 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } } if ($context == 'changePaymentInstrument') { - foreach ($params['line_item'] as $lineitems) { - foreach ($lineitems as $fieldValueId => $fieldValues) { - $prevFinancialItem = CRM_Financial_BAO_FinancialItem::getPreviousFinancialItem($fieldValues['id']); - // save to entity_financial_trxn table - $entityFinancialTrxnParams = array( - 'entity_table' => "civicrm_financial_item", - 'entity_id' => $prevFinancialItem->id, - 'financial_trxn_id' => $trxn->id, - 'amount' => $trxn->total_amount, - ); - civicrm_api3('entityFinancialTrxn', 'create', $entityFinancialTrxnParams); - } - } + // store financial item Proportionaly. + $trxnParams = array( + 'total_amount' => $trxn->total_amount, + 'contribution_id' => $params['contribution']->id, + ); + self::assignProportionalLineItems($trxnParams, $trxn->id, $params['contribution']->total_amount); } CRM_Core_BAO_FinancialTrxn::createDeferredTrxn(CRM_Utils_Array::value('line_item', $params), $params['contribution'], TRUE, $context); } @@ -4942,29 +4935,13 @@ LIMIT 1;"; $lineItems = CRM_Price_BAO_LineItem::getLineItemsByContributionID($trxnParams['contribution_id']); if (!empty($lineItems)) { // get financial item - $sql = "SELECT fi.id, li.price_field_value_id - FROM civicrm_financial_item fi - INNER JOIN civicrm_line_item li ON li.id = fi.entity_id and fi.entity_table = 'civicrm_line_item' - WHERE li.contribution_id = %1"; - $dao = CRM_Core_DAO::executeQuery($sql, array(1 => array($trxnParams['contribution_id'], 'Integer'))); - while ($dao->fetch()) { - $ftIds[$dao->price_field_value_id] = $dao->id; - } - $eftParams = array( - 'entity_table' => 'civicrm_financial_item', - 'financial_trxn_id' => $trxnId, + list($ftIds, $taxItems) = self::getLastFinancialItemIds($trxnParams['contribution_id']); + $entityParams = array( + 'contribution_total_amount' => $contributionTotalAmount, + 'trxn_total_amount' => $trxnParams['total_amount'], + 'trxn_id' => $trxnId, ); - foreach ($lineItems as $key => $value) { - if ($value['qty'] == 0) { - continue; - } - $paid = $value['line_total'] * ($trxnParams['total_amount'] / $contributionTotalAmount); - // Record Entity Financial Trxn - $eftParams['amount'] = round($paid, 2); - $eftParams['entity_id'] = $ftIds[$value['price_field_value_id']]; - - civicrm_api3('EntityFinancialTrxn', 'create', $eftParams); - } + self::createProportionalFinancialEntries($entityParams, $lineItems, $ftIds, $taxItems); } } -- 2.25.1