0

我为产品创建了一个自定义是/否属性,该属性将确定是否显示包含和不包含增值税或仅包含(我的默认值)的产品价格。Magento 可以做到这一点,但不适用于特定产品。我不得不修改 price.phtml 文件以通过更改来显示两个价格:

<?php if ($_taxHelper->displayBothPrices()): ?>

至:

<?php if ($_taxHelper->displayBothPrices() || $_product->getData('show_both_prices')): ?>

这将显示格式化为显示两种格式的价格。IE

不包括。税费:856.80 英镑

包括。税费:856.80 英镑

但是,您可以看到价格计算实际上并未完成,因为两者都显示了包含增值税的价格。

我已将其追溯到税务助手中的一段代码(app/code/Mage/Tax/Helper/Data.php)

if ($percent != 0) {
    $price = $this->getCalculator()->round($price); // price = 714
    // price changes from the excl VAT to including VAT on line below.
    $price = $this->_calculatePrice($price, $percent, true); // now 856.8
}

这是似乎正在改变价格的功能。尝试传递 FALSE 而不是 true,但它似乎随后以某种方式被视为特价产品:S

protected function _calculatePrice($price, $percent, $type)
{
    if ($type) {
        return $price * (1+($percent/100));
    } else {
        return $price/(1+$percent/100);
    }
}

我需要以某种方式模仿“显示两个价格”代码的工作原理,到目前为止我尝试过的任何东西都没有奏效。非常感谢任何帮助!

4

1 回答 1

4

我会避免在价格代码渲染块中走得太远,因为要弄清楚那里发生了什么很复杂。

您可以使用 system->config->tax->price 显示设置将前端设置为显示价格 - 两者。

现在您可以查看您的价格是否正确通过。如果没有,请检查您的税/增值税设置和税率。

解决这个问题后,您可以考虑尝试一种不同的方法来选择性地显示/隐藏 inc/ex 选项。如果您有选择地向类别列表和产品页面添加一个类,这可以在 CSS 中完成。在列表/视图页面中,在 li 标记类所在的位置放置如下内容:

if($_item->getWhatever()==1) echo 'whatever'

然后在css中:

.whatever .price- exclude-tax {display:none;}

这个类取决于你的属性。当然你只是隐瞒了前增值税价格,但我怀疑有人会注意。

于 2012-08-29T11:01:32.873 回答