/**
  * Method provides itemwise tax details.
  *
  * @param   object  $vars  Data needed for tax plugins.
  *
  * @since   1.0
  * @return   null
  */
 function tj_calculateTax($vars)
 {
     $itemTaxDetails = array();
     $cartitems = $vars->cartdetails;
     $dis_totalamt = $vars->totalAmount;
     $address = $vars->addressDetails;
     // Load helper files
     $this->_TjloadTaxHelperFiles();
     $itemTaxDetails = array();
     $taxHelper = new taxHelper();
     foreach ($cartitems as $citem) {
         if ($citem['item_id']) {
             $item_id = $citem['item_id'];
             // Get Current item tax details
             $itemTaxDetails[$item_id] = $taxHelper->getItemTax($citem['product_final_price'], $citem['item_id'], $address);
         }
     }
     return $itemTaxDetails;
     /* ItemTaxDetails will be like below
     		 * [41] => Array // 41 is item_id
     		(
     			[taxdetails] => Array
     				(
     				* // add tax detail here
     				)
     
     			[taxAmount] => 1.2
     		)*/
 }
 /**
  * This method provide aplicable shipping charge detail using for provided shipping method.
  *
  * @param   object  $vars  gives billing, shipping, item_id, methodId(unique plug shipping method id) etc.
  *
  * @since   2.2
  * @return  Shipping charges.
  */
 function getShipMethodChargeDetail($vars)
 {
     $shipMethDetail = $this->getShipMethodDetail($vars->shipMethId);
     // 1.Check method is applicable or not (Min & max amount) etc.
     $shipMethRateDetail = $this->getApplicableShipMethRateDetail($vars, $shipMethDetail);
     $ShippingCharges = 0;
     if ($shipMethRateDetail !== false) {
         $ShippingCharges = $shipMethRateDetail['shipCost'] + $shipMethRateDetail['handleCost'];
     }
     $comp_params = JComponentHelper::getParams('com_quick2cart');
     $isTaxationEnabled = $comp_params->get('enableTaxtion', 0);
     // 2. check shipping tax charges
     if (!empty($shipMethDetail['taxprofileId']) && $isTaxationEnabled) {
         $address = new stdClass();
         $address->billing_address = $vars->billing_address;
         $address->shipping_address = $vars->shipping_address;
         $address->ship_chk = $vars->ship_chk;
         //$itemTaxDetails[$item_id] = $taxHelper->getItemTax($citem['product_final_price'], $citem['item_id'], $address);
         // LOAD tax helper
         $path = JPATH_SITE . DS . 'components' . DS . 'com_quick2cart' . DS . 'helpers' . DS . 'taxHelper.php';
         if (!class_exists('productHelper')) {
             //require_once $path;
             JLoader::register('taxHelper', $path);
             JLoader::load('taxHelper');
         }
         $taxHelper = new taxHelper();
         $taxDetail = $taxHelper->getItemTax($ShippingCharges, $vars->cartItemDetail['item_id'], $address, $shipMethDetail['taxprofileId']);
     }
     if ($shipMethRateDetail !== false) {
         $shipTaxDetail = isset($taxDetail) ? $taxDetail['taxdetails'] : array();
         $taxOnShipCharge = isset($taxDetail) ? $taxDetail['taxAmount'] : 0;
         $retData['methodId'] = $shipMethDetail['methodId'];
         $retData['name'] = $shipMethDetail['name'];
         $retData['totalShipCost'] = $ShippingCharges + $taxOnShipCharge;
         // This is the unique id of method's price entry id. Which will be used further to revalidate price
         $retData['plugMethRateId'] = $shipMethRateDetail['id'];
         //$shipMethDetail['rateDetail'] = $shipMethRateDetail;
         return $retData;
     }
 }