VAT-414 Changes related to VAT/TAX breakdown
[civicrm-core.git] / CRM / Price / BAO / LineItem.php
index 20ff8f740ec0f5c83071b685928963100326df58..43cb11fa4d0223d1876c885a1fe8c7069893e084 100644 (file)
@@ -130,6 +130,7 @@ AND li.entity_id = {$entityId}
       li.participant_count,
       li.price_field_value_id,
       li.financial_type_id,
+      li.tax_amount,
       pfv.description";
 
     $fromClause = "
@@ -161,6 +162,7 @@ AND li.entity_id = {$entityId}
     );
 
     $dao = CRM_Core_DAO::executeQuery("$selectClause $fromClause $whereClause", $params);
+    $getTaxDetails = FALSE;
     while ($dao->fetch()) {
       if (!$dao->id) {
         continue;
@@ -180,8 +182,16 @@ AND li.entity_id = {$entityId}
         'financial_type_id' => $dao->financial_type_id,
         'membership_type_id' => $dao->membership_type_id,
         'membership_num_terms' => $dao->membership_num_terms,
+        'tax_amount' => $dao->tax_amount,
       );
+      $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;
+      }
     }
+    $smarty = CRM_Core_Smarty::singleton();
+    $smarty->assign('getTaxDetails', $getTaxDetails);
     return $lineItems;
   }
 
@@ -317,6 +327,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)) {
+            CRM_Financial_BAO_FinancialItem::add($lineItems, $contributionDetails, TRUE);
+          }
         }
       }
     }
@@ -418,4 +431,24 @@ AND li.entity_id = {$entityId}
       }
     }
   }
+
+  /**
+   * 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') {
+      $tax = (($lineItemId['line_total'] - ($lineItemId['unit_price'] * $lineItemId['qty'])))/($lineItemId['unit_price'] * $lineItemId['qty'])*100;
+    }
+    else {
+      $tax = (($lineItemId['line_total'] - $lineItemId['unit_price'])/$lineItemId['unit_price']) * 100;
+    }
+    return $tax;
+  }
 }