I Need to restrict the tax amount. so i went Mage/Tax/Model/Calculation.php
Then Finds calcTaxAmount()
Tax Applying Function. I need to restrict tax who all are enter the tax vatid in checkout onepage tax should be zero
so
public function calcTaxAmount($price, $taxRate, $priceIncludeTax = false, $round = true)
{
$billing = Mage::getModel('checkout/session')->getQuote()->getCustomerTaxvat();
if($billing != "" )
{
return 0;
}
$taxRate = $taxRate / 100;
if ($priceIncludeTax) {
$amount = $price * (1 - 1 / (1 + $taxRate));
} else {
$amount = $price * $taxRate;
}
if ($round) {
return $this->round($amount);
}
return $amount;
}
I added the new condition. its working some stores of multistores. Only one store cannot working properly. it causes user cannot register , and addtocart not working for that particular store. i found getQuote the issue. i remove the new condtion like below working fine.
Old Function:-
public function calcTaxAmount($price, $taxRate, $priceIncludeTax = false, $round = true)
{
$taxRate = $taxRate / 100;
if ($priceIncludeTax) {
$amount = $price * (1 - 1 / (1 + $taxRate));
} else {
$amount = $price * $taxRate;
}
if ($round) {
return $this->round($amount);
}
return $amount;
}
I was Fixed Below Flow:-
Instead of Using GetQuote In Calculation.php Using Session Variable
Mage/Checkout/Model/Type/Onepage.php
Function Name:- public function saveBilling($data, $customerAddressId)
$assign = $this->getQuote()->getCustomerTaxvat();
if ($assign !="")
{
$this->_checkoutSession->setVatSession($assign);
}
else
{
$this->_checkoutSession->unsVatSession();
}
Add Above code in the onepage.php before return array();
which means last of the function.
Now Below Get Accessing the Session Variable
Mage/Tax/Model/Calculation.php
public function calcTaxAmount($price, $taxRate, $priceIncludeTax = false, $round = true)
{
$sessionaccess = Mage::getModel('checkout/session')->getVatSession();
if($sessionaccess != "")
{
return 0;
}
$taxRate = $taxRate / 100;
if ($priceIncludeTax) {
$amount = $price * (1 - 1 / (1 + $taxRate));
} else {
$amount = $price * $taxRate;
}
if ($round) {
return $this->round($amount);
}
return $amount;
}