Magento - 显示含税产品的奖励积分

时间:2013-01-24 22:08:28

标签: magento discounts

我们运营基于Magento的电子商务网站。它正在运行Magento Enterprise 1.10。

我们在英国 - 所以我们希望显示包含税(VAT)的所有价格。我们的商店设置了包含增值税的价格,Magento在结账时反算增值税。

该网站使用内置的企业奖励积分功能,并为客户每消费1英镑提供10点积分。

显示奖励积分(目前在目录和购物篮中使用“echo $ this-> getRewardPoints()”功能)显示包含税的奖励积分(因此£15 = 150积分),但在结账时,使用显示项目潜在点数的相同功能计算项目上的奖励积分减去税收(因此15英镑= 120点)。

下订单时,奖励积分将添加到客户帐户减去税金。这显然让用户感到困惑。

作为一项临时措施,我已停止在

上显示错误的积分金额

我们期待:

a)让Magento始终显示包含增值税的积分 - 并在下订单时添加正确的积分数(并保留积分 - 磅比) b)让Magento始终显示并添加不包括增值税的积分 - 因此我们会将点数 - 磅比率提高以补偿。

非常感谢任何帮助或指示。

2 个答案:

答案 0 :(得分:2)

我有一个客户也需要这个,所以我写了一个自定义模块,它覆盖了仅在税前计算奖励的功能,以便它也可以计算价格+税。我刚刚在奖励配置区域添加了一个新选项,以允许计算包括是或否税。

不想完成描述如何创建自定义模块的过程(有足够的资源),但执行计算的实际函数在此文件中:     代码/核心/企业/回报/模型/动作/ OrderExtra.php

如果你想快速而又脏,请找到getPoints函数并将$ monetaryAmount计算更改为(如果有$ quote):

$monetaryAmount = $quote->getBaseGrandTotal() - $address->getBaseShippingAmount();

和(如果没有$ quote)

$monetaryAmount = $this->getEntity()->getBaseTotalPaid() - $this->getEntity()->getBaseShippingAmount();

希望有所帮助!

编辑:getPoints函数的实际代码应如下所示:

if ($this->_quote) {
        $quote = $this->_quote;
        // known issue: no support for multishipping quote
        $address = $quote->getIsVirtual() ? $quote->getBillingAddress() : $quote->getShippingAddress();
        // use only money customer spend - shipping & tax
        $monetaryAmount = $quote->getBaseGrandTotal() - $address->getBaseShippingAmount();

        // *****CALCULATE POINTS INCLUDING TAX
        $monetaryAmount -= $address->getBaseTaxAmount();

        // set points to 0 if calcualtion is negative
        $monetaryAmount = $monetaryAmount < 0 ? 0 : $monetaryAmount;
    } else {
      // use only money customer spend - shipping
        $monetaryAmount = $this->getEntity()->getBaseTotalPaid() - $this->getEntity()->getBaseShippingAmount();

        // *****CALCULATE POINTS INCLUDING TAX
        $monetaryAmount -= $this->getEntity()->getBaseTaxAmount();
    }

答案 1 :(得分:1)

遇到同样的问题,然而发现更简单地删除运费税。

$monetaryAmount = $quote->getBaseGrandTotal()
- $address->getBaseShippingAmount()
- $address->getBaseShippingTaxAmount();

并更改为else函数。完美运作

$monetaryAmount = $this->getEntity()->getBaseTotalPaid()
- $this->getEntity()->getBaseShippingAmount()
- $this->getEntity()->getBaseShippingTaxAmount();