2013-07-11 2 views
1

Я, наконец, получил НДС (налог), работающий на моем сайте, с ценами, внесенными в каталог INCLUSIVE налога. Затем было принято решение ввести значение ЭКСКЛЮЗИВ налога. Небольшой SQL позволил мне изменить все сохраненные цены, однако, когда страницы каталога отображаются, отображаются неправильные значения ... налог применяется дважды!Magento Применять налог (НДС) дважды

Ставка налога составляет 20%, а если у продукта есть налоговая эксклюзивная цена в размере 10 фунтов стерлингов, то он отображается как эксклюзивный налог, 12,00 фунтов стерлингов и налог включительно £ 14,40.

Если я нажимаю на продукт, тогда на странице продукта отображаются правильные значения 10 и 12 фунтов.

Шаблон, показывающий цены каталога, является каталогом/product/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 et с ценовой валовой стоимостью (включая налоги).

Вы можете проверить порядок выполнения сборной методы для каждого в общей сложности приложения/код/​​ядре/Mage/Sales/модель/Quote/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 для изготовления моего дня всегда интереснее!

Смежные вопросы