我有一个magento 1.7.0.2安装。我用优惠券创建了购物价格购物车规则。一切都很好,除了显示在magento(购物车,结账,...)的折扣金额是一个极值。我发现极值是2 ^ 64(18 446 744 073 709 550 520)。规则的配置无关紧要,显示的折扣总是2 ^ 64。
小计很好,运费很好,这些的总和是11669.在小计(10961)上应用折扣(10%)后,结果是9864. 9864 + 708 = 10573是可接受的结果。所以除了显示的折扣外,一切都很完美。
我不知道哪里出错了。我找不到相关文件。请帮忙。
非常感谢, 的István
答案 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())) ?>
我们走了,问题解决了。
我希望有所帮助。