2013-07-11 136 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讓我的日子總是更有趣!