VAT-572 Display Invoicing functionality based on admin globle setting under CiviContr...
[civicrm-core.git] / CRM / Price / BAO / LineItem.php
index 88e8fd97881e6b6d00920877c7874cce3a187cfc..9dad065dfc2dd2bd424ae4f8af0071218e581889 100644 (file)
@@ -162,6 +162,9 @@ AND li.entity_id = {$entityId}
     );
 
     $dao = CRM_Core_DAO::executeQuery("$selectClause $fromClause $whereClause", $params);
+    $getTaxDetails = FALSE;
+    $invoiceSettings = CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::CONTRIBUTE_PREFERENCES_NAME,'contribution_invoice_settings');
+    $invoicing = CRM_Utils_Array::value('invoicing', $invoiceSettings);
     while ($dao->fetch()) {
       if (!$dao->id) {
         continue;
@@ -185,6 +188,15 @@ AND li.entity_id = {$entityId}
       );
       $lineItems[$dao->id]['tax_rate'] = CRM_Price_BAO_LineItem::calculateTaxRate($lineItems[$dao->id]);
       $lineItems[$dao->id]['subTotal'] = $lineItems[$dao->id]['qty'] * $lineItems[$dao->id]['unit_price'];
+      if ($lineItems[$dao->id]['tax_amount'] != '') {
+        $getTaxDetails = TRUE;
+      }
+    }
+    if ($invoicing) {
+      $taxTerm = CRM_Utils_Array::value('tax_term', $invoiceSettings);
+      $smarty = CRM_Core_Smarty::singleton();
+      $smarty->assign('taxTerm', $taxTerm);
+      $smarty->assign('getTaxDetails', $getTaxDetails);
     }
     return $lineItems;
   }
@@ -321,6 +333,9 @@ 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'])) {
+            CRM_Financial_BAO_FinancialItem::add($lineItems, $contributionDetails, TRUE);
+          }
         }
       }
     }
@@ -424,7 +439,14 @@ AND li.entity_id = {$entityId}
   }
 
   /**
-   * Function to calculate tax rate in percentage
+   * Calculate tax rate in percentage
+   *
+   * @param $lineItemId an assoc array of lineItem
+   *
+   * @return tax rate
+   *
+   * @access public
+   * @static
    */
   public static function calculateTaxRate($lineItemId) {
     if ($lineItemId['html_type'] == 'Text') {