X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FPrice%2FBAO%2FLineItem.php;h=9dad065dfc2dd2bd424ae4f8af0071218e581889;hb=03b412ae5b8d7047f8e378038a32fe731b6e7fb0;hp=5fa1d3088df6e4171d0a30fbfa6e9fd9b22c298f;hpb=80edcd50a225fe3e9a91bc56e8b7df44eb8466d7;p=civicrm-core.git diff --git a/CRM/Price/BAO/LineItem.php b/CRM/Price/BAO/LineItem.php index 5fa1d3088d..9dad065dfc 100644 --- a/CRM/Price/BAO/LineItem.php +++ b/CRM/Price/BAO/LineItem.php @@ -1,9 +1,9 @@ fetch()) { if (!$dao->id) { continue; @@ -177,7 +184,19 @@ 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; + } + } + 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; } @@ -257,6 +276,7 @@ AND li.entity_id = {$entityId})"; * @param int $entityId * @param int $entityTable * + * @return bool * @access public * @static */ @@ -276,12 +296,16 @@ AND li.entity_id = {$entityId})"; /** * Function to process price set and line items. - * @param int $contributionId contribution id + * + * @param $entityId * @param array $lineItem line item array * @param object $contributionDetails - * @param decimal $initAmount amount * @param string $entityTable entity table * + * @param bool $update + * + * @internal param int $contributionId contribution id + * @internal param \decimal $initAmount amount * @access public * @return void * @static @@ -309,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); + } } } } @@ -410,4 +437,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; + } }