Magento优惠券显示极端折扣

时间:2012-10-17 14:46:01

标签: magento magento-1.7

我有一个magento 1.7.0.2安装。我用优惠券创建了购物价格购物车规则。一切都很好,除了显示在magento(购物车,结账,...)的折扣金额是一个极值。我发现极值是2 ^ 64(18 446 744 073 709 550 520)。规则的配置无关紧要,显示的折扣总是2 ^ 64。

cart total example

小计很好,运费很好,这些的总和是11669.在小计(10961)上应用折扣(10%)后,结果是9864. 9864 + 708 = 10573是可接受的结果。所以除了显示的折扣外,一切都很完美。

我不知道哪里出错了。我找不到相关文件。请帮忙。

非常感谢, 的István

1 个答案:

答案 0 :(得分:2)

毕竟我找到了解决方案。这个错误的原因很简单。 magento存储的折扣金额已签名,这意味着它有一个负号。文件app / design / frontend / [yourfrontend] / [yourtheme] /template/checkout/total/default.phtml(这是金额写在屏幕上的位置)包含以下代码:

<tr>
    <th colspan="<?php echo $this->getColspan(); ?>" style="<?php echo $this->getTotal()->getStyle() ?>" class="a-right">
    <?php if ($this->getRenderingArea() == $this->getTotal()->getArea()): ?><strong><?php endif; ?>
        <?php echo $this->escapeHtml($this->getTotal()->getTitle()); ?>
    <?php if ($this->getRenderingArea() == $this->getTotal()->getArea()): ?></strong><?php endif; ?>
</th>
<td style="<?php echo $this->getTotal()->getStyle() ?>" class="a-right">
    <?php if ($this->getRenderingArea() == $this->getTotal()->getArea()): ?><strong><?php endif; ?>
        <?php echo $this->helper('checkout')->formatPrice($this->getTotal()->getValue()) ?>
    <?php if ($this->getRenderingArea() == $this->getTotal()->getArea()): ?></strong><?php endif; ?>
</td>

问题是formatPrice()函数和负参数。一个简单的解决方案是abs() php函数。改变行

<?php echo $this->helper('checkout')->formatPrice($this->getTotal()->getValue()) ?>

<?php echo $this->helper('checkout')->formatPrice(abs($this->getTotal()->getValue())) ?>

我们走了,问题解决了。

我希望有所帮助。