ユーザー セッションで設定した変数を確認し、それに基づいてユーザーのカート税を免除したいと考えています。これどうやってするの?
顧客タイプをいじるのは複雑すぎると思います。適用される税金を変更する別の方法はありますか? またはその場で顧客グループを変更します。
ユーザー セッションで設定した変数を確認し、それに基づいてユーザーのカート税を免除したいと考えています。これどうやってするの?
顧客タイプをいじるのは複雑すぎると思います。適用される税金を変更する別の方法はありますか? またはその場で顧客グループを変更します。
私はこれと非常によく似たことをしました。 app/code/core/Mage/Tax/Model/Calculation.php を app/code/local/Mage/Tax/Model/Calculation.php としてオーバーライドし、表示されているステートメントを追加しましたコメントの下で、セッション値に基づいて税率を 0 に設定します。これはチェックアウト時にその場で計算されます。
public function getRate($request)
{
if (!$request->getCountryId() || !$request->getCustomerClassId() || !$request->getProductClassId()) {
return 0;
}
$cacheKey = "{$request->getProductClassId()}|{$request->getCustomerClassId()}|{$request->getCountryId()}|{$request->getRegionId()}|{$request->getPostcode()}";
if (!isset($this->_rateCache[$cacheKey])) {
$this->unsRateValue();
$this->unsCalculationProcess();
$this->unsEventModuleId();
Mage::dispatchEvent('tax_rate_data_fetch', array('request'=>$this));
if (!$this->hasRateValue()) {
$this->setCalculationProcess($this->_getResource()->getCalculationProcess($request));
$this->setRateValue($this->_getResource()->getRate($request));
} else {
$this->setCalculationProcess($this->_formCalculationProcess());
}
$this->_rateCache[$cacheKey] = $this->getRateValue();
$this->_rateCalculationProcess[$cacheKey] = $this->getCalculationProcess();
}
//this is the bit you're looking for down here
if (Mage::getStoreConfig('tax/calculation/calc_rate_zero')) {
$_taxvat = Mage::getSingleton('checkout/session')->getQuote()->getCustomerTaxvat();
if ( $_taxvat != null && $_taxvat != ' ') {
$this->setRateValue( 0 );
$this->_rateCache[$cacheKey] = $this->getrateValue();
$this->_rateCalculationProcess[$cacheKey]= $this->getCalculationProcess();
}
}
return $this->_rateCache[$cacheKey];
}