fixed jenkins style
authorPradeep Nayak <pradpnayak@gmail.com>
Tue, 12 Sep 2017 08:43:41 +0000 (14:13 +0530)
committerdeb.monish <monish.deb@jmaconsulting.biz>
Wed, 13 Sep 2017 09:17:46 +0000 (14:47 +0530)
CRM/Contribute/BAO/Contribution.php

index d05ea37a6c6437477f19a46bdb488704e4c9bcb6..c7a559825816a0b4dee81f2dc97e168084222c84 100644 (file)
@@ -3642,7 +3642,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
             $receiveDate = CRM_Utils_Date::isoToMysql($params['contribution']->receive_date);
           }
 
-          $financialAccount = self::getFinancialAccountForStatusChangeTrxn($params, $prevFinancialItem['financial_account_id']);
+          $financialAccount = self::getFinancialAccountForStatusChangeTrxn($params, CRM_Utils_Array::value('financial_account_id', $prevFinancialItem));
 
           $currency = $params['prevContribution']->currency;
           if ($params['contribution']->currency) {
@@ -3654,7 +3654,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
             'contact_id' => $params['prevContribution']->contact_id,
             'currency' => $currency,
             'amount' => self::getFinancialItemAmountFromParams($inputParams, $context, $lineItemDetails, $isARefund, $previousLineItemTotal),
-            'description' => $prevFinancialItem['description'],
+            'description' => CRM_Utils_Array::value('description', $prevFinancialItem),
             'status_id' => $prevFinancialItem['status_id'],
             'financial_account_id' => $financialAccount,
             'entity_table' => 'civicrm_line_item',
@@ -3664,11 +3664,15 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
           $params['line_item'][$fieldId][$fieldValueId]['deferred_line_total'] = $itemParams['amount'];
           $params['line_item'][$fieldId][$fieldValueId]['financial_item_id'] = $financialItem->id;
 
-          if ($lineItemDetails['tax_amount'] && $lineItemDetails['tax_amount'] !== 'null') {
+          if (($lineItemDetails['tax_amount'] && $lineItemDetails['tax_amount'] !== 'null') || ($context == 'changeFinancialType')) {
             $invoiceSettings = Civi::settings()->get('contribution_invoice_settings');
             $taxTerm = CRM_Utils_Array::value('tax_term', $invoiceSettings);
             $taxAmount = $lineItemDetails['tax_amount'];
-            if ($previousLineItemTotal != $lineItemDetails['line_total']) {
+            if ($context == 'changeFinancialType' && $lineItemDetails['tax_amount'] === 'null') {
+              // reverse the Sale Tax amount if there is no tax rate associated with new Financial Type
+              $taxAmount = CRM_Utils_Array::value('tax_amount', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0);
+            }
+            elseif ($previousLineItemTotal != $lineItemDetails['line_total']) {
               $taxAmount -= CRM_Utils_Array::value('tax_amount', CRM_Utils_Array::value($fieldValueId, $previousLineItems), 0);
             }
             $itemParams['amount'] = self::getMultiplier($params['contribution']->contribution_status_id, $context) * $taxAmount;
@@ -5366,7 +5370,7 @@ LEFT JOIN  civicrm_contribution on (civicrm_contribution.contact_id = civicrm_co
       }
       return $lineTotal;
     }
-    else if ($context == 'changeFinancialType') {
+    elseif ($context == 'changeFinancialType') {
       return -$lineItemDetails['line_total'];
     }
     elseif ($context == 'changedStatus') {