2013-07-11 140 views
1

我终于得到了在我的网站上工作的增值税(税),价格被纳入税目目录。然后决定输入价值EXCLUSIVE税。有一点SQL允许我更改所有的存储价格,但是,当显示目录页面时,显示错误的值......正在应用两次税!Magento两次申报税(增值税)

税率为20%,如果某个产品的£10含税价格,它显示为不含税,£12.00和含税£14.40。

如果我点击该产品,那么该产品页面显示的£10和£12的正确值。

显示价格目录的模板是目录/产品/ price.phtml,并在那里我看到它,我不理解(代码,即我认为这是正确的,因为这是一个很好用的产品,但它没有任何意义给我!)

我看到(在模板/目录/产品/ price.phtml),首先,变量被设置...

$_price = $_taxHelper->getPrice($_product, $_product->getPrice()) 
$_finalPrice = $_taxHelper->getPrice($_product, $_product->getFinalPrice()) 
$_finalPriceInclTax = $_taxHelper->getPrice($_product, $_product->getFinalPrice(), true) 

和调试报表显示,这些被返回£10.00和预期的12.00英镑 - 然后14.40英镑(不如预期!)。

而且对,其中值是输出,我看到了

<span class="price-excluding-tax <?=$groupclass?>"> 
     <span class="label"><?php echo $this->helper('tax')->__('Excl. Tax:') ?></span> 
     <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> 
       <?php if ($_finalPrice == $_price): ?> 
        <?php echo $_coreHelper->currency($_price, true, false) ?> 
       <?php else: ?> 
        <?php echo $_coreHelper->currency($_finalPrice, true, false) ?> 
       <?php endif; ?> 
     </span> 
    </span> 

所以,在我看来,最终的价格实际上应该是独家的价格,但实际上是包括税收,然后把它加入再次!

这似乎是机制,但我认为我有一个错误的设定某处或其他人之前,现在已经大喊大叫长!

在我已经得到了配置其设置话说价格目录排除来源和默认的目标既是英国的税收和国家。

那么我错过了什么? 这是Magento的1.7.0.2

+0

这样看来,这一切都下到代码 '$ _product-> getFinalPrice()' 这是应该被应用的折扣(其中有没有),但实际上似乎是增加税收!有任何想法吗? – Ken

回答

0

在政府去settings > sales > tax > calculation -

这里设置“税收基础上”到最后一个项目(包产地,或类似的东西)。 条款是不完美的,

也可以更改相应设置,你在你的车想。

如果你的代码是完美的,那么你只是缺少一些关于它的配置。

你也可以把所有的内部标签扔税计算。

我希望这将肯定帮助您

+0

嗯,我已经尝试了“设置>销售>税收>计算设置>税额计算方法基于”的所有值,并尝试了“设置>销售>税收>计算设置>税额计算基于”的所有值,相同的结果;税收总是添加到“无税”价值中,因此是“有税”价值的两倍! 合计 目前它们设置为“总计”和“送货地址”。 – Ken

0

我还花了几天在这个问题上,我意识到,有时总计以错误的顺序收集。

特别是在我的情况我是使用目录价格意在包括税收和我想通了Mage_Sales_Model_Quote_Address_Total_Subtotal ::收集()跑前Mage_Tax_Model_Sales_Total_Quote_Subtotal ::收集(),可以理解的是在看同一个问题表sales_flat_quote_item,当BASE_PRICE场设置正确的价格值不含税和价格场为s等价格总价值(含税)。

您可以检查收集方法的执行顺序在应用程序/代码/核心每个总/法师/销售/型号/报价/ Address.php周围线#1004

/** 
* Collect address totals 
* 
* @return Mage_Sales_Model_Quote_Address 
*/ 
public function collectTotals() 
{ 
    Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_before', array($this->_eventObject => $this)); 
    foreach ($this->getTotalCollector()->getCollectors() as $model) { 
     // this is the loop where totals are collected 
     $model->collect($this); 
    } 
    Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_after', array($this->_eventObject => $this)); 
    return $this; 
} 

解决这种发给你有一个自定义模块总计依赖config.xml中定义界定<after><before>必要

<config> 

    ... 

    <global> 
     <sales> 
      <quote> 
       <totals> 
        <tax_subtotal> 
         <class>tax/sales_total_quote_subtotal</class> 
         <after>subtotal,nominal,shipping,freeshipping</after> 
         <before>tax,discount</before> 
        </tax_subtotal> 
       </totals> 
      </quote> 
     </sales> 
    </global> 

    ... 

</config> 

再次感谢您的Magento让我的日子总是更有趣!