题
Magento CE 1.7。说,我有一个产品,$ 1799.99(包括8.25%的税)和优惠券折扣10%( - $ 180.00折扣金额)。 “申请客户税”选项设置为折扣后,我正在使用“单位价格”税计算方法。在调试时,我登陆了该法规,该法规计算出税收总计:
case Mage_Tax_Model_Calculation::CALC_TAX_AFTER_DISCOUNT_ON_INCL:
$discountAmount = $item->getDiscountAmount() / $qty;
$baseDiscountAmount = $item->getBaseDiscountAmount() / $qty;
$unitTax = $this->_calculator->calcTaxAmount($price, $rate, $inclTax);
$discountRate = ($unitTax/$price) * 100;
$unitTaxDiscount = $this->_calculator->calcTaxAmount($discountAmount, $discountRate, $inclTax, false);
$unitTax = max($unitTax - $unitTaxDiscount, 0);
$baseUnitTax = $this->_calculator->calcTaxAmount($basePrice, $rate, $inclTax);
$baseDiscountRate = ($baseUnitTax/$basePrice) * 100;
$baseUnitTaxDiscount = $this->_calculator
->calcTaxAmount($baseDiscountAmount, $baseDiscountRate, $inclTax, false);
$baseUnitTax = max($baseUnitTax - $baseUnitTaxDiscount, 0);
App/Code/Core/Mage/税/型号/销售/总计/Quote/税收,PHP, 第379行
请注意如何获得$折叠式:而不是使用适用的税率来计算其计算其自身价值的单位税,该价值可以用$ rates表示为$ castountrate = $ rate = $ rates /(1 + $ rate),或给予给定$ rate = 8.25%(0.0825):0.0825 / 1.0825 = 0.0762。然后,以此费率计算的折扣税为$ 12.75,导致税收总额为137.18美元 - $ 12.75 = $ 124.43。
有趣的是,在以下几行的同一例程中,使用$ rate值(在我的示例中为0.0825)计算隐藏税(即折扣金额):
if ($inclTax && $discountAmount > 0) {
$hiddenTax = $this->_calculator->calcTaxAmount($discountAmount, $rate, $inclTax, false);
$baseHiddenTax = $this->_calculator->calcTaxAmount($baseDiscountAmount, $rate, $inclTax, false);
$this->_hiddenTaxes[] = array(
'rate_key' => $rateKey,
'qty' => $qty,
'item' => $item,
'value' => $hiddenTax,
'base_value' => $baseHiddenTax,
'incl_tax' => $inclTax,
);
App/Code/Core/Mage/税/型号/销售/总计/Quote/税收,PHP, 第393行
此“隐藏税”总计(在我的示例中:$ 180- $ 180 /(100 + 8.25%) / 100 = $ 13.72)稍后用于计算总数,如净下班税,税和隐藏税,减税,减折扣: $ 1662.81 + $ 124.43 + $ 13.72- $ 180.00 = $ 1,620.96。这里的问题是,在计算税收总计的同时,系统以相同的折扣金额使用了两个不同的费率!是错误还是功能?
解决方案
显然,该问题已在CE 1.8.0.0版本中解决 - 怪异的$折叠变量已经消失,单位税和隐藏税都使用相同的费率。